1.子屏幕代码
IF GR_ALVGRID IS INITIAL.
GT_FIELDCAT = VALUE #( ( FIELDNAME = 'EBELN' COLTEXT = '采购凭证' )
( FIELDNAME = 'EBELP' COLTEXT = '行项目' )
( FIELDNAME = 'MATNR' COLTEXT = '物料号' )
( FIELDNAME = 'WERKS' COLTEXT = '工厂' )
( FIELDNAME = 'LGORT' COLTEXT = '仓库' )
( FIELDNAME = 'MENGE' COLTEXT = '数量' )
).
GS_LAYOUT-ZEBRA = 'X' .
GS_LAYOUT-GRID_TITLE = '采购信息' .
* GS_LAYOUT-SMALLTITLE = 'X' .
* GS_LAYOUT-NO_TOOLBAR = ' '.
GS_LAYOUT-CWIDTH_OPT = 'X'.
CREATE OBJECT ALV_CUSTOM_CONTAINER1
EXPORTING
CONTAINER_NAME = 'CONTAINER1'. "屏幕容器名称
CREATE OBJECT GR_ALVGRID
EXPORTING
I_PARENT = ALV_CUSTOM_CONTAINER1
I_APPL_EVENTS = 'X'.
CONCATENATE SY-REPID SY-DYNNR 'U' INTO GS_VARIANT-REPORT.
* CREATE OBJECT event_receiver.
*
* SET HANDLER event_receiver->HANDLE_TOOLBAR FOR GR_ALVGRID.
CALL METHOD GR_ALVGRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_BYPASSING_BUFFER = 'X'
I_BUFFER_ACTIVE = ''
IS_LAYOUT = GS_LAYOUT "样式设定
IT_TOOLBAR_EXCLUDING = GT_EXCLUDE "排除现有功能码
I_SAVE = 'A'
IS_VARIANT = GS_VARIANT
CHANGING
IT_OUTTAB = GT_EKPO[]
IT_FIELDCATALOG = GT_FIELDCAT[].
SET HANDLER LCL_EVENT_RECEIVER=>HANDLE_TOOLBAR FOR GR_ALVGRID.
SET HANDLER LCL_EVENT_RECEIVER=>HANDLE_USER_COMMAND FOR GR_ALVGRID.
SET HANDLER LCL_EVENT_RECEIVER=>handle_double_click FOR GR_ALVGRID.
CALL METHOD GR_ALVGRID->SET_TOOLBAR_INTERACTIVE.
ELSE.
CALL METHOD GR_ALVGRID->REFRESH_TABLE_DISPLAY.
ENDIF.
追加按钮类
DATA:
ALV_CUSTOM_CONTAINER1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER, "ALV对象
GR_ALVGRID TYPE REF TO CL_GUI_ALV_GRID, "ALV对象
GS_VARIANT TYPE DISVARIANT,
GT_FIELDCAT TYPE LVC_T_FCAT,
GS_LAYOUT TYPE LVC_S_LAYO,
GT_EXCLUDE TYPE UI_FUNCTIONS . "存放排除按钮的内表
*定义ALV自定义控件
CLASS LCL_EVENT_RECEIVER DEFINITION DEFERRED.
DATA:event_receiver TYPE REF TO LCL_EVENT_RECEIVER.
CLASS LCL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
CLASS-METHODS HANDLE_TOOLBAR FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID
IMPORTING E_OBJECT E_INTERACTIVE.
CLASS-METHODS:
handle_double_click FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column,
HANDLE_USER_COMMAND FOR EVENT user_commANd of cl_gui_alv_grid
IMPORTING E_UCOMM,
HANDLE_DATA_CHANGE FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID
IMPORTING ER_DATA_CHANGED E_UCOMM.
ENDCLASS.
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
METHOD HANDLE_TOOLBAR.
DATA:
LS_TOOLBAR TYPE STB_BUTTON,
LS_BTNMNU TYPE STB_BTNMNU.
LS_TOOLBAR-FUNCTION = 'SELE'.
LS_TOOLBAR-ICON = '@DH@'.
LS_TOOLBAR-QUICKINFO = '日志记录'.
LS_TOOLBAR-DISABLED = ''.
LS_TOOLBAR-TEXT = '日志记录'.
APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
* LS_BTNMNU-FUNCTION = 'SELE'.
*
* APPEND LS_BTNMNU TO E_OBJECT->MT_BTNMNU.
ENDMETHOD.
METHOD handle_double_click.
PERFORM handle_double_click USING e_row e_column.
ENDMETHOD. "handle_double_click
METHOD HANDLE_USER_COMMAND.
PERFORM FRM_ALV_USER_COMMAND USING E_UCOMM.
ENDMETHOD.
ENDCLASS.