效果图:
定义的status
code:
REPORT zlm_alv_002.
DATA: gt_spfli TYPE TABLE OF spfli.
DATA: ls_spfli TYPE spfli.
DATA: gr_table TYPE REF TO cl_salv_table.
DATA: gr_functions TYPE REF TO cl_salv_functions_list.
DATA: gr_events TYPE REF TO cl_salv_events_table.
DATA: gr_selections TYPE REF TO cl_salv_selections.
CLASS lcl_handle_events DEFINITION.
PUBLIC SECTION.
METHODS:
on_user_command FOR EVENT added_function OF cl_salv_events IMPORTING e_salv_function,
on_double_click FOR EVENT double_click OF cl_salv_events_table IMPORTING row column.
ENDCLASS. "lcl_handle_events DEFINITION
DATA: event_handler TYPE REF TO lcl_handle_events.
START-OF-SELECTION.
SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_spfli FROM spfli UP TO 100 ROWS.
CALL METHOD cl_salv_table=>factory IMPORTING r_salv_table = gr_table CHANGING t_table = gt_spfli.
gr_table->set_screen_status( pfstatus = 'SALV_TABLE_STANDARD'
report = sy-repid
set_functions = gr_table->c_functions_all ).
gr_events = gr_table->get_event( ).
CREATE OBJECT event_handler.
SET HANDLER event_handler->on_user_command FOR gr_events.
SET HANDLER event_handler->on_double_click FOR gr_events.
* Set up selections.
gr_selections = gr_table->get_selections( ).
gr_selections->set_selection_mode( 1 ). "Single
* Display
gr_table->display( ).
CLASS lcl_handle_events IMPLEMENTATION.
METHOD on_user_command.
"Get the selection rows
DATA: lr_selections TYPE REF TO cl_salv_selections.
DATA: lt_rows TYPE salv_t_row.
DATA: ls_rows TYPE i.
DATA: message TYPE string.
CASE e_salv_function.
WHEN 'MYFUNCTION'.
lr_selections = gr_table->get_selections( ).
lt_rows = lr_selections->get_selected_rows( ).
READ TABLE lt_rows INTO ls_rows INDEX 1.
READ TABLE gt_spfli INTO ls_spfli INDEX ls_rows.
CONCATENATE ls_spfli-carrid ls_spfli-connid ls_spfli-cityfrom ls_spfli-cityto INTO message SEPARATED BY space.
MESSAGE i001(00) WITH 'You pushed the button!' message.
ENDCASE.
ENDMETHOD. "on_user_command
METHOD on_double_click.
DATA: message TYPE string.
DATA: row_c(4) TYPE c.
row_c = row.
CONCATENATE 'Row' row_c 'Column' column INTO message SEPARATED BY space.
MESSAGE i001(00) WITH 'You double-clicked on ' message.
ENDMETHOD.
ENDCLASS.