DATA … RENAMING WITH SUFFIX
Häufig möchte man eine interne Tabelle definieren, die alle Felder aus zwei Dictionarytabellen besitzt. Das ist natürlich möglich. Diese Dictionary-Struktur heißt ZMARAMARC:
DATA gt_data TYPE STANDARD TABLE OF zmaramarc.
DATA gs_data TYPE zmaramarc.
Mit dieser Definition erzeugt man eine Tabelle mit zwei Strukturen. Die Felder werden über den Strukturnamen angesprochen: gs_data-mara-matnr.
Problem
Diese Datenstruktur macht bei der Verwendung in ALVs Probleme, da der Feldkatalog nicht korrekt erzeugt werden kann: Doppelte Feldnamen werden ignoriert Eine Ausnahme bildet das SALV-Model cl_salv_table. Diese Klasse kann mit der Datenstruktur umgehen. Die normalen ALVs haben jedoch Probleme, weil es keine einzelnen Feldnamen gibt.
Lösung
SAP bietet den INCLUDE-Zusatz RENAMING WITH SUFFIX an. Mithilfe dieses Zusatzes ist es einerseits möglich, die Struktur zu behalten und andererseits auch eindeutige Feldnamen zu haben:
TYPES BEGIN OF ty_data.
INCLUDE TYPE mara AS mara RENAMING WITH SUFFIX mara.
INCLUDE TYPE marc AS marc RENAMING WITH SUFFIX marc.
TYPES END OF ty_data.
Die Felder können also weiterhin über die Struktur angesprochen werden: gs_data-mara-matnr. Es werden jedoch auch eindeutige Feldname erzeugt, indem jedem Feldnamen der Suffix angehängt wird: gs_data-matnrmara.
Im Dictionary heißt die Option allerdings nicht “SUFFIX”, sondern Gruppe und ist nur verfügbar, wenn die Komponenten per INCLUDE eingebunden werden:
Nebeneffekt
Bei beiden Versionen der Datendefinition ist es übrigens möglich, die komplette Tabelle mittels JOIN zu füllen:
SELECT * FROM mara
INNER JOIN marc ON marc~matnr = mara~matnr
INTO TABLE gt_data.
Sind in der MARC mehrere Sätze zu einem Material vorhanden, so wird die Struktur MARA jedesmal korrekt gefüllt. Die MARA-Daten sind dann zwar mehrfach vorhanden, aber die Verarbeitungslogik wird dadurch eventuell einfacher.
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024