ALV程序和事例.docx
- 文档编号:26404721
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:10
- 大小:17.58KB
ALV程序和事例.docx
《ALV程序和事例.docx》由会员分享,可在线阅读,更多相关《ALV程序和事例.docx(10页珍藏版)》请在冰豆网上搜索。
ALV程序和事例
abap_alv示例程序 2010-11-1708:
20:
57
分类:
IT综合技术
ALV应用示例,报表示例[@more@]*&---------------------------------------------------------------------*
*&ReportName:
WCBING
*&CreateDate:
2009-08
*&CreatedBy:
*&Description:
直通车备用金转可用于下单金额
*&
*&VERSION:
V1.0
*&---------------------------------------------------------------------*
*&records:
参考ZF27P001
*&
*&---------------------------------------------------------------------*
REPORT ZF27P002 MESSAGE-ID ZMSGFIR.
*图标显示定义
INCLUDE .
*---------------------------------数据定义区域-------------------*
*数据定义区域(全局变量,表,常量,数据类型等)
TYPE-POOLS:
SLIS.
TABLES:
KNA1,KNC3,T074T,TKUKT,BSIS,BSAS.
DATA:
G_DOCKING TYPE REF TO CL_GUI_DOCKING_CONTAINER,
G_SPLITER TYPE REF TO CL_GUI_SPLITTER_CONTAINER,
G_CONTAINER TYPE REF TO CL_GUI_CONTAINER.
DATA:
BEGIN OF IT_KNA1 OCCURS 0,
GSBER TYPE GSBER,
KUNNR LIKE KNA1-KUNNR,
KUKLA LIKE KNA1-KUKLA,
NAME1 LIKE KNA1-NAME1,
LTEXT LIKE T074T-LTEXT,
VTEXT TYPE BEZEI20,"直通车描述
END OF IT_KNA1.
DATA:
BEGIN OF IT_DATA OCCURS 0,
CHECKBOX TYPE C,
KUNNR LIKE KNA1-KUNNR,
KUKLA LIKE KNA1-KUKLA,
NAME1 LIKE KNA1-NAME1,
LTEXT LIKE T074T-LTEXT,
VTEXT TYPE BEZEI20,"直通车描述
HABNL LIKE KNC3-HABNL,
HABNLX LIKE KNC3-HABNL,
GSBER TYPE GSBER,
BELNR LIKE BSIS-BELNR,
COLORX(4) TYPE C,
END OF IT_DATA.
DATA:
IT_KNC3 LIKE TABLE OF KNC3 WITH HEADER LINE.
DATA:
IT_ITAB_ALV LIKE TABLE OF IT_DATA WITH HEADER LINE.
DATA:
BEGIN OF IT_KUNNR OCCURS 0,
KUNNR LIKE KNA1-KUNNR,
GSBER TYPE GSBER,
END OF IT_KUNNR.
*&--POSTACC
DATA:
DOCUMENTHEADER LIKE TABLE OF BAPIACHE09 WITH HEADER LINE,
AC TYPE BAPIACGL09,"WA
ACCOUNTGL TYPE TABLE OF BAPIACGL09,
CU TYPE BAPIACCR09,"WA
CURRENCYAMOUNT TYPE TABLE OF BAPIACCR09,
ACCOUNTRECEIVABLE TYPE TABLE OF BAPIACAR09,
ACC TYPE BAPIACAR09,
RE TYPE BAPIRET2,
RETURN TYPE TABLE OF BAPIRET2.
DATA:
BEGIN OF WA_OBJKEY,
OBJ_KEY TYPE BAPIACHE09-OBJ_KEY,
END OF WA_OBJKEY.
DATA:
IT_OBJKEY LIKE TABLE OF WA_OBJKEY,
OBJ_KEY TYPE BAPIACHE09-OBJ_KEY.
DATA:
WA_RETURN TYPE BAPIRET2.
*DATA:
BEGINOFIT_ERROROCCURS10000,
*ERROR(100)TYPEC,
*ENDOFIT_ERROR.
*DATA:
ERROR_TEXTTYPESTRING.
*架构
DATA:
GT_HEADER TYPE TABLE OF SLIS_LISTHEADER"头文件定义,固定.
WITH HEADER LINE,
GT_FIELDCAT_LVC TYPE LVC_T_FCAT
WITH HEADER LINE,
GR_FIELDCAT_LVC TYPE LVC_T_FCAT
WITH HEADER LINE,
GT_SORT_GRID TYPE LVC_T_SORT
WITH HEADER LINE,
GT_ROW_TABLE TYPE LVC_T_ROW
WITH HEADER LINE, "行选择数据
OK_CODE LIKE SY-UCOMM.
*固定格式
DATA:
GRID TYPE REF TO CL_GUI_ALV_GRID, "ALVOO
GS_LAYOUT_ALV TYPE LVC_S_LAYO, "ALV布局
GS_TOOLBAR TYPE STB_BUTTON, "工具栏按钮
G_CUSTOM_CONTAINER TYPE REF TO
CL_GUI_CUSTOM_CONTAINER. "ALV容器
*类声明
CLASS LCL_EVENT_RECEIVER DEFINITION DEFERRED.
DATA:
EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER.
*常量定义
CONSTANTS:
G_REPID LIKE SY-REPID VALUE SY-REPID, "当前系统
FCODE_BACK LIKE SY-UCOMM VALUE 'BACK', "返回
*FCODE_DISPLIKESY-UCOMMVALUE'DISP',"工具栏上的自定按钮
*FCODE_ENDLIKESY-UCOMMVALUE'END',"
FCODE_ENTER LIKE SY-UCOMM VALUE 'ENTER', "确定
FCODE_EXIT LIKE SY-UCOMM VALUE 'EXIT'. "退出
*FCODE_PLANELIKESY-UCOMMVALUE'FLIGHT'."工具栏上的自定按钮
*---------------------------------数据定义区域
*----------------------------------主程序区域--------------------*
INITIALIZATION.
PERFORM FRM_INI.
*1选择屏幕
SELECTION-SCREEN BEGIN OF BLOCK BOX1
WITH FRAME TITLE TEXT-001.
PARAMETERS:
P_BUKRS LIKE BSIS-BUKRS DEFAULT '1000',
P_GJAHR LIKE BSIS-GJAHR DEFAULT SY-DATUM+0(4).
SELECT-OPTIONS:
S_SHBKZ FOR T074T-SHBKZ DEFAULT 'L'NO INTERVALS,
S_KTOKD FOR KNA1-KTOKD DEFAULT 'D001' TO 'D002',
S_KUKLA FOR KNA1-KUKLA DEFAULT '01' TO '02',
S_KUNNR FOR KNA1-KUNNR,
S_WERKS FOR KNA1-WERKS.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 2(79)SCSHOW.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK BOX1.
START-OF-SELECTION.
PERFORM SET_QUANX. "权限
*数据处理
PERFORM FRM_DATA_RD.
END-OF-SELECTION.
*调用DYPLNR
CALL SCREEN 100.
*&---------------------------类实例化
CLASS LCL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
METHODS:
*-命令按钮
HANDLE_USER_COMMAND
FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID
IMPORTING E_UCOMM,
*-双击列表栏事件
HANDLE_DOUBLE_CLICK
FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW,
*-CHECKBOX
HANDLE_DATA_CHANGED
FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID
IMPORTING ER_DATA_CHANGED.
PRIVATE SECTION.
ENDCLASS. "LCL_EVENT_RECEIVERDEFINITION
*----------------------------------------------------------------------*
*CLASSLCL_EVENT_RECEIVERIMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
*-------------------------------------------------------------------
*事件方法
*---------------------------------------------------------------------------
METHOD HANDLE_USER_COMMAND.
*-事件开始:
CASE E_UCOMM.
WHEN 'CHECKBOX'.
BREAK:
WANGCHENGBIN.
ENDCASE.
ENDMETHOD. "handle_user_command
*-------------------------------------------------------------------
*双击列表栏事件方法
METHOD HANDLE_DOUBLE_CLICK.
ENDMETHOD. "handle_button_click
*-----------------------------------------------------------------
*单元格数据改变
METHOD HANDLE_DATA_CHANGED.
PERFORM HANDLE_DATA_CHANGED USING ER_DATA_CHANGED.
ENDMETHOD. "HANDLE_DATA_CHANGED
ENDCLASS. "l
*&---------------------------------------------------------------------*
*&ModuleSTATUS_0100OUTPUT
*&---------------------------------------------------------------------*
*状态栏
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'STATUS_0100'.
SET TITLEBAR 'TITLE_0100'.
ENDMODULE. "STATUS_0100OUTPUT
*&---------------------------------------------------------------------*
*&ModuleUSER_COMMAND_0100INPUT
*&---------------------------------------------------------------------*
*命令区域
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
DATA:
ACTION LIKE SY-UCOMM.
ACTION=OK_CODE.
CLEAR:
OK_CODE.
CASE ACTION.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'ACCPOST'.
PERFORM FRM_ACCPOST.
WHEN OTHERS.
ENDCASE.
ENDMODULE. "USER_COMMAND_0100INPUT
*&---------------------------------------------------------------------*
*&ModulePBO_INCLUDEOUTPUT
*&---------------------------------------------------------------------*
*处理区域
*----------------------------------------------------------------------*
MODULE PBO_INCLUDE OUTPUT.
IF G_DOCKING IS INITIAL .
CREATE OBJECTG_DOCKING
EXPORTING
REPID=G_REPID
DYNNR= '0100'
SIDE=CL_GUI_DOCKING_CONTAINER=>DOCK_AT_BOTTOM
EXTENSION= '440'
EXCEPTIONS
CNTL_ERROR= 1
CNTL_SYSTEM_ERROR= 2
CREATE_ERROR= 3
LIFETIME_ERROR= 4
LIFETIME_DYNPRO_DYNPRO_LINK= 5.
CREATE OBJECTG_SPLITER
EXPORTING
PARENT=G_DOCKING
ROWS = 1
COLUMNS= 1.
CALL METHOD G_SPLITER->GET_CONTAINER
EXPORTING
ROW= 1
COLUMN= 1
RECEIVING
CONTAINER=G_CONTAINER.
*创建FIELDCAT
PERFORM FRM_FIELDCAT.
*创建LAYOUT
PERFORM FRM_LAYOUT.
*3.ALV数据填充
CREATE OBJECTGRID
EXPORTING
I_PARENT=G_CONTAINER."使用画布,此画布放在上面的指定的容器中
CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
*I_STRUCTURE_NAME='ZSFIR001'"参照结构
IS_LAYOUT=GS_LAYOUT_ALV "布局设置
CHANGING
IT_OUTTAB=IT_ITAB_ALV[] "数据源
IT_FIELDCATALOG=GR_FIELDCAT_LVC[]."字段
CALL METHOD GRID->SET_READY_FOR_INPUT
EXPORTING
I_READY_FOR_INPUT= 1. "使用方法set_ready_for_input传入参数
"i_ready_for_input=1可以是ALV进入编辑状态
CALL METHOD GRID->REGISTER_EDIT_EVENT "触发数据改变事件
EXPORTING
I_EVENT_ID=CL_GUI_ALV_GRID=>MC_EVT_MODIFIED. "1.按回车触发:
mc_event_enter;2.MC_EVT_MODIFIED:
单元格失去焦点
CALL METHOD CL_GUI_CONTROL=>SET_FOCUS
EXPORTING
CONTROL =GRID. "SET_READY_FOR_INPUT,REGISTER_EDIT_EVENT,OO-ALV的单元编辑
CREATE OBJECTEVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->HANDLE_USER_COMMAND FOR GRID.
SET HANDLER EVENT_RECEIVER->HANDLE_DOUBLE_CLICK FOR GRID.
SET HANDLER EVENT_RECEIVER->HANDLE_DATA_CHANGED FOR GRID. "ALV单元编辑事件
ELSE.
CALL METHOD GRID->REFRESH_TABLE_DISPLAY.
ENDIF.
ENDMODULE. "PBO_INCLUDEOUTPUT
*&---------------------------------------------------------------------*
*&FormFRM_DATA_RD
*&---------------------------------------------------------------------*
*SQL语句S_MTART
*----------------------------------------------------------------------*
FORM FRM_DATA_RD.
DATA:
SALDV LIKE KNC3-SALDV,SOLLL LIKE KNC3-SOLLL,HABNL LIKE KNC3-HABNL,X1 LIKE KNC3-HABNL,X2 LIKE KNC3-HABNL.
DATA:
WA_KNC3 LIKE LINE OF IT_KNC3.
DATA:
KUKLA LIKE KNA1-KUKLA,KUNNR LIKE KNA1-KUNNR.
DATA:
BEGIN OF IT_KUNNR2 OCCURS 100,
KUNNR LIKE KNA1-KUNNR,
END OF IT_KUNNR2.
CLEAR:
IT_KNA1[],IT_KUNNR[].
*&---客户数据,IT_KNA1
IF S_KUNNR[] IS NOT INITIAL.
CLEAR:
S_WERKS[].
ENDIF.
IF S_WERKS[] IS NOT INITIAL.
SELECT KUNN2 AS KUNNRVKORG AS GSBER INTO TABLE IT_KUNNR FROM KNVP WHERE PARVW= 'RG' AND VKORG IN S_WERKS.
SORT IT_KUNNR BY KUNNRGSBER.
DELETE ADJACENT DUPLICATES FROM IT_KUNNR COMPARING KUNNRGSBER.
IF IT_KUNNR[] IS NOT INITIAL.
LOOP AT IT_KUNNR.
SELECT SINGLE KUNNRNAME1KUKLA INTO (IT_KNA1-KUNNR,IT_KNA1-NAME1,IT_KNA1-KUKLA)
FROM KNA1 WHERE KUNNR=IT_KUNNR-KUNNR AND KTOKD IN S_KTOKD.
SELECT SINGLE VTEXT FROM TKUKT INTO IT_KNA1-VTEXT WHERE SPRAS= '1' AND KUKLA=IT_KNA1-KUKLA.
IF SY-SUBRC<> 0.
SELECT KUNNR INTO TABLE IT_KUNNR2 FROM KNVP WHERE KUNN2=IT_KUNNR-KUNNR AND VKORG IN S_WERKS ORDER BY KUNNR.
DELETE ADJACENT DUPLICATES FROM IT_KUNNR2 COMPARING KUNNR.
LOOP AT IT_KUNNR2.
IF IT_KNA1-VTEXT IS NOT INITIAL.
CONTINUE.
ENDIF.
SELECT SINGLE KUKLA INTO KUKLA FROM KNA1 WHERE KUNNR=IT_KUNNR2-KUNNR.
IF SY-SUBRC= 0 AND KUKLA= '02'.
SELECT SINGLE VTEXT INTO IT_KNA1-VTEXT FROM TKUKT WHERE SPRAS= '1' AND KUKLA=KUKLA.
CONTINUE.
ENDIF.
ENDLOOP.
ENDIF.
IT_KNA1-GSBER=IT_KUNNR-GSBER.
APPEND IT_KNA1.
CLEAR:
IT_KNA1,KUNNR,KUKLA,IT_KUNNR2[].
ENDLOOP.
SORT IT_KNA1 BY KUNNR.
ENDIF.
ELSE.
SELECT KUNN2 AS KUNNRVKORG AS GSBER INTO TABLE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ALV 程序 事例