1. 程式人生 > >OO面向物件ALV小測試

OO面向物件ALV小測試

*----------------------------------------------------------------------*
*       事件類定義
*----------------------------------------------------------------------*
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 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