Show TOC Anfang des Inhaltsbereichs

Vorgehensweisen Shared Objects - Zugriff auf Gebietsinstanzen  Dokument im Navigationsbaum lokalisieren

 

Shared Objects werden in Gebietsinstanzversionen abgelegt und verwaltet. Der Zugriff auf Gebietsinstanzversionen und damit auf Shared Objects erfolgt in einem ABAP-Programm ausschließlich über Gebietshandles. Gebietshandles sind Instanzen der Gebietsklasse eines Gebiets. Die Eigenschaften einer Gebietsklasse und damit jedes Gebietshandles sind in Abschnitt Shared Objects - Klassen genau beschrieben. Der vorliegende Abschnitt gibt einen Überblick über die Verwendung.

 

Erzeugen von Gebietshandles

Einzelne Gebietshandles werden mit folgenden statischen Methoden der Gebietsklasse erzeugt:

·        ATTACH_FOR_WRITE

·        ATTACH_FOR_UPDATE

·        ATTACH_FOR_READ

Zusätzlich gibt es eine Methode MULTI_ATTACH, um mehrere Gebietshandles auf einmal zu erzeugen.

Die Methoden geben eine Referenz auf das erzeugte Gebietshandle zurück. Jedes Gebietshandle ist genau an eine Gebietsinstanzversion angebunden. Je nach Methode hat diese Gebietsinstanzversion einen Zustand. Das Anbinden eines Gebietshandles an eine Gebietsinstanzversion ist gleichbedeutend mit dem Setzen einer Sperre auf die Gebietsinstanz:

·        ATTACH_FOR_WRITE und ATTACH_FOR_UPDATE erzeugen eine Änderungssperre

·        ATTACH_FOR_READ erzeugt eine Lesesperre

 

Erzeugen von neuen Gebietsinstanzen

Die Methode ATTACH_FOR_WRITE erzeugt, wenn bestehende Sperren dies zulassen, eine neue Gebietsinstanzversion. Durch die Angabe eines Namens lassen sich verschiedene Gebietsinstanzen eines Gebiets mit jeweils eigener Versionierung anlegen. Wenn kein Name angegeben wird, wird als Standardwert der Inhalt der Konstanten CL_SHM_AREA=>DEFAULT_INSTANCE verwendet. Es wird empfohlen, immer mit expliziten und eindeutigen Namen zu arbeiten. Bis zum Lösen der Anbindung kann im Programm ändernd auf die angebundene Gebietsinstanzversion zugegriffen werden.

 

Ändern von Gebietsinstanzen

Die Methode ATTACH_FOR_UPDATE erzeugt, wenn bestehende Sperren dies zulassen,

·        bei Gebieten mit Versionierung eine neue Version als Kopie der aktiven Gebietsinstanzversion oder

·        bindet bei Gebieten ohne Versionierung das Gebietshandle an eine bestehende aktive Gebietsinstanzversion an.

Durch die Angabe eines Namens wird eine Gebietsinstanz ausgewählt. Wenn kein Name angegeben wird, wird als Standardwert der Inhalt der Konstanten CL_SHM_AREA=>DEFAULT_INSTANCE verwendet. Bis zum Lösen der Anbindung kann im Programm ändernd auf die angebundene Gebietsinstanzversion zugegriffen werden.

 

Lesen von Gebietsinstanzen

Die Methode ATTACH_FOR_READ bindet, wenn bestehende Sperren dies zulassen, das Gebietshandle an eine bestehende Gebietsinstanzversion an. Durch die Angabe eines Namens wird eine Gebietsinstanz ausgewählt. Wenn kein Name angegeben wird, wird als Standardwert der Inhalt der Konstanten CL_SHM_AREA=>DEFAULT_INSTANCE verwendet. Bis zum Lösen der Anbindung kann im Programm lesend auf die angebundene Gebietsinstanzversion zugegriffen werden.

 

Inaktivieren von Gebietshandles

Die Anbindung einzelner Gebietshandles wird mit folgenden Instanzmethoden der Gebietsklasse aufgehoben:

·        DETACH

·        DETACH_COMMIT

·        DETACH_ROLLBACK

Zusätzlich gibt es statische Methoden DETACH_AREA und DETACH_ALL_AREAS, um mehrere Anbindungen auf einmal aufzuheben.

Nach dem Aufheben der Anbindung eines Gebietshandles an eine Gebietsinstanzversion ist das Gebietshandle inaktiv und kann nicht mehr verwendet werden. Durch das Aufheben einer Anbindung wird gleichzeitig die entsprechende Sperre gelöst und eventuell der Zustand der betreffenden Gebietsinstanzversion geändert.

·        DETACH hebt eine Lesesperre auf.

·        DETACH_COMMIT hebt eine Änderungssperre mit Bestätigung der gemachten Änderungen auf.

·        DETACH_ROLLBACK hebt eine Änderungssperre ohne Bestätigung der gemachten Änderungen auf.

 

Weitere Methoden

Beim Arbeiten mit Shared Objects werden im wesentlichen die oben erwähnten Methoden der Gebietshandles eingesetzt. Daneben gibt es weitere Methoden für spezielle Anwendungen. Die Transaktion SHMM bietet eine programmunabhängige Benutzungsoberfläche für solche Methoden.

Versionen invalidieren

Mit den Methoden INVALIDATE_INSTANCE oder INVALIDATE_AREA können eine oder mehrere aktive Gebietsinstanzversionen auf den Zustand veraltet gesetzt werden. Dadurch wird verhindert, dass neue Lesesperren für diese Version gesetzt werden, während bestehende Lesesperren erhalten bleiben.

Für eine Applikationsserver-übergreifende Invalidierung von Gebietsinstanzversionen bei transaktionalen Gebieten gibt es die Methoden PROPAGATE_INSTANCE und PROPAGATE_AREA.

Versionen löschen

Mit den Methoden FREE_INSTANCE oder FREE_AREA können eine oder mehrere aktive oder veraltete Gebietsinstanzversionen auf den Zustand verfallen gesetzt werden. Dabei werden alle Lesesperren aufgehoben und es können keine neuen Lesesperren auf diese Versionen gesetzt werden.

Informationen über Gebietsinstanzen

Die Methode GET_INSTANCE_INFOS gibt in einer internen Tabelle Informationen über alle Gebietsinstanzen eines Applikationsserver zurück.

Informationen über Gebietshandles

Die Methoden GET_LOCK_KIND, IS_VALID, IS_ACTIVE_VERSION, HAS_ACTIVE_PROPERTIES und GET_DETACH_INFO (ab Release 7.0) geben Informationen zu Sperren und Zustand eines Gebietshandles zurück.

Expliziter Aufruf des Gebietskonstruktors

Mit der Methode BUILD kann der Gebietskonstruktor eines Gebiets explizit im aktuellen internen Modus aufgerufen werden. Die Methode BUILD stellt einen einheitlichen Mechanismus zum Aufbau von Gebietsinstanzen dar.

 

Ende des Inhaltsbereichs