* Beispiel für die Auswertung von selektierten Zeilen eines SALV-Grids,
* nachdem ein Button in der Toolbar geklickt wurde
CLASS lcl_salv DEFINITION FINAL.
PUBLIC SECTION.
* Variablen
CLASS-DATA: it_data TYPE ty_it_mytable.
CLASS-DATA: o_salv TYPE REF TO cl_salv_table.
* Eventhandler-Methode für Button-Klicks in der Toolbar des SALV-Grids
CLASS-METHODS: on_toolbar_click FOR EVENT added_function OF cl_salv_events_table
IMPORTING
e_salv_function
sender.
ENDCLASS.
CLASS lcl_salv IMPLEMENTATION.
METHOD on_toolbar_click.
TRY.
IF o_salv IS BOUND.
CASE e_salv_function.
WHEN 'BTN_CHECK'.
* selektierte Zeilen des SALV-Grids holen
DATA(it_sel_rows) = o_salv->get_selections( )->get_selected_rows( ).
IF lines( it_sel_rows ) > 0.
* Daten aus der internen Tabelle holen
DATA(it_items) = VALUE ty_it_mytable( FOR <s> IN it_sel_rows ( it_data[ <s> ] ) ).
...
ENDIF.
ENDCASE.
ENDIF.
CATCH cx_root INTO DATA(e_txt).
MESSAGE e_txt->get_text( ) TYPE 'I'.
ENDTRY.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
TRY.
cl_salv_table=>factory( EXPORTING r_container = cl_gui_container=>default_screen
IMPORTING r_salv_table = lcl_salv=>o_salv
CHANGING t_table = lcl_salv=>it_data ).
...
* eigenen Button in die Toolbar hinzufügen
lcl_salv=>o_salv->get_functions( )->add_function( name = 'BTN_CHECK'
icon = |{ icon_icon_list }|
text = 'Check'
tooltip = 'Check'
position = if_salv_c_function_position=>right_of_salv_functions ).
* Klick-Handler für Toolbar-Buttons
SET HANDLER lcl_salv=>on_toolbar_click FOR lcl_salv=>o_salv->get_event( ).
...
lcl_salv=>o_salv->display( ).
* Listausgabe erzwingen für Erzeugung von cl_gui_container=>default_screen
WRITE: space.
CATCH cx_root INTO DATA(e_txt).
WRITE: / e_txt->get_text( ).
ENDTRY.