效果图:

ALV <wbr>demo:cl_salv_table <wbr>event:(on_user_command,on_double_click)



定义的status


ALV <wbr>demo:cl_salv_table <wbr>event:(on_user_command,on_double_click)


ALV <wbr>demo:cl_salv_table <wbr>event:(on_user_command,on_double_click)



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