OO面向物件ALV小測試
阿新 • • 發佈:2018-12-30
*----------------------------------------------------------------------*
* 事件類定義
*----------------------------------------------------------------------*
CLASS lcl_event_handler DEFINITION .
PUBLIC SECTION .
METHODS:
*To add new functional buttons to the ALV toolbar
handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object ,"e_interactive ,
*To implement user commands
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm ,
*Hotspot click control
handle_hotspot_click
FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING e_row_id e_column_id es_row_no ,
*Double-click control
handle_double_click
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column ,
handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed .
ENDCLASS. "lcl_event_handler DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_event_handler IMPLEMENTATION
*----------------------------------------------------------------------*
* 事件類實現
*----------------------------------------------------------------------*
CLASS lcl_event_handler IMPLEMENTATION .
*Handle Toolbar
METHOD handle_toolbar.
PERFORM handle_toolbar USING e_object ." e_interactive .
ENDMETHOD . "handle_toolbar
*Handle Hotspot Click
METHOD handle_hotspot_click .
PERFORM handle_hotspot_click USING e_row_id e_column_id es_row_no .
ENDMETHOD . "handle_hotspot_click
*Handle Double Click
METHOD handle_double_click .
PERFORM handle_double_click USING e_row e_column .
ENDMETHOD . "handle_double_click
*Handle User Command
METHOD handle_user_command .
PERFORM handle_user_command USING e_ucomm .
ENDMETHOD. "handle_user_command
*Handle Data Changed
METHOD handle_data_changed .
PERFORM handle_data_changed USING er_data_changed .
ENDMETHOD. "handle_data_changed
ENDCLASS . "lcl_event_handler IMPLEMENTATION
*&---------------------------------------------------------------------*
*& Form HANDLE_BEFORE_USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_E_UCOMM text
*----------------------------------------------------------------------*
FORM handle_before_user_command USING p_e_ucomm.
ENDFORM. " HANDLE_BEFORE_USER_COMMAND
*&---------------------------------------------------------------------*
*& Form HANDLE_DOUBLE_CLICK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_E_ROW text
* -->P_E_COLUMN text
*----------------------------------------------------------------------*
FORM handle_double_click USING e_row TYPE lvc_s_row
e_column TYPE lvc_s_col.
READ TABLE g_it_spfli INTO g_wa_spfli INDEX e_row-index.
IF sy-subrc = 0 AND e_column-fieldname = 'CITYFROM'.
MESSAGE g_wa_spfli-cityfrom TYPE 'I'.
ELSE.
MESSAGE g_wa_spfli-carrid TYPE 'I'.
ENDIF.
ENDFORM. " HANDLE_DOUBLE_CLICK
*&---------------------------------------------------------------------*
*& Form HANDLE_HOTSPOT_CLICK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_E_ROW_ID text
* -->P_E_COLUMN_ID text
* -->P_ES_ROW_NO text
*----------------------------------------------------------------------*
FORM handle_hotspot_click USING e_row TYPE lvc_s_row
* 事件類定義
*----------------------------------------------------------------------*
CLASS lcl_event_handler DEFINITION .
PUBLIC SECTION .
METHODS:
*To add new functional buttons to the ALV toolbar
handle_toolbar FOR
IMPORTING e_object ,"e_interactive ,
*To implement user commands
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm ,
*Hotspot click control
handle_hotspot_click
FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING
*Double-click control
handle_double_click
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column ,
handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed .
ENDCLASS.
*----------------------------------------------------------------------*
* CLASS lcl_event_handler IMPLEMENTATION
*----------------------------------------------------------------------*
* 事件類實現
*----------------------------------------------------------------------*
CLASS lcl_event_handler IMPLEMENTATION .
*Handle Toolbar
METHOD handle_toolbar.
PERFORM handle_toolbar USING e_object ." e_interactive .
ENDMETHOD . "handle_toolbar
*Handle Hotspot Click
METHOD handle_hotspot_click .
PERFORM handle_hotspot_click USING e_row_id e_column_id es_row_no .
ENDMETHOD . "handle_hotspot_click
*Handle Double Click
METHOD handle_double_click .
PERFORM handle_double_click USING e_row e_column .
ENDMETHOD . "handle_double_click
*Handle User Command
METHOD handle_user_command .
PERFORM handle_user_command USING e_ucomm .
ENDMETHOD. "handle_user_command
*Handle Data Changed
METHOD handle_data_changed .
PERFORM handle_data_changed USING er_data_changed .
ENDMETHOD. "handle_data_changed
ENDCLASS . "lcl_event_handler IMPLEMENTATION
*&---------------------------------------------------------------------*
*& Form HANDLE_BEFORE_USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_E_UCOMM text
*----------------------------------------------------------------------*
FORM handle_before_user_command USING p_e_ucomm.
ENDFORM. " HANDLE_BEFORE_USER_COMMAND
*&---------------------------------------------------------------------*
*& Form HANDLE_DOUBLE_CLICK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_E_ROW text
* -->P_E_COLUMN text
*----------------------------------------------------------------------*
FORM handle_double_click USING e_row TYPE lvc_s_row
e_column TYPE lvc_s_col.
READ TABLE g_it_spfli INTO g_wa_spfli INDEX e_row-index.
IF sy-subrc = 0 AND e_column-fieldname = 'CITYFROM'.
MESSAGE g_wa_spfli-cityfrom TYPE 'I'.
ELSE.
MESSAGE g_wa_spfli-carrid TYPE 'I'.
ENDIF.
ENDFORM. " HANDLE_DOUBLE_CLICK
*&---------------------------------------------------------------------*
*& Form HANDLE_HOTSPOT_CLICK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_E_ROW_ID text
* -->P_E_COLUMN_ID text
* -->P_ES_ROW_NO text
*----------------------------------------------------------------------*
FORM handle_hotspot_click USING e_row TYPE lvc_s_row