Damit ein ALV Grid direkt mit einem bestimmten Layout ausgegeben wird muss das Initiale Layout des Grid vor der Ausgabe gesetzt werden. Der folgende Code Abschnitt beschreibt die Vorgehensweise. Die Layout Funktion wird in der Methode SET_USER_LAYOUT der Klasse Z_TEST_VIEW implementiert.
Hinweis: Wenn das Layout nicht existiert, werden alle Spalten ausgegeben.
Wie man gespeicherte Layouts per Matchcode auf dem Selektionsbild anzeigen kann, beschreibt dieser Beitrag.
Deklaration
CLASS z_test_view DEFINITION. PUBLIC SECTION. METHODS set_user_layout IMPORTING icl_alv TYPE REF TO cl_salv_table iv_layout TYPE slis_vari iv_repid TYPE sy-repid. ENDCLASS.
Implementation
CLASS z_test_view IMPLEMENTATION. *&----------------------------------------------* * Layout für Ausgabe vorbelegen *-----------------------------------------------* METHOD set_user_layout. DATA: lcl_alv_layout TYPE REF TO cl_salv_layout, ls_layout_key TYPE salv_s_layout_key. IF icl_alv IS NOT INITIAL AND iv_layout IS NOT INITIAL. lcl_alv_layout = icl_alv->get_layout( ). ls_layout_key-report = iv_repid. lcl_alv_layout->set_key( ls_layout_key ). lcl_alv_layout->set_initial_layout( iv_layout ). ENDIF. ENDMETHOD. ENDCLASS.
Aufruf
*----------------------------------------------------- * SELECTION SCREEN *----------------------------------------------------- SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME. SELECT-OPTIONS: so_scarr FOR lv_carrid, so_con FOR lv_connid. PARAMETERS: pm_alv TYPE slis_vari. SELECTION-SCREEN END OF BLOCK b1. ... 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 ... " Vorbelegen des Layouts gcl_view->set_user_layout( icl_alv = gcl_alv iv_layout = pm_alv iv_repid = sy-repid ). " Ausgabe der Tabelle gcl_alv->display( ).