Layoutvariante bei Nutzung REUSE ALV GRID DISPLAY LVC

Aus SAP-Wiki
(Weitergeleitet von Layoutvarianten speichern)
Wechseln zu: Navigation, Suche

Die ALV-Liste kann Layoutvarianten haben. Die Layoutverianten können als Standard und/oder benutzerabhängig gespeichert werden.

Die Layoutvariante nimmt Einfluss auf

  • Felder, die angezeigt, bzw. ausgeblendet, werden
  • Reihenfolge der Felder
  • Sortierung der Liste
  • Filterung der Felder
  • Summierung der Werten von Feldern
  • u. a.

Diese Varianten können im Selektionsbildschirm zur Auswahl angeboten werden, sodass der ALV-Report mit für den User optimalen Variante aufrufen kann.

Variante speichern

ALV-Varianten1.jpg

Auf den linken Button "Layout ändern" drücken

ALV-Varianten2.jpg

Layout nach Wunsch ändern, z. B. Felder ausblenden und auf Button "speichern" klicken. Dann kann diese Variante aus der ALV-Liste heraus aufgerufen werden

ALV-Varianten3.jpg

Einen Namen für die Variante vergeben und benutzerabhängig oder Standardvariante/Voreinstellung wählen

ALV-Varianten4.jpg

Aufruf ALV-Variante per Parameterfeld

Im Selektionsbildschirm

ALV Variante1.jpg

Wenn die Wertehilfe im Feld Layout aufgerufen wird, sieht man alle Benutzerlayoutvarianten und maximal eine Standardvariante. Die persönliche Variante erkennt man an dem Haken im Feld ALV Variante2.jpg.

ALV Layoutvariante.jpg

Definition Layoutvariante im Selektionsbildschirm

Parameters: p_var TYPE disvariant-variant.               "Layout

Beim Ereignis Initialization

So lädt das Programm eine vorhandene Standardvariante

 *----------------------------------------------------------------------*
 * INITIALIZATION
 *----------------------------------------------------------------------*
 initialization.

 DATA: ls_layout TYPE salv_s_layout_info,
       ls_key    TYPE salv_s_layout_key.

 ls_key-report = sy-repid.

 ls_layout = cl_salv_layout_service=>get_default_layout(
         s_key    = ls_key
        restrict  = if_salv_c_layout=>restrict_none ).

 p_var = ls_layout-layout.

Beeinflussung der F4-Hilfe für Variantenfeld beim Ereignis "AT SELECTION-SCREEN"

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_var.
* fill F4-Layout
  PERFORM f4_layouts
    USING if_salv_c_layout=>restrict_none
 CHANGING p_var.
*&---------------------------------------------------------------------*
*&      Form  f4_layouts
*&---------------------------------------------------------------------*
FORM f4_layouts USING i_restrict TYPE salv_de_layout_restriction
             CHANGING c_layout TYPE disvariant-variant.

  DATA: ls_layout TYPE salv_s_layout_info,
        ls_key    TYPE salv_s_layout_key.

  ls_key-report = sy-repid.
* ls_key-HANDLE = 'NUM1'. "Wenn mehrere ALV-Liste im Report, die mit HANDLE unterschieden werden

  ls_layout = cl_salv_layout_service=>f4_layouts(
    s_key    = ls_key
    restrict = i_restrict ).

  c_layout = ls_layout-layout.

ENDFORM.                    " f4_layouts

Aufruf ALV-Funktionsbaustein

Zuweisen der neuen Variante an Übergabeparameter und Aufruf ALV-Funktionsbaustein. Im Parameter LS_VARIANT wird die Variante übergeben. Mit dem Parameter I_SAVE = 'A' wird dem ALV-Report mitgeteilt, dass sowohl eine benutzerabhängige Variante als auch eine Standardvariante in der ALV-Liste gespeichert werden kann.

  Data: ls_variant type DISVARIANT.

  ls_variant-variant = p_var.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
  EXPORTING
     i_interface_check          = 'I'
     i_callback_program         = l_repid
     is_layout_lvc              = ls_layout " Layout ALV
     it_fieldcat_lvc            = lt_fcat " Fields in List
     i_default                  = 'X'
     i_save                     = 'A'
     IS_VARIANT                 = ls_variant
     it_events                  = lt_events
  TABLES
     t_outtab                   = p_it_art
  EXCEPTIONS
     program_error              = 1
     OTHERS                     = 2.

  IF sy-subrc <> 0.
    MESSAGE i531(0u) WITH 'Problem beim Fuba REUSE_ALV_GRID_DISPLAY_LVC'.
  ENDIF.

ALV-Layoutvarianten transportieren