Show TOC Anfang des Inhaltsbereichs

Funktionsdokumentation Gebietsklasse <area>  Dokument im Navigationsbaum lokalisieren

Gebietsklassen werden beim Anlegen eines gleichnamigen Gebiets <area> mit der Transaktion SHMA als Unterklassen der Klasse CL_SHM_AREA generiert. Die Instanzen von Gebietsklassen sind Gebietshandles für Gebietsinstanzversionen.

Gebietsklassen können im Class Builder angezeigt, dürfen aber nicht geändert werden. Der Aufbau einer Gebietsklasse richtet sich nach der Definition des Gebiets in der Transaktion SHMA. Nach einer Änderung der Eigenschaften eines Gebiets wird die Gebietsklasse gegebenenfalls neu generiert.

 

Statische Attribute

 

AREA_NAME

Konstante vom Typ SHM_AREA_NAME: Enthält den Namen <area> der aktuellen Klasse bzw. des Gebiets.

 

Instanzattribute

 

ROOT

Referenzvariable vom Typ REF TO <area_root_class>, wobei <area_root_class> die Gebietswurzelklasse des Gebiets ist. Dieses Attribut hat die Eigenschaft READ-ONLY und dient dem direkten Lesezugriff auf das Wurzelobjekt einer Gebietsinstanzversion. Ein Zugriff mit der Methode GET_ROOT ist nur in Ausnahmefällen, z.B. bei der generischen Programmierung, nötig.

 

Statische Methoden

 

ATTACH_FOR_READ

Diese Methode erzeugt ein Gebietshandle mit Lesesperre für eine Gebietsinstanzversion und gibt eine Referenz auf das Gebietshandle zurück.

Eingabeparameter

      INST_NAME vom Typ SHM_INST_NAME

Name der Gebietsinstanzversion. Die Angabe des Namens ist optional. Der Standardwert ist der Wert der Konstante CL_SHM_AREA=>DEFAULT_INSTANCE.

      CLIENT vom Typ SHM_CLIENT

Mandantenkennung falls das Gebiet mandantenabhängig ist. Die Angabe der Mandantenkennung ist optional. Der Standardwert ist die Kennung des aktuellen Mandanten.

Rückgabewert

      HANDLE vom Typ REF TO <area>.

Referenz auf das erzeugte Gebietshandle.

Ausnahmen

      CX_SHM_INCONSISTENT

Der Typ eines in der Gebietsinstanz gespeicherten Objekts stimmt nicht mit der Definition des gleichnamigen Objekts im aktuellen Programm überein.

      CX_SHM_NO_ACTIVE_VERSION

Diese Ausnahme tritt in folgenden Fällen auf:

       Die Gebietsinstanzversion ist nicht vorhanden und ein automatischer Aufbau ist nicht möglich, da kein Gebietskonstruktor oder keine verdrängte Version vorliegt (Ausnahmetext: NEITHER_BUILD_NOR_LOAD).

       Die Gebietsinstanzversion ist nicht vorhanden und der Gebietskonstruktor wurde aufgerufen (Ausnahmetext: BUILD_STARTED).

       Die Gebietsinstanzversion ist nicht vorhanden aber der Gebietskonstruktor wird bereits ausgeführt (Ausnahmetext: BUILD_NOT_FINISHED).

       Die Gebietsinstanzversion ist nicht vorhanden und das Laden einer verdrängten Version wurde gestartet (Ausnahmetext: LOAD_STARTED).

       Die Gebietsinstanzversion ist nicht vorhanden aber das Laden einer verdrängten Version wird bereits ausgeführt (Ausnahmetext: LOAD_NOT_FINISHED).

      CX_SHM_READ_LOCK_ACTIVE

Die Gebietsinstanzversion ist bereits im gleichen internen Modus zum Lesen gesperrt.

      CX_SHM_EXCLUSIVE_LOCK_ACTIVE

Diese Ausnahme tritt in folgenden Fällen auf:

       Die Gebietsinstanz unterstützt keine Versionierung und ist bereits zum Ändern gesperrt (Ausnahmetext: LOCKED_BY_ACTIVE_CHANGER).

       Die Gebietsinstanz unterstützt keine Versionierung und ein Änderer wartet auf eine Änderungssperre (Ausnahmetext: LOCKED_BY_PENDING_CHANGER).

       Die Gebietsinstanz ist transaktional, unterstützt keine Versionierung und eine  Änderungssperre wurde freigegeben, aber der Datenbank-Commit ist noch nicht erfolgt (Ausnahmetext: WAITING_FOR_DB_COMMIT).

      CX_SHM_PARAMETER_ERROR

Für den Eingabeparameter CLIENT wurde der Wert von CL_SHM_AREA=>ALL_CLIENTS angegeben.

Die ersten vier Ausnahmeklassen sind Unterklassen von CX_SHM_ATTACH_ERROR, die selbst von CX_STATIC_CHECK erbt. CX_SHM_PARAMETER_ERROR ist Unterklasse von CX_DYNAMIC_CHECK.

 

ATTACH_FOR_WRITE

Diese Methode erzeugt ein Gebietshandle mit Schreibsperre für eine Gebietsinstanzversion und gibt eine Referenz auf das Gebietshandle zurück.

Eingabeparameter

      INST_NAME vom Typ SHM_INST_NAME

Name der Gebietsinstanzversion. Die Angabe des Namens ist optional. Der Standardwert ist der Wert der Konstante CL_SHM_AREA=>DEFAULT_INSTANCE.

      CLIENT vom Typ SHM_CLIENT

Mandantenkennung falls das Gebiet mandantenabhängig ist. Die Angabe der Mandantenkennung ist optional. Der Standardwert ist die Kennung des aktuellen Mandanten.

      ATTACH_MODE vom Typ SHM_ATTACH_MODE

Steuert den Sperrmodus. Die Angabe ist optional. Der Standardwert ist CL_SHM_AREA=>ATTACH_MODE_DEFAULT. Mögliche Werte sind:

       CL_SHM_AREA=>ATTACH_MODE_DEFAULT

Wenn Lesesperren auf der Gebietsinstanz des angegebenen Namens bestehen, werden diese nicht aufgehoben. In einem solchen Fall wird bei Gebieten mit Versionierung versucht, eine neue Version anzulegen, während es bei Gebieten ohne Versionierung direkt zur Ausnahme CX_SHM_VERSION_LIMIT_EXCEEDED kommt.

       CL_SHM_AREA=>ATTACH_MODE_DETACH_READER

Wenn bei Gebieten mit Versionierung Lesesperren auf allen Gebietsinstanzversionen des angegebenen Namens bestehen, werden die Lesesperren auf der ältesten Version aufgehoben und diese damit deaktiviert,  wodurch eine neue Version angelegt werden kann. Bei Gebieten ohne Versionierung werden alle Lesesperren aufgehoben.

       CL_SHM_AREA=>ATTACH_MODE_WAIT

Wenn die Schreibsperre nicht gesetzt werden kann, wartet das Programm um die im Parameter WAIT_TIME angegebene Zeit und versucht erneut die Sperre zu setzen, bevor es zur Ausnahme CX_SHM_VERSION_LIMIT_EXCEEDED kommt. Bei einem Gebiet ohne Versionierung kann in der Wartezeit keine weitere Lesesperre auf die Gebietsinstanz gesetzt werden. Bei einem Gebiet mit Versionierung ist das Setzen von Lesesperren weiterhin möglich.

      WAIT_TIME vom Typ i

Wartezeit in Millisekunden, falls für ATTACH_MODE der Wert von CL_SHM_AREA=>ATTACH_MODE_WAIT übergeben wird. Wird  für WAIT_TIME ein Wert ungleich 0 übergeben, wenn an ATTACH_MODE nicht der Wert CL_SHM_AREA=>ATTACH_MODE_WAIT übergeben wird oder wenn für WAIT_TIME ein negativer Wert angegeben ist, kommt es zur Ausnahme CX_SHM_PARAMETER_ERROR.

In der Wartezeit wird versucht wird eine Schreibsperre erneut zu setzen. Auf einer Gebietsinstanz kann zu einem Zeitpunkt nur ein Programm mit dem Parameter WAIT_TIME warten. Wenn ein anderes Programm versucht, eine weitere Änderungssperre mit dem Parameter WAIT_TIME zu setzen, so kommt es direkt zur Ausnahme CX_SHM_EXCLUSIVE_LOCK_ACTIVE (Ausnahmetext LOCKED_BY_PENDING_CHANGER).

Kann die Schreibsperre innerhalb der Wartezeit erfolgreich gesetzt werden, wird der Programmablauf fortgesetzt. Dabei ist zu beachten, dass das wartende Programm unter Umständen nicht sofort wieder gestartet wird, sondern es zu einer zeitlichen Verzögerung kommen kann. Während dieser Verzögerung kann ein anderes Programm keine Änderungssperre setzen. Dadurch erhält das wartende Programm garantiert als nächster die Schreibsperre.

Kann die Schreibsperre innerhalb der Wartezeit nicht erfolgreich gesetzt werden, wird nach Ablauf der Wartezeit die Ausnahme CX_SHM_EXCLUSIVE_LOCK_ACTIVE (Ausnahmetext: LOCKED_BY_ACTIVE_CHANGER) ausgelöst.

Rückgabewert

      HANDLE vom Typ REF TO <area>.

Referenz auf das erzeugte Gebietshandle.

Ausnahmen

      CX_SHM_VERSION_LIMIT_EXCEEDED

Die Schreibsperre konnte nicht gesetzt werden, da bereits eine Lesesperre auf der Gebietsinstanzversion besteht und keine neue Version erzeugt werden konnte, da dies die Anzahl der maximal möglichen Versionen überschreiten würde.

      CX_SHM_CHANGE_LOCK_ACTIVE

Eine beliebige Gebietsinstanzversion ist bereits im gleichen internen Modus zum Ändern gesperrt. Wenn bei einem transaktionalen Gebiet eine vorhergehende Änderungssperre aufgehoben wurde, aber noch kein Datenbank-Commit stattfand, wird die Ausnahme mit dem Ausnahmetext WAITING_FOR_DB_COMMIT ausgelöst.

      CX_SHM_EXCLUSIVE_LOCK_ACTIVE

Diese Ausnahme tritt in folgenden Fällen auf:

       Die Gebietsinstanz ist in einem anderen internen Modus bereits zum Ändern gesperrt (Ausnahmetext: LOCKED_BY_ACTIVE_CHANGER).

       Ein Änderer in einem anderen internen Modus wartet auf eine Änderungssperre (Ausnahmetext: LOCKED_BY_PENDING_CHANGER).

       Die Gebietsinstanz ist transaktional und eine Änderungssperre wurde in einem anderen internen Modus freigegeben, aber der Datenbank-Commit ist noch nicht erfolgt (Ausnahmetext: WAITING_FOR_DB_COMMIT).

      CX_SHM_PARAMETER_ERROR

       Für den Eingabeparameter ATTACH_MODE wurde ein ungültiger Wert übergeben.

       Für den Eingabeparameter WAIT_TIME wurde eine negative Zahl übergeben.

       Für den Eingabeparameter CLIENT wurde der Wert von CL_SHM_AREA=>ALL_CLIENTS angegeben.

Die ersten drei Ausnahmeklassen sind Unterklassen von CX_SHM_ATTACH_ERROR, die selbst von CX_STATIC_CHECK erbt. CX_SHM_PARAMETER_ERROR ist Unterklasse von CX_DYNAMIC_CHECK.

 

ATTACH_FOR_UPDATE

Diese Methode erzeugt ein Gebietshandle mit Aktualisierungssperre für eine Gebietsinstanzversion und gibt eine Referenz auf das Gebietshandle zurück.

Eingabeparameter

      INST_NAME vom Typ SHM_INST_NAME

Name der Gebietsinstanzversion. Die Angabe des Namens ist optional. Der Standardwert ist der Wert der Konstante CL_SHM_AREA=>DEFAULT_INSTANCE.

      CLIENT vom Typ SHM_CLIENT

Mandantenkennung falls das Gebiet mandantenabhängig ist. Die Angabe der Mandantenkennung ist optional. Der Standardwert ist die Kennung des aktuellen Mandanten.

      ATTACH_MODE vom Typ SHM_ATTACH_MODE

Steuert den Sperrmodus. Die Angabe ist optional. Der Standardwert ist CL_SHM_AREA=>ATTACH_MODE_DEFAULT. Mögliche Werte sind:

       CL_SHM_AREA=>ATTACH_MODE_DEFAULT

Wenn Lesesperren auf der Gebietsinstanz des angegebenen Namens bestehen, werden diese nicht aufgehoben. In einem solchen Fall wird bei Gebieten mit Versionierung versucht, eine neue Version anzulegen, während es bei Gebieten ohne Versionierung direkt zur Ausnahme CX_SHM_VERSION_LIMIT_EXCEEDED kommt.

       CL_SHM_AREA=>ATTACH_MODE_DETACH_READER

Wenn bei Gebieten mit Versionierung Lesesperren auf allen Gebietsinstanzversionen des angegebenen Namens bestehen, werden die Lesesperren auf der ältesten Version aufgehoben und diese damit deaktiviert,  wodurch eine neue Version angelegt werden kann. Bei Gebieten ohne Versionierung werden alle Lesesperren aufgehoben.

       CL_SHM_AREA=>ATTACH_MODE_WAIT

Wenn die Aktualisierungssperre nicht gesetzt werden kann, wartet das Programm um die im Parameter WAIT_TIME angegebene Zeit und versucht erneut die Sperre zu setzen, bevor es zur Ausnahme CX_SHM_VERSION_LIMIT_EXCEEDED kommt. Bei einem Gebiet ohne Versionierung kann in der Wartezeit keine weitere Lesesperre auf die Gebietsinstanz gesetzt werden. Bei einem Gebiet mit Versionierung ist das Setzen von Lesesperren weiterhin möglich.

      WAIT_TIME vom Typ i

Wartezeit in Millisekunden, falls für ATTACH_MODE der Wert von CL_SHM_AREA=>ATTACH_MODE_WAIT übergeben wird. Wird  für WAIT_TIME ein Wert ungleich 0 übergeben, wenn an ATTACH_MODE nicht der Wert CL_SHM_AREA=>ATTACH_MODE_WAIT übergeben wird oder wenn für WAIT_TIME ein negativer Wert angegeben ist, kommt es zur Ausnahme CX_SHM_PARAMETER_ERROR.

In der Wartezeit wird versucht wird eine Aktualisierungssperre erneut zu setzen. Auf einer Gebietsinstanz kann zu einem Zeitpunkt nur ein Programm mit dem Parameter WAIT_TIME warten. Wenn ein anderes Programm versucht, eine weitere Änderungssperre mit dem Parameter WAIT_TIME zu setzen, so kommt es direkt zur Ausnahme CX_SHM_EXCLUSIVE_LOCK_ACTIVE (Ausnahmetext LOCKED_BY_PENDING_CHANGER).

Kann die Aktualisierungssperre innerhalb der Wartezeit erfolgreich gesetzt werden, wird der Programmablauf fortgesetzt. Dabei ist zu beachten, dass das wartende Programm unter Umständen nicht sofort wieder gestartet wird, sondern es zu einer zeitlichen Verzögerung kommen kann. Während dieser Verzögerung kann ein anderes Programm keine Änderungssperre setzen. Dadurch erhält das wartende Programm garantiert als nächster die Aktualisierungssperre.

Kann die Aktualisierungssperre innerhalb der Wartezeit nicht erfolgreich gesetzt werden, wird nach Ablauf der Wartezeit die Ausnahme CX_SHM_EXCLUSIVE_LOCK_ACTIVE (Ausnahmetext: LOCKED_BY_ACTIVE_CHANGER) ausgelöst.

Hinweis

Da zum Setzen einer Aktualisierungssperre eine aktive Gebietsinstanzversion notwendig ist, wird bei Aufruf der Methode ATTACH_FOR_UPDATE ein automatisch aufgerufener Gebietskonstruktor gestartet. Bei Verwendung des Parameters WAIT_TIME gilt: Kann der Gebietskonstruktor gestartet werden, wird gewartet. Wird der Gebietskonstruktor vor Ablauf der Wartezeit erfolgreich beendet, so wird die Aktualisierungssperre gesetzt. Wird der Gebietskonstruktor beendet, ohne eine aktive Version aufbauen zu können, wird der Wartevorgang vor Ende der Wartezeit abgebrochen. Wird der Gebietskonstruktor nicht innerhalb der Wartezeit beendet, wird die Ausnahme CX_SHM_NO_ACTIVE_VERSION (Ausnahmetext: BUILD_NOT_FINISHED) ausgelöst.

Rückgabewert

      HANDLE vom Typ REF TO <area>.

Referenz auf das erzeugte Gebietshandle.

Ausnahmen

      CX_SHM_INCONSISTENT

Der Typ eines in der Gebietsinstanz gespeicherten Objekts stimmt nicht mit der Definition des gleichnamigen Objekts im aktuellen Programm überein.

      CX_SHM_NO_ACTIVE_VERSION

Diese Ausnahme tritt in folgenden Fällen auf:

       Die Gebietsinstanzversion ist nicht vorhanden und ein automatischer Aufbau ist nicht möglich, da weder ein Gebietskonstruktor noch eine verdrängte Version vorliegt (Ausnahmetext: NEITHER_BUILD_NOR_LOAD).

       Die Gebietsinstanzversion ist nicht vorhanden und der Gebietskonstruktor wurde aufgerufen (Ausnahmetext: BUILD_STARTED).

       Die Gebietsinstanzversion ist nicht vorhanden aber der Gebietskonstruktor wird bereits ausgeführt (Ausnahmetext: BUILD_NOT_FINISHED).

       Die Gebietsinstanzversion ist nicht vorhanden und das Laden einer verdrängten Version wurde gestartet (Ausnahmetext: LOAD_STARTED).

       Die Gebietsinstanzversion ist nicht vorhanden aber das Laden einer verdrängten Version wird bereits ausgeführt (Ausnahmetext: LOAD_NOT_FINISHED).

      CX_SHM_VERSION_LIMIT_EXCEEDED

Die Aktualisierungssperre konnte nicht gesetzt werden, da bereits eine Lesesperre auf der Gebietsinstanzversion besteht und keine neue Version erzeugt werden konnte, da dies die Anzahl der maximal möglichen Versionen überschreiten würde.

      CX_SHM_CHANGE_LOCK_ACTIVE

Eine beliebige Gebietsinstanzversion ist bereits im gleichen internen Modus zum Ändern gesperrt. Wenn bei einem transaktionalen Gebiet eine vorhergehende Änderungssperre aufgehoben wurde, aber noch kein Datenbank-Commit stattfand, wird die Ausnahme mit dem Ausnahmetext WAITING_FOR_DB_COMMIT ausgelöst.

      CX_SHM_EXCLUSIVE_LOCK_ACTIVE

Diese Ausnahme tritt in folgenden Fällen auf:

       Die Gebietsinstanz ist in einem anderen internen Modus bereits zum Ändern gesperrt (Ausnahmetext: LOCKED_BY_ACTIVE_CHANGER).

       Ein Änderer in einem anderen internen Modus wartet auf eine Änderungssperre (Ausnahmetext: LOCKED_BY_PENDING_CHANGER).

       Die Gebietsinstanz ist transaktional und eine  Änderungssperre wurde in einem anderen internen Modus freigegeben, aber der Datenbank-Commit ist noch nicht erfolgt (Ausnahmetext: WAITING_FOR_DB_COMMIT).

      CX_SHM_PARAMETER_ERROR

       Für den Eingabeparameter ATTACH_MODE wurde ein ungültiger Wert übergeben.

       Für den Eingabeparameter WAIT_TIME wurde eine negative Zahl übergeben.

       Für den Eingabeparameter CLIENT wurde der Wert von CL_SHM_AREA=>ALL_CLIENTS angegeben.

Die ersten fünf Ausnahmeklassen sind Unterklassen von CX_SHM_ATTACH_ERROR, die selbst von CX_STATIC_CHECK erbt. CX_SHM_PARAMETER_ERROR ist Unterklasse von CX_DYNAMIC_CHECK.

 

DETACH_AREA

Diese Methode hebt alle Sperren des aktuellen Modus auf den Gebietsinstanzen des zugehörigen Gebiets auf und deaktiviert somit alle Gebietshandles dieses Gebiets im aktuellen internen Modus. Wird dabei eine Schreib- oder Aktualisierungssperre aufgehoben, werden bis dahin gemachte Änderungen an den Gebietsinstanzversionen verworfen.

Eingabeparameter

      CLIENT vom Typ SHM_CLIENT

Optionale Mandantenkennung falls das Gebiet mandantenabhängig ist. Der Standardwert ist die Kennung des aktuellen Mandanten.

Rückgabewert

      RC vom Typ SHM_RC

Mögliche Werte:

       CL_SHM_AREA=>RC_DONE, wenn alle Sperren aufgehoben wurden.

       CL_SHM_AREA=>RC_NOTHING_TO_BE_DONE, wenn keine Sperren aufgehoben wurden, da im aktuellen Modus keine bestanden.

 

INVALIDATE_INSTANCE

Diese Methode setzt den Zustand der aktiven Gebietsinstanzversion der Gebietsinstanz des übergebenen Namens bei nicht-transaktionalen Gebieten sofort und bei transaktionalen Gebieten beim nächsten Datenbank-Commit auf veraltet. Danach können keine neuen Sperren auf diese Gebietsinstanzversion mehr gesetzt werden. Bestehende Lesesperren werden nicht aufgehoben. Die Behandlung bestehender Änderungssperren hängt vom Eingabeparameter TERMINATE_CHANGER ab.

Eingabeparameter

      INST_NAME vom Typ SHM_INST_NAME

Name der Gebietsinstanzversion. Die Angabe des Namens ist optional. Der Standardwert ist der Wert der Konstante CL_SHM_AREA=>DEFAULT_INSTANCE.

      CLIENT vom Typ SHM_CLIENT

Mandantenkennung falls das Gebiet mandantenabhängig ist. Der Standardwert ist die Kennung des aktuellen Mandanten.

      TERMINATE_CHANGER vom Typ ABAP_BOOL

Steuert die Behandlung von Änderungssperren. Mögliche Werte sind:

       ABAP_TRUE

Bestehende Änderungssperren werden aufgehoben (Standardeinstellung).

       ABAP_FALSE

Bestehende Änderungssperren werden nicht aufgehoben.

      AFFECT_SERVER vom Typ SHM_AFFECT_SERVER (nur bei transaktionalen Gebieten)

Steuert die Server-übergreifende Invalidierung. Mögliche Werte sind :

       CL_SHM_AREA=>AFFECT_LOCAL_SERVER

Es werden nur die Gebietsinstanzversionen des aktuellen Applikationsservers invalidiert (Standardeinstellung).

       CL_SHM_AREA=>AFFECT_ALL_SERVERS

Es werden die Gebietsinstanzversionen aller Applikationsserver invalidiert.

       CL_SHM_AREA=>AFFECT_ALL_SERVERS_BUT_LOCAL

Es werden die Gebietsinstanzversionen aller Applikationsserver außer des aktuellen Applikationsservers invalidiert. Dies ermöglicht es,  Änderungen an Gebieten des aktuellen Applikationsservers direkt auszuführen, ohne das das Gebiet nochmals vollständig von der Datenbank aufgebaut werden muss.

Achtung

Nach Ausführung dieser Methode mit Übergabe von ABAP_TRUE an TERMINATE_CHANGER werden alle Programme, in denen noch eine Schreibsperre für die invalidierte Gebietsinstanz existiert, mit dem Laufzeitfehler SYSTEM_SHM_AREA_OBSOLETE abgebrochen.

Rückgabewert

      RC vom Typ SHM_RC

Mögliche Werte bei nicht-transaktionalen Gebieten:

       CL_SHM_AREA=>RC_DONE, wenn die aktive Gebietsinstanzversion auf veraltet gesetzt wurde. Falls an TERMINATE_CHANGER der Wert ABAP_TRUE übergeben wurde, auch wenn eine Änderungssperre aufgehoben wurde.

       CL_SHM_AREA=>RC_NOTHING_TO_BE_DONE, wenn keine aktive Gebietsinstanzversion vorhanden ist und, falls an TERMINATE_CHANGER der Wert ABAP_TRUE übergeben wurde, wenn keine Änderungssperre besteht.

       CL_SHM_AREA=>RC_INSTANCE_NAME_NOT_FOUND wenn keine Gebietsinstanz des angegebenen Namens existiert.

Bei transaktionalen Gebieten hat RC immer den Wert CL_SHM_AREA=>RC_NOTHING_TO_BE_DONE.

Ausnahmen

      CX_SHM_PARAMETER_ERROR

Für den Eingabeparameter TERMINATE_CHANGER wurde ein ungültiger Wert übergeben.

 

INVALIDATE_AREA

Diese Methode setzt den Zustand aller aktiven Gebietsinstanzversionen des Gebiets im aktuellen internen Modus bei nicht-transaktionalen Gebieten sofort und bei transaktionalen Gebieten beim nächsten Datenbank-Commit auf veraltet. Danach können keine neuen Sperren auf diese Gebietsinstanzversionen mehr gesetzt werden. Bestehende Lesesperren werden nicht aufgehoben. Die Behandlung bestehender Änderungssperren hängt vom Eingabeparameter TERMINATE_CHANGER ab.

Eingabeparameter

      CLIENT vom Typ SHM_CLIENT

Mandantenkennung falls das Gebiet mandantenabhängig ist. Der Standardwert ist die Kennung des aktuellen Mandanten.

      TERMINATE_CHANGER vom Typ ABAP_BOOL

Steuert die Behandlung von Änderungssperren. Mögliche Werte sind:

       ABAP_TRUE

Bestehende Änderungssperren werden aufgehoben (Standardeinstellung).

       ABAP_FALSE

Bestehende Änderungssperren werden nicht aufgehoben.

      AFFECT_SERVER vom Typ SHM_AFFECT_SERVER (nur bei transaktionalen Gebieten)

Steuert die Server-übergreifende Invalidierung. Mögliche Werte sind :

       CL_SHM_AREA=>AFFECT_LOCAL_SERVER

Es werden nur die Gebietsinstanzversionen des aktuellen Applikationsservers invalidiert (Standardeinstellung).

       CL_SHM_AREA=>AFFECT_ALL_SERVERS

Es werden die Gebietsinstanzversionen aller Applikationsserver invalidiert.

       CL_SHM_AREA=>AFFECT_ALL_SERVERS_BUT_LOCAL

Es werden die Gebietsinstanzversionen aller Applikationsserver außer des aktuellen Applikationsservers invalidiert. Dies ermöglicht es,  Änderungen an Gebieten des aktuellen Applikationsservers direkt auszuführen, ohne das das Gebiet nochmals vollständig von der Datenbank aufgebaut werden muss.

Achtung

Nach Ausführung dieser Methode mit Übergabe von ABAP_TRUE an TERMINATE_CHANGER werden alle Programme, in denen noch Schreibsperren für die invalidierten Gebietsinstanzversionen existieren, mit dem Laufzeitfehler SYSTEM_SHM_AREA_OBSOLETE abgebrochen.

Rückgabewert

      RC vom Typ SHM_RC

Mögliche Werte bei nicht-transaktionalen Gebieten:

       CL_SHM_AREA=>RC_DONE, wenn mindestens eine aktive Gebietsinstanzversion auf veraltet gesetzt wurde. Falls an TERMINATE_CHANGER der Wert ABAP_TRUE übergeben wurde, auch wenn mindestens eine Änderungssperre aufgehoben wurde.

       CL_SHM_AREA=>RC_NOTHING_TO_BE_DONE, wenn es keine aktive Gebietsinstanzversion gibt und, falls an TERMINATE_CHANGER der Wert ABAP_TRUE übergeben wurde, wenn keine Änderungssperre besteht.

Bei transaktionalen Gebieten hat RC immer den Wert CL_SHM_AREA=>RC_NOTHING_TO_BE_DONE.

Ausnahmen

      CX_SHM_PARAMETER_ERROR

Für den Eingabeparameter TERMINATE_CHANGER wurde ein ungültiger Wert übergeben.

 

 

FREE_INSTANCE

Diese Methode setzt den Zustand aller (d.h. die aktive und die veralteten) Gebietsinstanzversionen der Gebietsinstanz des übergebenen Namens auf verfallen, wobei alle Lesesperren aufgehoben werden. Danach können keine neuen Lesesperren und Aktualisierungssperren auf diese Gebietsinstanzversion mehr gesetzt werden. Die Behandlung bestehender Änderungssperren hängt vom Eingabeparameter TERMINATE_CHANGER ab. Bei nicht-transaktionalen Gebieten erfolgt die Änderung des Zustands der Gebietsinstanzversion sofort und bei transaktionalen Gebieten beim nächsten Datenbank-Commit.

Achtung

Nach Ausführung dieser Methode werden alle Programme, in denen noch Gebietshandles für die freigegebenen Gebietsinstanzversionen existieren, mit dem Laufzeitfehler SYSTEM_SHM_AREA_OBSOLETE abgebrochen.

Eingabeparameter

      INST_NAME vom Typ SHM_INST_NAME

Name der Gebietsinstanzversion. Die Angabe des Namens ist optional. Der Standardwert ist der Wert der Konstante CL_SHM_AREA=>DEFAULT_INSTANCE.

      CLIENT vom Typ SHM_CLIENT

Mandantenkennung falls das Gebiet mandantenabhängig ist. Der Standardwert ist die Kennung des aktuellen Mandanten.

      TERMINATE_CHANGER vom Typ ABAP_BOOL

Steuert die Behandlung von Änderungssperren. Mögliche Werte sind:

       ABAP_TRUE

Bestehende Änderungssperren werden aufgehoben (Standardeinstellung).

       ABAP_FALSE

Bestehende Änderungssperren werden nicht aufgehoben.

      AFFECT_SERVER vom Typ SHM_AFFECT_SERVER (nur bei transaktionalen Gebieten)

Steuert die Server-übergreifende Invalidierung. Mögliche Werte sind :

       CL_SHM_AREA=>AFFECT_LOCAL_SERVER

Es werden nur die Gebietsinstanzversionen des aktuellen Applikationsservers invalidiert (Standardeinstellung).

       CL_SHM_AREA=>AFFECT_ALL_SERVERS

Es werden die Gebietsinstanzversionen aller Applikationsserver invalidiert.

       CL_SHM_AREA=>AFFECT_ALL_SERVERS_BUT_LOCAL

Es werden die Gebietsinstanzversionen aller Applikationsserver außer des aktuellen Applikationsservers invalidiert. Dies ermöglicht es,  Änderungen an Gebieten des aktuellen Applikationsservers direkt auszuführen, ohne das das Gebiet nochmals vollständig von der Datenbank aufgebaut werden muss.

Rückgabewert

      RC vom Typ SHM_RC

Mögliche Werte bei nicht-transaktionalen Gebieten:

       CL_SHM_AREA=>RC_DONE, wenn eine aktive oder eine veraltete Gebietsinstanzversion auf verfallen gesetzt wurde. Falls an TERMINATE_CHANGER der Wert ABAP_TRUE übergeben wurde, auch wenn eine Änderungssperre aufgehoben wurde.

       CL_SHM_AREA=>RC_NOTHING_TO_BE_DONE, wenn es keine aktive oder veraltete Gebietsinstanzversion gibt und, falls an TERMINATE_CHANGER der Wert ABAP_TRUE übergeben wurde, wenn keine Änderungssperre besteht.

       CL_SHM_AREA=>RC_INSTANCE_NAME_NOT_FOUND wenn keine Gebietsinstanz des angegebenen Namens existiert.

Bei transaktionalen Gebieten hat RC immer den Wert CL_SHM_AREA=>RC_NOTHING_TO_BE_DONE.

Ausnahmen

      CX_SHM_PARAMETER_ERROR

Für den Eingabeparameter TERMINATE_CHANGER wurde ein ungültiger Wert übergeben.

 

FREE_AREA

Diese Methode setzt den Zustand aller (d.h. die aktive und die veralteten) Gebietsinstanzversionen des Gebiets auf verfallen, wobei alle Lesesperren aufgehoben werden. Danach können keine neuen Sperren auf diese Gebietsinstanzversionen mehr gesetzt werden. Die Behandlung bestehender Änderungssperren hängt vom Eingabeparameter TERMINATE_CHANGER ab. Bei nicht-transaktionalen Gebieten erfolgt die Änderung sofort und bei transaktionalen Gebieten beim nächsten Datenbank-Commit.

Eingabeparameter

      CLIENT vom Typ SHM_CLIENT

Mandantenkennung falls das Gebiet mandantenabhängig ist. Der Standardwert ist die Kennung des aktuellen Mandanten.

      TERMINATE_CHANGER vom Typ ABAP_BOOL

Steuert die Behandlung von Änderungssperren. Mögliche Werte sind:

       ABAP_TRUE

Bestehende Änderungssperren werden aufgehoben (Standardeinstellung).

       ABAP_FALSE

Bestehende Änderungssperren werden nicht aufgehoben.

      AFFECT_SERVER vom Typ SHM_AFFECT_SERVER (nur bei transaktionalen Gebieten)

Steuert die Server-übergreifende Invalidierung. Mögliche Werte sind :

       CL_SHM_AREA=>AFFECT_LOCAL_SERVER

Es werden nur die Gebietsinstanzversionen des aktuellen Applikationsservers invalidiert (Standardeinstellung).

       CL_SHM_AREA=>AFFECT_ALL_SERVERS

Es werden die Gebietsinstanzversionen aller Applikationsserver invalidiert.

       CL_SHM_AREA=>AFFECT_ALL_SERVERS_BUT_LOCAL

Es werden die Gebietsinstanzversionen aller Applikationsserver außer des aktuellen Applikationsservers invalidiert. Dies ermöglicht es,  Änderungen an Gebieten des aktuellen Applikationsservers direkt auszuführen, ohne das das Gebiet nochmals vollständig von der Datenbank aufgebaut werden muss.

Rückgabewert

      RC vom Typ SHM_RC

Mögliche Werte bei nicht-transaktionalen Gebieten:

       CL_SHM_AREA=>RC_DONE, wenn mindestens eine aktive oder veraltete Gebietsinstanzversion auf verfallen gesetzt wurden. Falls an TERMINATE_CHANGER der Wert ABAP_TRUE übergeben wurde, auch wenn mindestens eine Änderungssperre aufgehoben wurden.

       CL_SHM_AREA=>RC_NOTHING_TO_BE_DONE, wenn es keine aktiven oder veralteten Gebietsinstanzversionen gibt und, falls an TERMINATE_CHANGER der Wert ABAP_TRUE übergeben wurde, wenn keine Änderungssperre besteht.

Bei transaktionalen Gebieten hat RC immer den Wert CL_SHM_AREA=>RC_NOTHING_TO_BE_DONE.

Ausnahmen

      CX_SHM_PARAMETER_ERROR

Für den Eingabeparameter TERMINATE_CHANGER wurde ein ungültiger Wert übergeben.

Achtung

Nach Ausführung dieser Methode werden alle Programme, in denen noch Gebietshandles für die freigegebenen Gebietsinstanzversionen existieren, mit dem Laufzeitfehler SYSTEM_SHM_AREA_OBSOLETE abgebrochen.

 

GET_INSTANCE_INFOS

Diese Methode liefert die Namen aller im Aufbau befindlichen, aktiven und veralteten Gebietsinstanzen des Gebiets auf dem aktuellen Applikationsserver.

Eingabeparameter

      CLIENT vom Typ SHM_CLIENT

Mandantenkennung falls das Gebiet mandantenabhängig ist. Der Standardwert ist die Kennung des aktuellen Mandanten.

Rückgabewert

      INFOS vom Typ SHM_INST_INFOS

SHM_INST_INFOS ist eine interne Tabelle vom Zeilentyp SHM_INST_INFO mit folgenden Komponenten:

       CLIENT vom Typ MANDT

Mandantenkennung bei mandantenabhängigen Gebieten. Initial bei mandantenunabhängigen Gebieten.

       NAME vom Typ SHM_INST_NAME

Gebietsname. Bei Gebieten mit dem Standardnamen ist dies der Inhalt der Konstanten CL_SHM_AREA=>DFAULT_INSTANCE.

       VERSIONS_IN_BUILD vom Typ SHM_VERS_CNT

Anzahl der Gebietsinstanzversionen, die sich gerade im Aufbau befinden. Mögliche Werte sind  0 oder 1.

       VERSIONS_ACTIVE vom Typ SHM_VERS_CNT

Anzahl der gerade aktiven Gebietsinstanzversionen. Mögliche Werte sind  0 oder 1.

       VERSIONS_OBSOLETE vom Typ SHM_VERS_CNT

Anzahl der veralteten Gebietsinstanzversionen. Mögliche Werte sind 0 bis maximale Anzahl von Gebietsinstanzversionen (Komponente MAX_VERSIONS des Attributs PROPERTIES der Klasse CL_SHM_AREA).

Wenn es keine Gebietsinstanzen zu dem Gebiet gibt, wird eine leere Tabelle zurückgegeben. Die Anzahl verfallener Gebietsinstanzversionen wird nicht berücksichtigt.

 

BUILD

Diese Methode ruft explizit den Gebietskonstruktor auf. Die Ausführung des Gebietskonstruktors erfolgt im aktuellen internen Modus. Bei mandantenabhängigen Gebieten wird das Gebiet des aktuellen Mandanten aufgebaut.

Eingabeparameter

      INST_NAME vom Typ SHM_INST_NAME

Name der Gebietsinstanzversion. Die Angabe des Namens ist optional. Der Standardwert ist der Wert der Konstante CL_SHM_AREA=>DEFAULT_INSTANCE.

Ausnahmen

      CX_SHM_BUILD_FAILED

Während der Ausführung des Gebietskonstruktors ist ein Fehler aufgetreten.

      CX_SHMA_NOT_CONFIGURED

An die Gebietsklasse ist keine Gebietskonstruktorklasse angebunden.

      CX_SHMA_INCONSISTENT

Die Gebietsklasse muss neu generiert werden.

 

PROPAGATE_INSTANCE

Diese Methode steht nur zur Verfügung, wenn das Gebiet transaktional ist. Sie wirkt wie die Ausführung der Methode INVALIDATE_INSTANCE mit Übergabe des Werts von ABAP_TRUE an den Eingabeparameter TERMINATE_CHANGER auf allen Applikationsservern des aktuellen SAP-Systems. Diese Propagierung findet beim nächsten Datenbank-Commit statt.

Achtung

Diese Methode sollte ab Release 7.10 nicht mehr verwendet werden. Statt dessen steht der Parameter AFFECT_SERVER  der Methoden FREE_AREA, FREE_INSTANCE, INVALIDATE_AREA und INVALIDATE_INSTANCE zur Verfügung.

Eingabeparameter

      INST_NAME vom Typ SHM_INST_NAME

Name der Gebietsinstanzversion. Die Angabe des Namens ist optional. Der Standardwert ist der Wert der Konstante CL_SHM_AREA=>DEFAULT_INSTANCE.

      CLIENT vom Typ SHM_CLIENT

Mandantenkennung falls das Gebiet mandantenabhängig ist. Der Standardwert ist die Kennung des aktuellen Mandanten.

      AFFECTING_LOCAL_SERVER vom Typ ABAP_BOOL

Steuert, ob die Änderung des Zustands auch auf dem aktuellen Applikationsserver durchgeführt wird. Mögliche Werte sind:

       ABAP_TRUE

Die aktive Gebietsinstanzversion wird auch auf dem aktuellen Applikationsserver auf veraltet gesetzt. Diese Einstellung kann genutzt werden, wenn nach der Änderung von Datenbankinhalten die Inhalte der Gebietsinstanz mit Hilfe des Gebietskonstruktors geändert werden sollen.

       ABAP_FALSE

Die aktive Gebietsinstanzversion wird auf dem aktuellen Applikationsserver nicht auf veraltet gesetzt. (Standardeinstellung). Damit kann eine auf einem Applikationsserver neu erstellte Version erhalten bleiben während nur die aktiven Versionen auf anderen Servern invalidiert werden.

Ausnahmen

      CX_SHM_PARAMETER_ERROR

Für den Eingabeparameter AFFECTING_LOCAL_SERVER wurde ein ungültiger Wert übergeben.

 

PROPAGATE_AREA

Diese Methode steht nur zur Verfügung, wenn das Gebiet transaktional ist. Sie wirkt wie die Ausführung der Methode INVALIDATE_AREA mit Übergabe des Werts von ABAP_TRUE an den Eingabeparameter TERMINATE_CHANGER auf allen Applikationsservern des aktuellen SAP-Systems. Diese Propagierung findet beim nächsten Datenbank-Commit statt.

Achtung

Diese Methode sollte ab Release 7.10 nicht mehr verwendet werden. Statt dessen steht der Parameter AFFECT_SERVER  der Methoden FREE_AREA, FREE_INSTANCE, INVALIDATE_AREA und INVALIDATE_INSTANCE zur Verfügung.

Eingabeparameter

      CLIENT vom Typ SHM_CLIENT

Mandantenkennung falls das Gebiet mandantenabhängig ist. Der Standardwert ist die Kennung des aktuellen Mandanten.

      AFFECTING_LOCAL_SERVER vom Typ ABAP_BOOL

Steuert, ob die Änderung des Zustands auch auf dem aktuellen Applikationsserver durchgeführt wird. Mögliche Werte sind:

       ABAP_TRUE

Die aktiven Gebietsinstanzversionen werden auch auf dem aktuellen Applikationsserver auf veraltet gesetzt.

       ABAP_FALSE

Die aktiven Gebietsinstanzversionen werden auf dem aktuellen Applikationsserver nicht auf veraltet gesetzt. (Standardeinstellung).

Ausnahmen

      CX_SHM_PARAMETER_ERROR

Für den Eingabeparameter AFFECTING_LOCAL_SERVER wurde ein ungültiger Wert übergeben.

 

Instanzmethoden

 

SET_ROOT

Diese Methode legt das Wurzelobjekt (Instanz der Gebietswurzelklasse) der Gebietsinstanzversion fest. Bevor eine Änderungssperre mit der Methode DETACH_COMMIT aufgehoben werden kann, muss das Wurzelobjekt mindestens einmal mit SET_ROOT gesetzt werden. Umsetzungen sind möglich. Die Methode SET_ROOT kann nur in Gebietshandles mit Änderungssperren aufgerufen werden.

Eingabeparameter

      ROOT vom Typ REF TO <area_root_class>, wobei <area_root_class> die Gebietswurzelklasse des Gebiets ist.

Ausnahmen

      CX_SHM_WRONG_HANDLE

Die Methode wurde über ein Gebietshandle mit Lesesperre oder ein Gebietshandle, in dem die Methode DETACH_COMMIT fehlgeschlagen ist, aufgerufen.

      CX_SHM_INITIAL_REFERENCE

Die an ROOT übergebene Referenzvariable ist initial.

Beide Ausnahmen sind Unterklassen von CX_DYNAMIC_CHECK.

Ende des Inhaltsbereichs