ABAPCREATE_DATA_AREA_HANDLE - CREATE DATA AREA HANDLE
rdisp/max_wprun_time - Maximum work process run time rdisp/max_wprun_time - Maximum work process run timeDiese Dokumentation steht unter dem Copyright der SAP AG.
CREATE DATA - AREA HANDLE
Syntax
CREATE DATA dref AREA HANDLE handle ... .
Wirkung
Diese Anweisung legt ein anonymes Datenobjekt alsShared Object in derGebietsinstanzversion desShared Memory an, an die das von handle referenzierteGebietshandle 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 einGebietshandlezeigen 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 Methoden ATTACH_FOR_WRITE oder ATTACH_FOR_UPDATE einer mit der Transaktion SHMA erzeugten Gebietsklasse.
- Übernahme des Rückgabewerts der Methode GET_HANDLE_BY_OREF 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 aktuelleninternen 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 abgeschlossenenGebietsinstanzversionen des Shared Objects Memory ist auf solchedynamischen Typen beschränkt, die beim Laden eines Programms in einen internen Modus bekannt sind.
Deshalb können folgende Datentypen nicht zur Erzeugung anonymer Datenobjekte im Shared Object Memory verwendet werden, wenn diese in einer abgeschlossenen Gebietsinstanzversion erhalten bleiben sollen:
- Alle Datentypen, die in einem mit GENERATE SUBROUTINE POOL erzeugten temporären Subroutinen-Pool erzeugt werden.
- Zur Programmlaufzeit mit Methoden der RTTC dynamisch erzeugte Datentypen.
- Zur Programmlaufzeit erzeugte gebundene Datentypen anonymer Datenobjekte, denen während deren Erzeugung mit CREATE DATA eine dynamische Länge zugewiesen wurde.
- 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 ZusatzAREA 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 einesdynamischen 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 dagegen:
- Alle sichtbaren Datentypen globaler Interfaces und Klassen.
- Datenelemente, Strukturen, Datenbanktabellen und 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 zubeachten ist, dass nach jeder Änderung des erzeugenden Programms nicht mehr auf bestehende Gebietsinstanzen zugegriffen werden kann.
Die Zusätze REFTO und TABLEOF können verwendet werden, solange die angegebenen Typen obigen Anforderungen genügen.Dies gilt auch für den Zusatz HANDLE, d.h. das Typobjekt muss mit Methoden derRTTI 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 derGebietswurzelklasse.Alle anderen Objekte müssen in dieser Instanz referenziert werden. Insbesondere ist also keinedirekter 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 zeitweiserErsatz 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
Siehe Datenobjekt als Shared Object erzeugen
BAL_S_LOG - Application Log: Log header data Addresses (Business Address Services)
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 7962 Date: 20120526 Time: 193637 triton ( 283 ms )






