SET HANDLER EVENT_RECEIVER->HANDLE_TOOLBAR FOR ALV_GRID. SET HANDLER EVENT_RECEIVER->HANDLE_USER_COMMAND FOR ALV_GRID. CALL METHOD ALV_GRID->SET_TOOLBAR_INTERACTIVE. * EXPORTING
* I_INTERACTIVE = SPACE .
ENDMODULE. \
*&---------------------------------------------------------------------*
*& Module CANCEL INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE CANCEL INPUT. LEAVE PROGRAM.
ENDMODULE. \
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT. SAVE_OK = OK_CODE. CLEAR OK_CODE. CASE SAVE_OK. WHEN 'EXIT'. LEAVE PROGRAM. ENDCASE.
ENDMODULE. \ 处理ALV双击事件
测试程序:ZLITEST_019.源代码如下:
*&---------------------------------------------------------------------*
*& Report ZLITEST_019 *&
*&---------------------------------------------------------------------* *&
*&
*&---------------------------------------------------------------------*
REPORT ZLITEST_019.
DATA:SAVE_OK TYPE SY-UCOMM. DATA:OK_CODE TYPE SY-UCOMM.
DATA:LT_SPFLI LIKE TABLE OF SPFLI. DATA:LS_SPFLI LIKE SPFLI.
DATA:CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER. DATA:ALV_GRID TYPE REF TO CL_GUI_ALV_GRID. DATA:CONTAINER_N TYPE SCRFNAME VALUE 'ALVDATA'. CLASS:LCL_EVENT_RECEIVER DEFINITION DEFERRED. DATA:EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER. CLASS LCL_EVENT_RECEIVER DEFINITION. PUBLIC SECTION.
METHODS:HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW E_COLUMN ES_ROW_NO. * RAISE EVENT DOUBLE_CLICK ** EXPORTING ** E_ROW = ** E_COLUMN = ** ES_ROW_NO = * . ENDCLASS.
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION. METHOD HANDLE_DOUBLE_CLICK.
READ TABLE LT_SPFLI INTO LS_SPFLI INDEX E_ROW-INDEX.
MESSAGE I007(YMESS) WITH LS_SPFLI-CARRID LS_SPFLI-CONNID LS_SPFLI-CITYFROM. ENDMETHOD. ENDCLASS.
START-OF-SELECTION.
SELECT * FROM SPFLI INTO TABLE LT_SPFLI. CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&-------------------------------------------------------------------
--*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT. SET PF-STATUS 'STATUS1'. * SET TITLEBAR 'xxx'. CREATE OBJECT CONTAINER EXPORTING
* PARENT =
CONTAINER_NAME = CONTAINER_N * STYLE =
* LIFETIME = LIFETIME_DEFAULT * REPID = * DYNNR = * NO_AUTODEF_PROGID_DYNNR = * EXCEPTIONS
* CNTL_ERROR = 1 * CNTL_SYSTEM_ERROR = 2 * CREATE_ERROR = 3 * LIFETIME_ERROR = 4 * LIFETIME_DYNPRO_DYNPRO_LINK = 5 * OTHERS = 6 .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.
CREATE OBJECT ALV_GRID EXPORTING
* I_SHELLSTYLE = 0 * I_LIFETIME =
I_PARENT = CONTAINER * I_APPL_EVENTS = SPACE * I_PARENTDBG = * I_APPLOGPARENT = * I_GRAPHICSPARENT = * I_NAME = * I_FCAT_COMPLETE = SPACE * EXCEPTIONS
* ERROR_CNTL_CREATE = 1 * ERROR_CNTL_INIT = 2 * ERROR_CNTL_LINK = 3 * ERROR_DP_CREATE = 4
* OTHERS = 5 .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.
CALL METHOD ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING
* I_BUFFER_ACTIVE = * I_BYPASSING_BUFFER = * I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME = 'SPFLI' * IS_VARIANT = * I_SAVE = * I_DEFAULT = 'X' * IS_LAYOUT = * IS_PRINT = * IT_SPECIAL_GROUPS = * IT_TOOLBAR_EXCLUDING = * IT_HYPERLINK = * IT_ALV_GRAPHICS = * IT_EXCEPT_QINFO = * IR_SALV_ADAPTER = CHANGING
IT_OUTTAB = LT_SPFLI * IT_FIELDCATALOG = * IT_SORT = * IT_FILTER = * EXCEPTIONS
* INVALID_PARAMETER_COMBINATION = 1 * PROGRAM_ERROR = 2 * TOO_MANY_LINES = 3 * OTHERS = 4 .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.
CREATE OBJECT EVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->HANDLE_DOUBLE_CLICK FOR ALV_GRID. ENDMODULE. \
*&---------------------------------------------------------------------*
*& Module CANCEL INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE CANCEL INPUT. LEAVE PROGRAM.
ENDMODULE. \
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT. SAVE_OK = OK_CODE. CLEAR OK_CODE. CASE SAVE_OK. WHEN 'EXIT'. LEAVE PROGRAM. ENDCASE.
ENDMODULE. \