原文:Small Fire · SALV Event处理 · ABAP 子专栏 · Small Fire 技术笔记

Event 处理

CLASS lcl_event_handler DEFINITION.
  PUBLIC SECTION.
    METHODS:
      on_link_click FOR EVENT link_click OF cl_salv_events_table
        IMPORTING row column.
ENDCLASS.                    "lcl_event_handler DEFINITION"

*$*$*.....CODE_ADD_3 - Begin..................................3..*$*$*
 METHOD generate_output.
    DATA: lx_msg TYPE REF TO cx_salv_msg.
    TRY.
        cl_salv_table=>factory(
          IMPORTING
            r_salv_table = o_alv
          CHANGING
            t_table      = t_vbak ).
      CATCH cx_salv_msg INTO lx_msg.
    ENDTRY.

*Get the event object
    DATA: lo_events TYPE REF TO cl_salv_events_table.
    lo_events = o_alv->get_event( ).
*Instantiate the event handler object
    DATA: lo_event_handler TYPE REF TO lcl_event_handler.
    CREATE OBJECT lo_event_handler.
*Event handler
    SET HANDLER lo_event_handler->on_link_click FOR lo_events.
*Displaying the ALV
    o_alv->display( ).
  ENDMETHOD.                    "generate_output"
*$*$*.....CODE_ADD_3 - End....................................3..*$*$*

CLASS l_cl_handle_events IMPLEMENTATION.
  METHOD on_double_click.
    PERFORM show_cell_info USING row column 'is selected'.
  ENDMETHOD.
ENDCLASS.

FORM show_cell_info USING p_row TYPE i
                          p_column TYPE lvc_fname
                          p_text TYPE string.
  DATA: l_row TYPE char10.
  WRITE p_row TO l_row LEFT-JUSTIFIED.
  CONCATENATE l_row 'Line,' p_column 'Column' p_text INTO p_text SEPARATED BY space.
  MESSAGE i001(00) WITH p_text.
ENDFORM.