Layoutvariante bei Nutzung REUSE ALV GRID DISPLAY LVC

Aus SAP-Wiki
(Weitergeleitet von Layoutvarianten speichern)
Zur Navigation springenZur Suche springen

Siehe Kategorie: ALV.

Siehe Selektionsvarianten bei Reporten.

Siehe ALV-Vorlage REUSE ALV GRID DISPLAY LVC.

Die Layoutvarianten eines Reports sind von den Selektionsvarianten zu unterscheiden. Die Selektionsvarianten betreffen die Werte von Selektionsparametern im Selektionsbildschirm eines Reports; die Layoutvarianten die Darstellung der ALV-Liste von einem Report.

Die Layoutvarianten können als Standard (benutzerübergreifend) 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 Layoutvarianten können bereits im Selektionsbildschirm zur Auswahl angeboten werden, wenn man weiß wie es geht. Sodass ein User von einem ALV-Report sich eine für den User optimale Darstellung der Felder speichern kann und dann mit dieser Layoutvariante arbeiten kann, ohne sie jedes mal erneut manuell wiederherstellen zu müssen.

ALV-Layoutvarianten transportieren

Layoutvariante speichern

ALV-Varianten1.jpg

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

ALV-Varianten2.jpg

Layout nach Wunsch ändern, z. B. Felder ausblenden. Unter "Spaltenvorrat" sind alle Felder, die ausgabefähig sind, aber aktuell nicht ausgegeben werden.

Hat man die Auswahl getroffen, drückt man auf Button "Speichern". Dann kann diese Layoutvariante aus der ALV-Liste heraus aufgerufen werden.

ALV-Varianten3.jpg


Für die Variante vergibt man einen Namen. Eine benutzabhängige Variante beginnt mit einem Buchstaben. Eine Standardvariante mit "/". "Voreinstellung" bedeutet, dass diese Layoutvariante bei einem Report zur Anzeige der ALV-Liste verwendet wird, es sei denn der Benutzer hat eine benutzerabhängige Variante gespeichert.

ALV-Varianten4.jpg

Aufruf ALV-Layoutvariante 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

Die ausgewälte Layoutvariante wird als Übergabeparameter an den ALV-Funktionsbaustein übergeben. Im Parameter LS_VARIANT wird die Variante gespeichert.

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.

Mit I_DEFAULT = 'X' kann der Report eine Standardvariante mit Voreinstellung verwenden. In diesem Fall muss keine Layoutvariante übergeben werden, da es pro Report nur eine Layoutvariante als Voreinstellung geben kann.

Gibt es in einem Report zwei oder mehr ALV-Listen, muss bei der Struktur IS_VARIANT auch das Feld HANDLE gefüllt werden. Hier muss dann pro ALV-Liste eine eindeutige Nummer stehen, z. B. '1', '2' etc. Wenn es nur eine ALV-Liste in einem Report gibt, muss das Feld HANDLE nicht gefüllt werden. Wurde eine HANDLE-Nummer beim Aufruf der ALV-Liste gefüllt und es wurden dann Layoutvarianten gespeichert, sind diese dann auch mit der HANDLE-Nummer verknüpft. Bei einer nachträglichen Änderung der HANDLE-Nummer beim Aufruf, würden dann die alten Layoutvarianten verlorengehen.

  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                   = lt_art
  EXCEPTIONS  
     program_error              = 1
     OTHERS                     = 2.

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