Ansicht
Dokumentation

ABAPINCLUDE_TYPE - INCLUDE TYPE

ABAPINCLUDE_TYPE - INCLUDE TYPE

BAL_S_LOG - Application Log: Log header data   General Data in Customer Master  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

INCLUDE, TYPE, STRUCTURE

Kurzreferenz



Syntax

INCLUDE { {TYPE struc_type} | {STRUCTURE struc} }
        [AS name [RENAMING WITH SUFFIX suffix]].


Zusätze:

1. ... AS name

2. ... RENAMING WITH SUFFIX suffix

Wirkung

Diese Anweisung darf nur innerhalb einer Strukturdefinition mit den Zusätzen BEGIN OF und END OF der Anweisungen TYPES, DATA, CLASS-DATA und STATICS ausgeführt werden. Sie übernimmt sämtliche Komponenten eines strukturierten Typs an der gegebenen Stelle in die aktuelle Strukturdefinition. Der strukturierte Typ kann wie folgt angegeben werden:

  • Als an dieser Stelle sicht- und verwendbarer strukturierter Datentyp struc_type hinter TYPE. struc_type kann ein programmlokaler strukturierter Typ, ein sichtbarer strukturierter Typ einer globalen Klasse oder eines globalen Interfaces oder eine Struktur aus dem ABAP Dictionary sein.
  • Als an dieser Stelle sichtbares strukturiertes Datenobjekt struc hinter STRUCTURE. Es wird dessen strukturierter Datentyp verwendet. struc muss eine Struktur des gleichen Programms oder eine sichtbares Attribut einer globalen Klasse oder eines globalen Interfaces sein.

Die INCLUDE-Anweisung erzeugt keine Unterstruktur, d.h., die Komponenten werden so eingefügt, als würden sie an Stelle der Anweisung INCLUDE einzeln aufgeführt.

Hinweise

  • Die hier beschriebene Anweisung INCLUDE sollte aus folgenden Gründen nicht mehr verwendet werden:
  • Wenn mit der Anweisung INCLUDE bestehende Komponenten um zusätzliche Strukturkomponenten ergänzt werden oder wenn mehrere INCLUDE-Anweisungen in einer Struktur verwendet werden, können Syntaxfehler durch Namenskonflikte entstehen. Dies ist besonders problematisch, wenn Strukturen eingebunden werden, die nicht im gleichen Programm definiert sind und diese nachträglich verändert werden.

  • Die eingebundenen Strukturen können nicht uneingeschränkt als solche adressiert werden.

  • Die notwendigen Metainformationen werden für jede Komponente einer eingebundenen Struktur erneut abgelegt, wogegen die Metainformationen für die Komponenten einer Unterstruktur nur einmal bei der Definition der Unterstruktur abgelegt sind.

  • Mit INCLUDE eingebundene Strukturen können im Gegensatz zu echten Unterstrukturen nicht beim Einbinden als statische Boxen deklariert werden.

Statt der Anweisung INCLUDE sollten deshalb wenn möglich echte Unterstrukturen gebildet werden. Zumindest sollte aber Zusatz RENAMING WITH SUFFIX zur Vermeidung von Namenskonflikten verwendet werden. Diese Empfehlung gilt analog auch für das Einbinden von Strukturen im ABAP Dictionary, wo insbesondere die Strukturen von Datenbanktabellen keine echten Unterstrukturen enthalten können.
  • Der Zusatz TYPE dient wie üblich der Angabe eines Datentyps. Der Zusatz STRUCTURE dient wie der Zusatz LIKE zur Angabe eines Datenobjekts. Außerhalb von ABAP Objects können für struc beim Zusatz STRUCTURE auch noch flache Strukturen, Datenbanktabellen oder Views des ABAP Dictionarys angegeben werden.
  • In mit CONSTANTS deklarierten konstanten Strukturen können mit INCLUDE keine Komponenten eingebunden werden, da diesen keine Startwerte zugewiesen werden könnten.
  • Bezüglich ihrer Ausrichtung verhalten sich mit INCLUDE eingebundene Strukturen wie Unterstrukturen, d.h. es können Ausrichtungslücken vor der ersten bzw. hinter der letzten Komponente auftreten, die nicht auftreten, wenn die Komponenten direkt deklariert werden.
  • Eine mit INCLUDE eingebundene Struktur wird von der Methode GET_COMPONENTS der Klasse CL_ABAP_STRUCTDESCR der RTTI wie eine Unterstruktur behandelt. Die zurück gegebene Komponententabelle enthält für eine eingebundene Struktur nur eine Zeile, der Komponententyp wird durch ein Objekt von CL_ABAP_STRUCTDESCR dargestellt aber die Spalte AS_INCLUDE enthält den Wert "X". Um die Komponenten eingebundener Strukturen aufzulösen kann die Methode GET_INCLUDED_VIEW_TAB verwendet werden.
  • Bei Übernahme einer statischen Box aus einer Struktur in eine andere Struktur wird sie in ihrer Eigenschaft als Boxed Component übernommen.

Zusatz 1

... AS name

Wirkung

Durch die Angabe eines Namens name hinter dem Zusatz AS werden die Komponenten der eingebundenen Struktur struc_type bzw. struc zu einem Komponentengruppe (auch benanntes Include genannt). Neben der normalen Adressierung über den Namen der einbindenden Struktur können sie entweder gemeinsam über den Namen name adressiert werden oder einzelne Komponenten mit Hilfe des Strukturkomponentenselektors (name-). Der Name name muss innerhalb der Struktur, in welche die Komponenten eingebunden werden, eindeutig sein. D.h. es darf keine andere Komponente dieses Namens geben und er darf nicht in einer anderen INCLUDE-Anweisung hinter AS angegeben sein.

Hinweise

  • Eingebundene Komponenten, für die ein Name hinter AS angegeben ist, können genauso angesprochen werden, wie wenn sie Komponenten einer Unterstruktur name wären.
  • Ein mit AS name angegebener Name name dient nur einer zusätzlichen expliziten Adressierungsmöglichkeit und wird von einer impliziten Adressierung in Anweisungen wie MOVE-CORRESPONDING oder SELECT INTO CORRESPONDING nicht berücksichtigt. Eine mit RENAMING WITH SUFFIX umbenannte Komponente hat dagegen wirklich diesen Namen und wird entsprechend immer berücksichtigt.

Zusatz 2

... RENAMING WITH SUFFIX suffix

Wirkung

Mit dem Zusatz RENAMING WITH SUFFIX wird jede einzelne Komponente durch das Anhängen der Endung suffix umbenannt, wodurch Namenskonflikte zwischen gleichnamigen Komponenten verhindert werden können. suffix muss direkt angegeben werden.

Hinweise

  • Die Verwendung des Zusatzes RENAMING WITH SUFFIX erlaubt es insbesondere, eine einzige Struktur mehrmals einzubinden.
  • Eine Umbenennung der Komponenten von eingebundenen Strukturen kann Fehler beim Upgrade dieser Strukturen vermeiden.

In diesem Beispiel wird die Struktur week durch wiederholte Übernahme der Komponenten des strukturierten Typs t_day definiert. Die Komponenten von week liegen alle auf einer Ebene und lassen sich wie folgt ansprechen: week-work_mon, week-free_mon, week-work_tue, und so weiter. Sie lassen sich alternativ wie folgt ansprechen: week-monday-work, week-monday-free, week-tuesday-work usw.








CPI1466 during Backup   SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 10554 Date: 20240328 Time: 150649     sap01-206 ( 169 ms )