Show TOC Anfang des Inhaltsbereichs

Komponentendokumentation Referenzen  Dokument im Navigationsbaum lokalisieren

Auf Objekte in Gebietsinstanzversionen kann nur über Referenzen zugegriffen werden.

Voraussetzung für den Zugriff auf Objekte in Gebietsinstanzen des Shared Memory aus einem ABAP-Programm ist, dass über das Anbinden eines Gebietshandles an die Gebietsinstanz eine passende Sperre gesetzt wurde.

Für den initialen Zugriff auf die Objekte einer Gebietsinstanzversion dient das Wurzelobjekt, das weitere Objekte referenzieren kann.

Nur in der Zeit, in der in einem Programm ein Gebietshandle für eine Gebietsinstanzversion besteht, können Referenzen aus der Gebietsinstanzversion auf Objekte des Programms bestehen und Objekte der Gebietsinstanzversion im Programm verwendet werden. In dieser Zeit kann wie üblich mit den Referenzen gearbeitet werden, mit der Einschränkung, dass die Art der Sperre bestimmt, ob die referenzierten Objekte der Gebietsinstanzversion geändert werden können oder nicht. Wenn lesend oder ändernd auf den Inhalt eines Objekts der Gebietsinstanzversion zugegriffen wird, obwohl keine entsprechende Sperre besteht, kommt es zu einem Laufzeitfehler.

Gebietsinstanzversionen, an die keine Gebietshandles angebunden sind, sind in sich abgeschlossen. Wenn nach ändernden Zugriffen die Sperre mit der Methode DETACH_COMMIT des Gebietshandles freigegeben wird, dürfen aus einer Gebietsinstanzversion keine Referenzen nach außen zeigen. Nach der Methode DETACH_COMMIT kann über Referenzen, die von außerhalb auf Objekte der Gebietsinstanzversion zeigen, nicht mehr auf die entsprechenden Objekte zugegriffen werden.

Vor Release 7.0 waren innerhalb einer abgeschlossenen Gebietsinstanzversion nur Objektreferenzen, seit Release 7.0 sind auch Datenreferenzen möglich. Die Datenreferenzen können über Zuweisungen, GET REFERENCE oder CREATE DATA dref AREA HANDLE erzeugt werden. Dabei gilt die Einschränkung, dass die dynamischen Typen der Datenreferenzen nicht dynamisch zur Programmlaufzeit erzeugt worden sein dürfen. Nicht verwendbar sind zur Zeit:

     Datentypen, die mit Methoden der RTTC dynamisch erzeugt wurden, und gebundene Datentypen anonymer Datenobjekte, die erst während deren Erzeugung mit CREATE DATA definiert wurden.

     Datentypen, die in einem mit GENERATE SUBROUTINE POOL erzeugten temporären Subroutinen-Pool erzeugt werden.

Die Möglichkeit von Datenreferenzen innerhalb einer abgeschlossenen Gebietsinstanzversion ermöglicht seit Release 7.0 das Ablegen anonymer Datenobjekte als Shared Objects.

Hinweis

Mit den statischen Methoden GET_HANDLE_BY_OREF, GET_HANDLE_BY_DREF (ab Release 7.0) und GET_HANDLE_BY_DATA (ab Release 7.0) kann man sich eine Referenz auf das Gebietshandle eines Objekts besorgen. Der entsprechende Rückgabewert ist vom Typ CL_ABAP_MEMORY_AREA, weshalb eine solche Referenz im Wesentlichen nur zur Verwendung beim Erzeugen von Objekten geeignet ist.

Ende des Inhaltsbereichs