1、定义
DATA: GO_DOCKING_C TYPE REF TO CL_GUI_DOCKING_CONTAINER, "屏幕docking
GO_SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER, "屏幕分割
GO_TOP_C TYPE REF TO CL_GUI_CONTAINER, "TOP OF PAGE 容器
GO_ALV_C TYPE REF TO CL_GUI_CONTAINER, "ALV 容器
GO_FOOT_C TYPE REF TO CL_GUI_CONTAINER, "页脚
GO_ALV_100 TYPE REF TO CL_GUI_ALV_GRID. "ALV控件
DATA: GO_DYNDOC_ID TYPE REF TO CL_DD_DOCUMENT, "文档
GO_HTML_CNTRL TYPE REF TO CL_GUI_HTML_VIEWER. "HTML CONTRL PROXY CLASS
2、CLASS 定义
CLASS LCL_ALV_EVENT_HANDLER DEFINITION.
PUBLIC SECTION.
METHODS: TOP_OF_PAGE FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID
IMPORTING E_DYNDOC_ID.
ENDCLASS.
3、CLASS 实施
CLASS LCL_ALV_EVENT_HANDLER IMPLEMENTATION.
METHOD TOP_OF_PAGE.
PERFORM TOP_OF_PAGE USING E_DYNDOC_ID.
ENDMETHOD.
ENDCLASS.
DATA:GO_EVEN_100 TYPE REF TO LCL_ALV_EVENT_HANDLER.
4、 展示
IF GO_SPLITTER IS INITIAL .
CREATE OBJECT GO_SPLITTER
EXPORTING
PARENT = CL_GUI_CONTAINER=>SCREEN0
ROWS = 2
COLUMNS = 1.
CALL METHOD GO_SPLITTER->GET_CONTAINER
EXPORTING
ROW = 1
COLUMN = 1
RECEIVING
CONTAINER = GO_TOP_C.
CALL METHOD GO_SPLITTER->GET_CONTAINER
EXPORTING
ROW = 2
COLUMN = 1
RECEIVING
CONTAINER = GO_ALV_C.
ENDIF.
CALL METHOD GO_SPLITTER->SET_ROW_HEIGHT
EXPORTING
ID = 1
HEIGHT = 10.
IF GO_ALV_100 IS INITIAL.
CREATE OBJECT GO_ALV_100
EXPORTING
I_PARENT = GO_ALV_C.
ENDIF.
IF GO_DYNDOC_ID_T IS INITIAL.
CREATE OBJECT GO_DYNDOC_ID_T
EXPORTING
STYLE = 'ALV_GRID'.
ENDIF.
4-4、注册事件
CREATE OBJECT GO_EVEN_100.
SET HANDLER GO_EVEN_100->TOP_OF_PAGE FOR GO_ALV_100.
4-5、调用方法,显示ALV
CALL METHOD GO_ALV_100->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_VARIANT = PS_VARIANT
I_SAVE = 'A'
IS_LAYOUT = PS_LAYOUT
IT_TOOLBAR_EXCLUDING = PT_EXCE[]
CHANGING
IT_OUTTAB = GT_ALV
IT_FIELDCATALOG = PT_FIELDCAT[]
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
4-6、初始化
CALL METHOD GO_DYNDOC_ID->INITIALIZE_DOCUMENT
EXPORTING
BACKGROUND_COLOR = CL_DD_AREA=>COL_TEXTAREA.
4-7、process event
CALL METHOD GO_ALV_100->LIST_PROCESSING_EVENTS
EXPORTING
I_EVENT_NAME = 'TOP_OF_PAGE'
I_DYNDOC_ID = GO_DYNDOC_ID.
5、FORM
FORM TOP_OF_PAGE USING DG_DYNDOC_ID TYPE REF TO CL_DD_DOCUMENT.
DATA:DL_TEXT(255) TYPE C .
* 文本
CLEAR DL_TEXT.
CALL METHOD DG_DYNDOC_ID->ADD_TEXT
EXPORTING
TEXT = 'TOP OF PAGE'
SAP_STYLE = CL_DD_AREA=>HEADING
SAP_FONTSIZE = CL_DD_AREA=>LARGE
SAP_COLOR = CL_DD_AREA=>LIST_HEADING_INT.
* 换行
CALL METHOD DG_DYNDOC_ID->NEW_LINE.
* 空格
CALL METHOD DG_DYNDOC_ID->ADD_GAP.
IF GO_HTML_CNTRL IS INITIAL.
CREATE OBJECT GO_HTML_CNTRL
EXPORTING
PARENT = GO_TOP_C.
ENDIF.
CALL METHOD GO_DYNDOC_ID->MERGE_DOCUMENT.
GO_DYNDOC_ID->HTML_CONTROL = GO_HTML_CNTRL.
CALL METHOD GO_DYNDOC_ID->DISPLAY_DOCUMENT
EXPORTING
REUSE_CONTROL = 'X'
PARENT = GO_TOP_C
EXCEPTIONS
HTML_DISPLAY_ERROR = 1.
ENDFORM.