REUSE_ALV_GRID_DISPLAY: Step by Step
In dem Blogartikel REUSE_ALV_GRID_DISPLAY, CL_GUI_ALV_GRID oder CL_SALV_TABLE? Was denn nun? habe ich die drei verschiedenen Möglichkeit vorgestellt in SAP ALVs zu erstellen. Die Variante REUSE_ALV_GRID_DISPLAY ist die älteste und basiert als einzige noch auf Funktionsbausteinen (FuBas). Da diese Variante aber noch häufig in bestehenden Entwicklungen existiert, möchte ich Ihnen in diesem Blogartikel die wesentlichen FuBas, deren Variablen und deren Verwendung näher bringen.
Wesentliche Funktionsbausteine mit Variablen und Verwendung
Der wichtigste FuBa ist der Name der Variante selbst: REUSE_ALV_GRID_DISPLAY. Als Inputparameter sollte immer der Name der Struktur und natürlich die Daten selbst übergeben werde. Genau wie in diesem Bild mit dem Beispiel “SBOOK”:
Die Struktur gibt dabei an, welches Format die übertragenden Daten haben. Ob es zum Beispiel ein Datums- oder Textfeld ist.
Der FuBa REUSE_ALV_FIELDCATALOG_MERGE wird dazu verwendet, um die angezeigten Felder des ALVs anzupassen. Dazu wird ein Feldkatalog vom Typ SLIS_T_FIELDCAT_ALV erzeugt indem einfach wieder der Strukturname übergeben wird:
Für jede Spalte der Struktur SBOOK gibt es einen Eintrag in der Tabelle lt_fieldcat. Diese Einträge können entfernt oder angepasst werden. So kann definiert werden, welche Spalten wirklich angezeigt oder ob Spalten z.B. als Checkbox (checkbox = ‘X’) angezeigt werden sollen.
Statt der Strukturname kann dann einfach der Feldkatalog an den FuBa REUSE_ALV_GRID_DISPLAY übergeben werden:
Ein weiterer wichtiger FuBa ist REUSE_ALV_EVENTS_GET. Dieser FuBa gibt alle möglichen Events des ALVs zurück, so dass diesen Events bei Bedarf ein Eventhandler, in diesem Fall eine Formroutine, hinzugefügt werden kann. Die Tabelle SBOOK beinhaltet alle Buchungen zu einem Flug. Bei Auswahl einer Zeile sollen z.B. detaillierte Kundendaten aus der Tabelle SCUSTOM angezeigt werden. Dazu kann das Event USER_COMMAND genutzt werden. Dazu muss der FuBa ausgeführt werden und dann dem Event eine Formroutinezugewiesen werden:
Wichtig ist hierbei, dass das Programm übergeben werden muss, in dem die Formroutine enthalten ist. In diesem Fall ist es in dem gleichen Programm, also sy-repid.
Mit diesem Überblick über REUSE_ALV_GRID_DISPLAY sind Sie nun in der Lage bestehende Entwicklungen anzupassen oder diese Variante selbst zu verwenden. Wenn Sie aber noch vorhaben ein eigenes ALV zu bauen, empfehle ich Ihnen auf jeden Fall einen der beiden objektorientierten Ansätze zu wählen. Wenn möglich: CL_SALV_TABLE. Detailliertere Blogbeiträge dazu folgen in Kürze.
Haben Sie noch Interesse mehr über diese Variante zu erfahren? Dann schreiben Sie Ihre Fragen doch einfach in den Kommentar!