ALV-Berichte in SAP Tutorial – ABAP List Viewer
Die allgemein gewünschten Funktionen eines jeden Berichts sind „Spaltenausrichtung“, Sortierung, Filterung, Zwischensummen, Summen usw. Um diese von Grund auf zu implementieren, ist ein hoher Programmieraufwand erforderlich. Um dies zu vermeiden, können wir ein Konzept namens ABAP List Viewer (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 –
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 Bausteinliste 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 kann keine großen Datenmengen verarbeiten. Funktionen wie Sortieren und Herunterscrollen verbrauchen viele Ressourcen/Zeit, wenn das anzuzeigende Datenvolumen groß ist. Es gibt keine eindeutige Definition, ob bei einer Datenmenge von X eine Liste oder ein Grid verwendet werden soll, aber der Entwickler muss eine Entscheidung auf Grundlage seiner Erfahrung treffen. Wenn Sie sich nicht sicher sind, ist eine Liste die bessere Option.
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
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)
- Welche Anzeigevarianten gespeichert werden können, wird durch den Parameter i_save gesteuert, der in 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
Das ist alles ABAP – ALV-Programmierung!