一个需求,ALV展示后,双击某行,再弹出一个ALV 某些信息,然后,响应弹出ALV的事件。
然后做了个demo
执行显示spfli数据,双击某行,根据carrid 获取sflight 表数据,弹出alv 展示sflight数据,然后双击sflight数据,弹出message显示双击了第几行。
效果图
其实没什么,太久不做这类的了,做个备份吧,以后方便copy
主要代码如下;
9001空白屏幕
*&---------------------------------------------------------------------*
*& Include ZLM_TEST_001_TOP
*&---------------------------------------------------------------------*
*--global data
DATA:
GT_SPFLI TYPE TABLE OF SPFLI,
GT_SFLIGHT TYPE TABLE OF SFLIGHT.
*---alv data
DATA:
GCL_GRID_SPFLI TYPE REF TO CL_GUI_ALV_GRID, "ALV控件
GCL_GRID_SFLIGHT TYPE REF TO CL_GUI_ALV_GRID, "ALV控件
GCL_DOC_SPFLI TYPE REF TO CL_GUI_DOCKING_CONTAINER,
GCL_DOC_SFLIGHT TYPE REF TO CL_GUI_DIALOGBOX_CONTAINER. "第二个弹出框alv 容器
*---the first alv event class
CLASS LCL_EVENT_SPFLI_RECEIVER DEFINITION.
PUBLIC SECTION.
METHODS HANDLE_DOUBLE_CLICK
FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW E_COLUMN.
METHODS HANDLE_CLOSE
FOR EVENT CLOSE OF CL_GUI_DIALOGBOX_CONTAINER
IMPORTING SENDER.
ENDCLASS.
CLASS LCL_EVENT_SPFLI_RECEIVER IMPLEMENTATION.
METHOD HANDLE_DOUBLE_CLICK.
DATA:LS_SPFLI TYPE SPFLI.
READ TABLE GT_SPFLI INTO LS_SPFLI INDEX E_ROW.
SELECT * FROM SFLIGHT INTO TABLE GT_SFLIGHT
WHERE CARRID = LS_SPFLI-CARRID.
PERFORM FRM_SHOW_SFLIGHT.
ENDMETHOD.
METHOD HANDLE_CLOSE.
CALL METHOD SENDER->SET_VISIBLE
EXPORTING
VISIBLE = SPACE.
ENDMETHOD.