Damit ein Benutzer die erstellen Layouts (Spalten, Filter etc.) sichern kann, muss dies im ALV aktiviert werden. Der folgende Code Abschnitt beschreibt die Vorgehensweise. Die Layout Funktion wird in der Methode ENABLE_USER_LAYOUT der Klasse Z_TEST_VIEW implementiert.
Deklaration
CLASS z_test_view DEFINITION. PUBLIC SECTION. METHODS enable_user_layout IMPORTING icl_alv TYPE REF TO cl_salv_table. ENDCLASS.
Implementation
CLASS z_test_view IMPLEMENTATION. *----------------------------------------------------------------------* * Benuterspezifische Layouts aktivieren *----------------------------------------------------------------------* METHOD enable_user_layout. DATA: lc_alv_layout TYPE REF TO cl_salv_layout, ls_layout_key TYPE salv_s_layout_key, lv_variant type slis_vari. " Optional wenn Layout vorbelegt werden soll * Benutzerspezifische Layouts aktivieren lc_alv_layout = icl_alv->get_layout( ). ls_layout_key-report = sy-repid. lc_alv_layout->set_key( ls_layout_key ). lc_alv_layout->set_save_restriction( if_salv_c_layout=>restrict_none ). * Optional Vorbelegen des Layouts (wenn es nicht existiert, wird kein Layout gezogen) * lv_variant = 'DEFAULT'. * lc_alv_layout->set_initial_layout( lv_variant ). ENDMETHOD. ENDCLASS.
Aufruf
DATA: gcl_alv TYPE REF TO cl_salv_table, " Objektreferenz für ALV Grid gcl_view type ref to z_test_view, " Objektreferenz auf View Objekt ... create OBJECT gcl_view. ... " erzeugen des ALV Objekts cl_salv_table=>factory( IMPORTING r_salv_table = gcl_alv " Referenz auf ALV Grid CHANGING t_table = gcl_model->gt_flights ). " Tabelle mit Daten für Ausgabe ... " Aktivieren der User Layouts gcl_view->enable_user_layout( icl_alv = >gcl_alv ). " Ausgabe der Tabelle gcl_alv->display( ).