Ansicht
Dokumentation

ABENINCLUDING_STRUCTURES_GUIDL - INCLUDING STRUCTURES GUIDL

ABENINCLUDING_STRUCTURES_GUIDL - INCLUDING STRUCTURES GUIDL

RFUMSV00 - Advance Return for Tax on Sales/Purchases   SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Einbindung von Strukturen

Bei der programminternen Konstruktion von Strukturen mit den Zusätzen BEGIN OF und END OF der Anweisungen TYPES und DATA können die Anweisungen INCLUDE TYPE bzw. INCLUDE STRUCTURE dazu verwendet werden, um sämtliche Komponenten einer anderen Struktur an dieser Stelle in die aktuelle Struktur einzubinden, ohne eine eigene Unterstruktur zu bilden. Dabei können ein Name für die gemeinsame Adressierung und ein Suffix für die Vermeidung von Namenskonflikten angegeben werden. Das ABAP Dictionary bietet die gleiche Funktionalität an.

Unterstrukturen werden dagegen dadurch gebildet, dass die Komponenten einer Struktur selbst strukturiert sind. Eine Struktur mit Unterstrukturen ist eine geschachtelte Struktur.

Keine Komponenten von Strukturen einbinden

Binden Sie bei der Deklaration einer Struktur die Komponenten anderer Strukturen nicht über INCLUDE ein. Falls benötigt, sollen die Komponenten in eine echte Unterstruktur übernommen werden.

Die Gründe für diese Regel sind:

  • Die Einbindung von Komponenten birgt die Gefahr von Namenskonflikten. Dies ist besonders problematisch, wenn Strukturen anderer Kontexte eingebunden und diese nachträglich verändert werden.
  • Die eingebundenen Strukturen können trotz der möglichen Vergabe eines Namens nicht uneingeschränkt als solche adressiert werden. Die notwendigen internen Typinformationen werden für jede eingebundene Komponente einzeln abgelegt, wohingegen sie für die Komponenten einer Unterstruktur nur einmal für die Unterstruktur abgelegt sind.
  • Mit INCLUDE eingebundene Strukturen können im Gegensatz zu echten Unterstrukturen nicht als Boxed Components deklariert werden. Eine Boxed Component ist eine strukturierte Komponente, die durch eine interne Referenz verwaltet wird und dadurch das Initialwert-Sharing unterstützt, was für selten gefüllte Komponenten erhebliche Einsparungen an Speicherbedarf bewirken kann.
  • Die Anweisung unterbricht einen mit BEGIN OF und END OF gebildeten Kettensatz.

Können keine echten Unterstrukturen gebildet werden, müssen Namenskonflikte wenigstens so weit wie möglich durch Suffixe verhindert werden (Zusatz RENAMING WITH SUFFIX). Diese Empfehlung gilt auch für die Einbindung von Strukturen im ABAP Dictionary, in dem die Bildung echter Unterstrukturen nicht immer möglich ist (zum Beispiel bei Datenbanktabellen).

Folgender Quelltext zeigt die nach obiger Regel unerwünschte Einbindung der Komponenten einer Struktur in eine andere Struktur.

TYPES:
  BEGIN OF structure_1,
  ...
  END OF structure_1.
TYPES:
  BEGIN OF structure_2,
  ...
  INCLUDE TYPE structure_1 AS sub_structure.
TYPES:
    ...
  END OF structure_2.

Folgender Quelltext zeigt die nach soeben erwähnter Regel empfohlene Deklaration einer Komponente einer Struktur als Unterstruktur.

TYPES:
  BEGIN OF structure_1,
   ...
  END OF structure_1.
TYPES:
  BEGIN OF structure_2,
    ...
    sub_structure TYPE structure_1.
    ...
END OF structure_2.






Fill RESBD Structure from EBP Component Structure   CPI1466 during Backup  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 3979 Date: 20240523 Time: 180451     sap01-206 ( 64 ms )