ALV-Berichte in SAP Tutorial – ABAP List Viewer
⚡ Intelligente Zusammenfassung
ALV-Berichte in SAPDie vom ABAP List Viewer erzeugten Listen ermöglichen Spaltenausrichtung, Sortierung, Filterung, Summen und Zwischensummen ohne benutzerdefinierte Programmierung. Diese Seite erläutert die einfachen, Block- und hierarchischen Listentypen, ihre REUSE-Funktionsbausteine und Darstellungsvarianten.

Was ist ALV in SAP ABAP?
Zu den üblicherweise gewünschten Funktionen eines Berichts gehören Spaltenausrichtung, Sortierung, Filterung, Zwischensummen, Gesamtsummen usw. Um diese Funktionen von Grund auf zu implementieren, ist ein erheblicher Programmieraufwand erforderlich. Um dies zu vermeiden, kann man das Konzept des ABAP List Viewers (ALV) verwenden.
Jeder dieser Berichte bietet Funktionsbausteine die dazu beitragen, ohne großen Aufwand die gewünschte Ausgabe zu erzielen. Schauen wir sie uns im Detail an –
Die klassische ALV-Liste bietet drei Listentypen, und jeder Typ verfügt über einen eigenen Satz von REUSE-Funktionsbausteinen:
- Einfacher Bericht: eine interne Tabelle, die als Liste oder Raster dargestellt wird.
- Blockbericht: mehrere interne Tabellen werden übereinander als separate Blöcke dargestellt.
- Hierarchischer Bericht: Eine Kopfzeilentabelle und eine Artikeltabelle, die durch einen gemeinsamen Schlüssel verknüpft sind.
Einfacher Bericht
Wichtige Funktionsbausteine darin berichten sind -
- Reuse_alv_fieldcatalog_merge
- Reuse_alv_list_display
- Reuse_alv_events_get
- Reuse_alv_grid_display
- Reuse_alv_commentary_write
REUSE_ALV_FIELDCATALOG_MERGE
Mit diesem Funktionsbaustein wird ein Feldkatalog gefüllt, der für die Anzeige der Daten in ALV unerlässlich ist.
Wenn die Ausgabedaten aus einer einzelnen Wörterbuchtabelle stammen und alle Spalten ausgewählt sind, müssen wir nicht ausschließlich den Feldkatalog erstellen. Es reicht aus, den Tabellennamen als Parameter (I_structure_name) im REUSE_ALV_LIST_DISPLAY anzugeben. Aber in anderen Fällen müssen wir es erstellen.
Hinweis: Der Feldkatalog kann auch manuell ausgefüllt werden, indem alle erforderlichen Details in die interne Tabelle eingetragen werden.
Wichtige Parameter sind:
1. Exportieren:
- I_Programmname: Berichts-ID
- I_internal_tabname: die interne Ausgabetabelle
- I_inclname: Include oder der Berichtsname, in dem alle dynamischen Formulare verarbeitet werden.
2. Ändern
- ct_fieldcat: ein interne Tabelle mit dem Typ SLIS_T_FIELDCAT_ALV, der im Typpool SLIS deklariert ist.
REUSE_ALV_LIST_DISPLAY
Dies ist der Funktionsbaustein, der die Daten druckt.
Die wichtigen Parameter sind:
1. Exportieren:
- I_callback_program: Berichts-ID
- I_Bypassing_Buffer: 'X'
- I_Puffer_aktiv: ''
- I_callback_pf_status_set: Routine, in der ein Benutzer seinen eigenen Pf-Status festlegen oder die Funktionalität des vorhandenen Pf-Status ändern kann.
- I_callback_user_command: Routine, in der die Funktionscodes verarbeitet werden.
- I_Strukturname: Name der Wörterbuchtabelle
- Is_Layout: Struktur zum Festlegen des Layouts des Berichts
- It_fieldcat : interne Tabelle mit der Liste aller Felder und deren Attribute, die gedruckt werden sollen (diese Tabelle kann durch die Funktion automatisch gefüllt werden)
- It_events: Interne Tabelle mit einer Liste aller möglichen Ereignisse von ALV und ihren entsprechenden Formularnamen.
2. Tabellen:
- A. t_outtab: interne Tabelle mit den auszugebenden Daten
REUSE_ALV_EVENTS_GET
Gibt eine Tabelle möglicher Ereignisse für einen Listentyp zurück
1. Importieren:
Et_Events:Die Ereignistabelle wird mit allen möglichen CALLBACK-Ereignissen für den angegebenen Listentyp (Spalte „NAME“) zurückgegeben. Damit Ereignisse vom Callback verarbeitet werden können, muss deren Feld „FORM“ ausgefüllt sein. Wenn das Feld initialisiert ist, wird das Ereignis ignoriert. Der Eintrag kann aus der Ereignistabelle gelesen, das Feld 'FORM' gefüllt und der Eintrag mit Konstanten aus dem Typpool SLIS geändert werden.
2. Exportieren:
I_list_type: 0 = einfache Liste REUSE_ALV_LIST_DISPLAY
1 = hierarchisch-sequenzielle Liste REUSE_ALV_HIERSEQ_LIST_DISPLAY
2 = einfache Blockliste REUSE_ALV_BLOCK_LIST_APPEND
3 = hierarchisch-sequenzielle Blockliste REUSE_ALV_BLOCK_LIST_HS_APPEND
REUSE_ALV_GRID_DISPLAY
Eine neue Funktion aus der ABAP4.6-Version, um die Ergebnisse in einem Raster statt in einer Vorschau anzuzeigen.
Parameter: wie reuse_alv_list_display
Hinweis: Grid-Daten können große Datenmengen nicht verarbeiten. Funktionen wie Sortieren und Scrollen verbrauchen viele Ressourcen und Zeit, wenn viele Daten angezeigt werden müssen. Es gibt keine eindeutige Regel, ob man bei einer bestimmten Datenmenge eine Liste oder ein Grid verwenden sollte. Der Entwickler muss dies anhand seiner Erfahrung entscheiden. Im Zweifelsfall ist eine Liste die bessere Wahl.
REUSE_ALV_COMMENTARY_WRITE
Dies wird im Top-of-Page-Ereignis verwendet, um die Überschriften und andere Kommentare für die Liste zu drucken.
Wichtige Parameter
- It_list_commentary: Interne Tabelle mit den Überschriften vom Typ slis_t_listheader.
Diese interne Tabelle hat drei Felder:
- Typ: „H“ – Header, „S“ – Auswahl, „A“ – Aktion
- Schlüssel: nur, wenn Typ „S“ ist.
- Info: der zu druckende Text
Beispiel: Ein einfacher ALV-Grid-Bericht
Das folgende Programm wandelt die oben genannten Funktionsbausteine in einen Arbeitsbericht um. Es liest die Flugplantabelle SPFLI ein, erstellt automatisch den Feldkatalog und zeigt das Ergebnis in einem Raster an.
REPORT z_alv_demo. TYPE-POOLS: slis. DATA: lt_spfli TYPE STANDARD TABLE OF spfli, lt_fieldcat TYPE slis_t_fieldcat_alv, ls_layout TYPE slis_layout_alv. START-OF-SELECTION. * 1. Read the data into the output table SELECT * FROM spfli INTO TABLE lt_spfli. * 2. Build the field catalog from the dictionary structure CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_program_name = sy-repid i_internal_tabname = 'LT_SPFLI' i_structure_name = 'SPFLI' CHANGING ct_fieldcat = lt_fieldcat. * 3. Set the layout and display the grid ls_layout-zebra = 'X'. ls_layout-colwidth_optimize = 'X'. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid is_layout = ls_layout it_fieldcat = lt_fieldcat i_save = 'A' TABLES t_outtab = lt_spfli.
Drei Parameter sind für den Großteil der Arbeit verantwortlich. I_STRUCTURE_NAME ermöglicht die Ableitung des Feldkatalogs aus dem Wörterbuch, sodass keine Spalte manuell beschrieben werden muss. IS_LAYOUT aktiviert gestreifte Zeilen und optimierte Spaltenbreiten. I_SAVE = 'A' ermöglicht das Speichern sowohl benutzerdefinierter als auch Standard-Anzeigevarianten aus der fertigen Liste.
Bericht blockieren
Dies sieht wie ein einfacher Bericht aus, verfügt jedoch nur über die Funktionen Sortieren und Filtern. Dieser Bericht wird verwendet, wenn Sie mehr als einen Bericht in der Ausgabe anzeigen müssen. Technisch gesehen verwenden wir den Blockbericht von ALV, wenn Sie mehrere interne Tabellen mit Daten haben, die als separate Blöcke angezeigt werden sollen.
Die wichtigen Funktionen zur Erstellung dieses Berichts sind:
- REUSE_ALV_BLOCK_LIST_INIT
- REUSE_ALV_BLOCK_LIST_APPEND
- REUSE_ALV_BLOCK_LIST_DISPLAY
REUSE_ALV_BLOCK_LIST_INIT
Dieser Funktionsbaustein wird verwendet, um den Standard-GUI-Status usw. festzulegen. Die Parameter ähneln denen, die in reuse_alv_list_display oder reuse_alv_grid_display verwendet werden
REUSE_ALV_BLOCK_LIST_APPEND
Dieser Funktionsbaustein fügt die Daten dem Block hinzu.
Wichtige Parameter
1.Exportieren:
- is_layout: Layouteinstellungen für Block
- it_fieldcat: Feldkatalog
- I_tabname: Interner Tabellenname mit allen möglichen Ereignissen
2. Tabellen:
- t_outtab: interne Tabelle mit Ausgabedaten.
REUSE_ALV_BLOCK_LIST_DISPLAY
Dieser Funktionsbaustein zeigt die Liste mit den durch die obige Funktion angehängten Daten an.
Parameter: Alle Parameter sind optional.
Hierarchische Berichte
Die hierarchische Anzeige wird zum Anzeigen verwandter Daten verwendet. Wie Verkaufsauftrags- und Artikeldetails. Hier können Verkaufsauftragsdetails die Kopfdaten sein, während die Artikel im Verkaufsauftrag die Artikeldaten sein können.
Der hierfür verwendete Funktionsbaustein ist
REUSE_ALV_HIERSEQ_LIST_DISPLAY
Exporte:
- I_CALLBACK_PROGRAM
- I_CALLBACK_PF_STATUS_SET
- I_CALLBACK_USER_COMMAND
- IS_LAYOUT
- It_fieldcat
- It_events
- I_tabname_header: Name der internen Tabelle im Programm, die die Ausgabedaten der höchsten Hierarchieebene enthält.
- I_tabname_item: Name der internen Tabelle im Programm, die die Ausgabedaten der untersten Hierarchieebene enthält.
- Is_keyinfo: Diese Struktur enthält die Feldnamen der Kopf- und Elementtabelle, die die beiden Tabellen verbinden (gemeinsamer Schlüssel).
Tische
- t_outtab_header: Header-Tabelle mit auszugebenden Daten
- t_outtab_item: Name der internen Tabelle im Programm, die die Ausgabedaten der untersten Hierarchieebene enthält.
Alle Definitionen interner Tabellen, Strukturen und Konstanten werden in einem Typpool namens deklariert SLIS. Diese interne Tabelle kann mithilfe von REUSE_ALV_FIELDCATALOG_MERGE automatisch gefüllt werden.
Varianten anzeigen
- Mithilfe von Anzeigevarianten werden die Standardeigenschaften einer ALV-Ausgabe wie Sortierkriterien, Filterkriterien, Summierung und Zwischensumme usw. festgelegt
- Anzeigevarianten können benutzerspezifisch und standardmäßig sein (Standardvarianten können von jedem Benutzer verwendet werden)
- Die Art der speicherbaren Anzeigevarianten wird durch den Parameter i_save gesteuert, der den Funktionsbausteinen reuse_alv_list_display / reuse_alv_grid_display übergeben wird.
- Sie können auf dem Selektionsbild eine Option zur Auswahl der zu verwendenden Anzeigevariante bereitstellen
Die allgemeinen Funktionsmodule im Zusammenhang mit der Auswahl/Validierung von Anzeigevarianten sind:
- Reuse_alv_variant_default_get
- Reuse_alv_variant_f4
- Reuse_alv_variant_existence
💡 Tipp: Setzen Sie I_SAVE auf 'U', um nur benutzerdefinierte Varianten zuzulassen, auf 'X' für nur Standardvarianten und auf 'A' für beides. Ein leerer Wert verhindert das Speichern vollständig.
Das ist alles ABAP – ALV-Programmierung!
