Ansicht
Dokumentation

ABENSHM_OVIEW - SHM OVIEW

ABENSHM_OVIEW - SHM OVIEW

CL_GUI_FRONTEND_SERVICES - Frontend Services   ABAP Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- Übersicht

Shared Objects sind Instanzen von Klassen oder anonyme Datenobjekte im Shared Memory. Benannte Datenobjekte können als Attribute von Klassen abgelegt werden. Der Speicherbereich des Shared Memory für Shared Objects ist das Shared Objects Memory, dessen Größe durch den Profilparameter abap/shared_objects_size_MB bestimmt wird.

Die Verwaltung von Shared Objects erfolgt mit Hilfe sogenannter Gebiete. Gebiete und ihre Eigenschaften werden mit der Transaktion SHMA angelegt und gepflegt.

Shared-Memory-fähige Klassen

Voraussetzung für die Ablage einer Instanz einer Klasse im Shared Memory ist, dass die Klasse des Objekts mit dem Zusatz SHARED MEMORY ENABLED der Anweisung CLASS definiert bzw. dass im Class Builder die Eigenschaft Shared-Memory-fähig markiert ist. Jedes Gebiet ist mit einer globalen Gebietswurzelklasse verknüpft, die in ihren Attributen eigene Daten und Referenzen auf andere Instanzen Shared-Memory-fähiger Klassen oder auf anonyme Datenobjekte enthalten kann.

Gebiete und Gebietsinstanzen

Ein Gebiet ist die Vorlage für Gebietsinstanzen im Shared Memory. Von einem Gebiet können mehrere Gebietsinstanzen angelegt werden, die sich durch ihre Namen unterscheiden. Weiterhin kann es von einer Gebietsinstanz mehrere Versionen (Gebietsinstanzversionen) geben, die sich durch eine Versionskennung unterscheiden. Alle Gebietsinstanzversionen des gleichen Gebietsinstanznamens bilden eine Gebietsinstanz. Im einfachsten Fall (ohne Versionierung) besteht eine Gebietsinstanz aus einer einzigen Gebietsinstanzversion.

Gebietsklassen und Gebietshandles

Beim Definieren eines Gebiets mit der Transaktion SHMA wird eine gleichnamige globale und finale Gebietsklasse als Unterklasse von CL_SHM_AREA generiert. Die Klasse CL_SHM_AREA ist selbst direkte Unterklasse von CL_ABAP_MEMORY_AREA. In einem ABAP-Programm erfolgt der Zugriff auf ein Gebiet ausschließlich über die Methoden der generierten Gebietsklasse. Es gibt statische Methoden zum Anbinden eines ABAP-Programms (bzw. dessen interner Sitzung) an Gebietsinstanzen im Shared Memory (Attach-Methoden). Beim Anbinden wird eine Instanz der Gebietsklasse als Gebietshandle erzeugt und gleichzeitig eine Gebietssperre gesetzt. Das ABAP-Programm kann über das Gebietshandle auf die angebundene Gebietsinstanzversion und damit auf die dort abgelegten Shared Objects zugreifen. Das Gebietshandle enthält auch die Methoden zum Lösen der Verbindung bzw. der Sperre (Detach-Methoden).

Zugriff auf Objekte

Die Shared Objects in einer Gebietsinstanzversion werden durch Referenzen adressiert, die man sich über das Gebietshandle besorgt. Die Shared Objects innerhalb einer Gebietsinstanzversion können unbeschränkt aufeinander verweisen. Ein ABAP-Programm kann Referenzen auf Shared Objects enthalten, solange es an eine Gebietsinstanzversion angebunden ist. Gebietsinstanzversionen selbst sind dahingehend in sich abgeschlossen, dass sie keine Referenzen in andere Gebietsinstanzversionen oder in eine interne Sitzung enthalten können. Eine Ausnahme von dieser Regel besteht nur solange, wie eine Gebietsinstanz zum Schreiben oder Aktualisieren an eine interne Sitzung angebunden ist. Während dieser Zeit können in der Gebietsinstanz Referenzen auf Objekte im internen Modus oder in anderen, ebenfalls angebundenen, Gebietsinstanzen bestehen.

Hinweis

Gebietsinstanzen bzw. Gebietsinstanzversionen dürfen nicht mit Instanzen von Klassen verwechselt werden. Insbesondere ist eine Gebietsinstanz keine Instanz einer Gebietsklasse. Gebietsinstanzen sind verwaltete Bereiche (die eigentlichen Gebiete) im Shared Memory, in denen Shared Objects abgelegt und die von Gebietshandles adressiert werden können.






BAL Application Log Documentation   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 5427 Date: 20240523 Time: 093434     sap01-206 ( 99 ms )