ALV-Layoutvariante im Selektionsbildschirm bei Klasse CL GUI ALV GRID

Aus SAP-Wiki
Wechseln zu: Navigation, Suche

In einer ALV-Layoutvariante Layout8.jpg können Einstellungen gespeichert werden wie

  • Reihenfolge Ausgabe Felder
  • Felder aus Anzeige ausblenden
  • Filter
  • Sortierung
  • Layouteinstellungen

Die gewünschte Layoutvariante kann nach Anzeige der ALV-Liste gewählt werden - aber auch bereits im Selektionsbildschirm gewählt werden.

Selektionsbildschirm

Parameter: p_vari TYPE disvariant-variant.

Initialization

INITIALIZATION.
 PERFORM initialization
   changing p_vari.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR <FIELD>

*----------------------------------------------------------------------*
* AT SELECTION-SCREEN ON VALUE-REQUEST FOR <field>
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
  PERFORM at_selection_screen_for_vari
    CHANGING p_vari.

Form INITIALIZATION

*&---------------------------------------------------------------------*
*&      Form  INITIALIZATION
*&---------------------------------------------------------------------*
*       Default Routinen
*----------------------------------------------------------------------*
FORM initialization
   changing pcv_vari type disvariant-variant.

  DATA: lv_report  TYPE  rsvar-report,
        ls_variant TYPE  disvariant.
 
* Defaultlayoutvariante
  ls_variant-report = sy-repid.
  ls_variant-handle = gv_handle_num1.

  CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'  "aus Tabelle LTDX
    EXPORTING
      i_save     = 'A'
    CHANGING
      cs_variant = ls_variant
    EXCEPTIONS
      not_found  = 2.
  IF sy-subrc = 0.
    pcv_vari = ls_variant-variant.
  ENDIF.

ENDFORM.                    "INITIALIZATION

Form AT_SELECTION_SCREEN_FOR_VARI

*&---------------------------------------------------------------------*
*&      Form  AT_SELECTION_SCREEN_FOR_VARI
*&---------------------------------------------------------------------*
*       Liste aller Layoutvarianten wird angeboten und gewählt
*       Die Selektionsvarianten sind in der Tabelle LTDX gespeichrt
*----------------------------------------------------------------------*
FORM at_selection_screen_for_vari
  CHANGING pcv_vari TYPE disvariant-variant.

  DATA: ls_variant_in  TYPE disvariant,
        ls_variant_out TYPE disvariant,
        lv_exit        TYPE c.

  ls_variant_in-report = sy-repid.
  ls_variant_in-handle = gv_handle_num1.

* Zeigt Liste aller Layoutvarianten an: Benutzervarianten und Standardvarianten
  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
    EXPORTING
      is_variant = ls_variant_in
      i_save     = 'A'             "Benutzer und Standardlayoutvarianten
    IMPORTING
      e_exit     = lv_exit
      es_variant = ls_variant_out
    EXCEPTIONS
      not_found  = 2.
  IF sy-subrc = 2.
    MESSAGE ID sy-msgid TYPE 'S'      NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ELSE.
    IF lv_exit = space.
      pcv_vari = ls_variant_out-variant.
    ENDIF.
  ENDIF.

ENDFORM.                    " AT_SELECTION_SCREEN_FOR_VARI

Form ALV_2000

*&---------------------------------------------------------------------*
*&      Form  alv_2000
*&---------------------------------------------------------------------*
*       ALV-Output
*----------------------------------------------------------------------*
form alv_2000.
 
****************
* Fill Variant *
****************
 ls_variant-report  = sy-repid.
 ls_variant-handle  = gv_handle_num1.
 ls_variant-variant = p_vari.
* Rufe die ALV-Liste auf
  CALL METHOD go_alv_cont1->set_table_for_first_display
    EXPORTING
      i_bypassing_buffer   = 'X' "lv_bypassing_buffer
      i_save               = 'A' "lv_save
*     i_default            = 'X'
      is_layout            = ls_layout
*     it_toolbar_excluding = lt_toolbar_excluding
*     is_variant           = ls_variant
    CHANGING
      it_outtab            = pct_list
      it_fieldcatalog      = lt_fcat.
endform.

Web-Links