Ansicht
Dokumentation

ABAPCREATE_DATA_AREA_HANDLE - CREATE DATA AREA HANDLE

ABAPCREATE_DATA_AREA_HANDLE - CREATE DATA AREA HANDLE

RFUMSV00 - Advance Return for Tax on Sales/Purchases   BAL_S_LOG - Application Log: Log header data  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

CREATE DATA, AREA HANDLE

Kurzreferenz



CREATE DATA dref AREA HANDLE handle ...

Wirkung

Diese Anweisung legt ein anonymes Datenobjekt als Shared Object in der Gebietsinstanzversion des Shared Memory an, an die das von handle referenzierte Gebietshandle angebunden ist.

Für handle muss eine Objektreferenzvariable angegeben werden, deren statischer Typ CL_ABAP_MEMORY_AREA oder eine ihrer Unterklassen (Gebietsklasse) ist. Bei Ausführung der Anweisung muss handle auf ein Gebietshandle zeigen und das Gebietshandle muss mit einer Änderungssperre an eine Gebietsinstanzversion angebunden sein. Zur Erstellung einer solchen Referenz gibt es folgende Möglichkeiten:

  • Übernahme des Rückgabewerts der Methode GET_HANDLE_BY_... einer beliebigen Gebietsklasse.
  • Übernahme des Rückgabewerts der Methode GET_IMODE_HANDLE der vordefinierten Klasse CL_IMODE_AREA.

Letzteres ist eine Referenz auf ein Gebietshandle für den aktuellen internen Modus und die Anweisung CREATE DATA wirkt wie ohne den Zusatz AREA HANDLE.

Einschränkungen

Die Erzeugung anonymer Datenobjekte als Shared Objects unterliegt folgenden Einschränkungen für Datenreferenzen im Shared Objects Memory: Die Ablage von Datenreferenzen in abgeschlossenen Gebietsinstanzversionen des Shared Objects Memory ist auf solche dynamischen Typen beschränkt, die beim Laden eines Programms in eine interne Sitzung bekannt sind.

Deshalb können folgende Datentypen nicht zur Erzeugung anonymer Datenobjekte im Shared Objects Memory verwendet werden, wenn diese in einer abgeschlossenen Gebietsinstanzversion erhalten bleiben sollen:

  1. Alle Datentypen, die in einem mit GENERATE SUBROUTINE POOL erzeugten temporären Subroutinen-Pool erzeugt werden.
  2. Zur Programmlaufzeit mit Methoden der RTTC dynamisch erzeugte Datentypen.
  3. Zur Programmlaufzeit erzeugte gebundene Datentypen anonymer Datenobjekte, denen während deren Erzeugung mit CREATE DATA eine dynamische Länge zugewiesen wurde.
  4. Zur Programmlaufzeit erzeugte gebundene Datentypen anonymer Datenobjekte, denen während deren Erzeugung mit CREATE DATA ein dynamischer Typ zugewiesen wurde, der eine Längenangabe benötigt.

Zu den Punkten 3 und 4 zählt insbesondere auch die Anweisung CREATE DATA mit dem Zusatz AREA HANDLE selbst. Ausnahmen für die unter den Punkten 2 bis 4 aufgeführten Einschränkungen sind:

  • Die Einschränkungen gelten nicht für den Datentyp p.
  • Die Einschränkungen gelten nicht für die Datentypen c, n und x, solange der Speicherbedarf maximal 100 Bytes beträgt.

Wenn eine im Shared Objects Memory abgelegte Datenreferenzvariable auf ein anonymes Datenobjekt eines dynamischen Typs verweist, der den Einschränkungen unterliegt, kommt es bei Ausführung der DETACH_COMMIT-Methode zur Ausnahme der Klasse CX_SHM_EXTERNAL_TYPE.

Uneingeschränkt verwendet werden können:

  • Alle sichtbaren Datentypen globaler Interfaces und Klassen.
  • Datenelemente, DDIC-Strukturen, DDIC-Datenbanktabellen und DDIC-Tabellentypen des ABAP Dictionary.
  • Datentypen aus Typgruppen.
  • Zur Programmlaufzeit erzeugte gebundene Datentypen anonymer Datenobjekte, denen während deren Erzeugung mit CREATE DATA ein statischer Typ mit einer statischen Länge zugewiesen wurde.
  • Zur Programmlaufzeit erzeugte gebundene Datentypen anonymer Datenobjekte, denen während deren Erzeugung mit CREATE DATA ein voll spezifizierter dynamischer Typ zugewiesen wurde.
  • Alle statisch im gleichen Programm mit deklarativen Anweisungen erzeugten Datentypen, wobei aber zu beachten ist, dass nach jeder Änderung des erzeugenden Programms nicht mehr auf bestehende Gebietsinstanzen zugegriffen werden kann.

Die Zusätze REF TO und TABLE OF können verwendet werden, solange die angegebenen Typen obigen Anforderungen genügen. Dies gilt auch für den Zusatz HANDLE, d.h. das Typbeschreibungsobjekt muss mit Methoden der RTTI aus erlaubten Typen erzeugt worden sein.

Hinweise

  • Das einzige Shared Object, das direkt nach einer Anbindung einer Gebietsinstanzversion aus einem ABAP-Programm adressiert werden kann, ist die Instanz der Gebietswurzelklasse. Alle anderen Objekte müssen in dieser Instanz referenziert werden. Insbesondere ist also kein direkter Zugriff auf anonyme Datenobjekte möglich. Statt dessen muss die Instanz der Gebietswurzelklasse Referenzen auf diese enthalten, welche auch indirekt sein können.
  • Es wird empfohlen, zusammen mit AREA HANDLE nur globale Datentypen zu verwenden. Als zeitweiser Ersatz für den direkten Bezug auf Datenelemente und Tabellentypen des ABAP Dictionary können entsprechende Typen in globalen Interfaces, Klassen oder auch noch in Typgruppen angelegt werden.

Beispiel

Erzeugung einer anonymen Struktur in einer Gebietsinstanzversion des Gebiets CL_DEMO_AREA.

Datenobjekt als Shared Object erzeugen

Ausnahmen

Behandelbare Ausnahmen

CX_SHM_WRONG_HANDLE

  • Ursache: Das Gebietshandle hält keine Änderungssperre

CX_SHM_ALREADY_DETACHED

  • Ursache: Das Gebietshandle ist nicht an eine Gebietsinstanzversion angebunden

CX_SHM_OUT_OF_MEMORY

  • Ursache: Es ist nicht genügend Speicher vorhanden





BAL Application Log Documentation   BAL Application Log Documentation  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 8979 Date: 20240427 Time: 034223     sap01-206 ( 105 ms )