Bsp. für ein ALV auf Basis der SALV Klasse
- CL_SALV_TABLE ALV Grid
- CL_SALV_FUNCTIONS_LIST Funktionen Menüleiste Drucktastenleiste
- CL_SALV_EVENTS_TABLE Events
- CL_SALV_SELECTIONS Selektionen
- CREATE OBJECT Event Handler erzeugen
- SET HANDLER Event Handler einstellen
Erstellen des PF_STATUS über
SE80
Funktionsgruppe SALV_METADATA_STATUS
Status SALV_TABLE_STANDARD
kopieren und aktivieren.
Erstellen und Aktivieren der Funktion MYFUNCTIONS durch Abänderung der Drucktastenleiste von SALV_TABLE_STANDDARD
*&---------------------------------------------------------------------*
*& Report ZTEST34
*&
*&---------------------------------------------------------------------*
*&
*& Demonstration von SALV, functions, events, selections
*& cl_salv_table
*& cl_salv_events_table for events
*& cl_salv_selections for selections
*& cl_salv_functions_list for functions
*&---------------------------------------------------------------------*
* PF_STATUS SALV_TABLE_STANDARD kopieren über
* (Standard GUI Status for alv)
* SE80 Funktionsgruppe SALV_METADATA_STATUS
* GUI-Status
* SALV_TABLE_STANDARD
* PF_STATUS SALV_STANDARD kopieren über
* SE80 Programm SALV_DEMO_TABLE_FUNCTIONS
* GUI-Status
* SALV_STANDARD
* Drucktastenleiste / application Toolbar in SALV_TABLE_STANDARD
* Da die Drucktastenleiste schon voll ist,
* ein Trennzeichen löschen und stattdessen
* MYFUNCTION einsetzen und Funktionstaste zuordnen (Muss)
REPORT ztest34.
"Report zalvom_demo3.
DATA : ispfli TYPE TABLE OF spfli.
DATA : xspfli 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
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
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
"Variable Event_Handler als Zeiger auf Klasse lcl_handle_events
DATA : event_handler TYPE REF TO lcl_handle_events.
*----------------------------------------------------------------------*
* Hauptprogramm
*----------------------------------------------------------------------*
START-OF-SELECTION.
"Datenextract
SELECT * INTO CORRESPONDING FIELDS OF TABLE ispfli FROM spfli UP TO 100 ROWS.
"ALV aus SALV Klasse Erzeugung
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = gr_table
CHANGING
t_table = ispfli.
"Menü / Drucktasten / Funktionstasten
gr_table->set_screen_status(
pfstatus = 'SALV_TABLE_STANDARD'
report = sy-repid
set_functions = gr_table->c_functions_all ).
"Events
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.
"Selections
gr_selections = gr_table->get_selections( ).
gr_selections->set_selection_mode( 1 ). "Single
gr_table->display( ).
*----------------------------------------------------------------------*
* CLASS lcl_handle_events IMPLEMENTATION *--------------------------
*----------------------------------------------------------------------*
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 .
IF sy-subrc IS INITIAL.
READ TABLE ispfli INTO xspfli INDEX ls_rows.
CONCATENATE xspfli-carrid xspfli-connid xspfli-cityfrom xspfli-cityto INTO message SEPARATED BY space.
MESSAGE i001(00) WITH 'You pushed the button: ' message .
ELSE.
message = 'Bitte eine Zeile auswählen'.
MESSAGE i001(00) WITH message .
ENDIF.
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 .
"on_double_click
ENDCLASS.
"lcl_handle_events IMPLEMENTATION