Ansicht
Dokumentation

INIT_EVENT_MASTER_TUUID_GET - Bereitstellen der Transactions-ID für Master-Transaktion

INIT_EVENT_MASTER_TUUID_GET - Bereitstellen der Transactions-ID für Master-Transaktion

ROGBILLS - Synchronize billing plans   TXBHW - Original Tax Base Amount in Local Currency  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Eventhandling durch Anwendungsprogramme

Da es zur Zeit nur den Event "COMMIT WORK" ("ROLLBACK WORK") mit der Registrierung "PERFORM ON COMMIT" ("PERFORM ON ROLLBACK") gibt, können unter Umständen folgende funktionale Lücken zu Datenschiefständen und Performanceproblemen führen:

  • Batchprogramme, Transaktionen, BAPI's sind häufig so implementiert, daß Daten im globalen Memory als Puffer bzw. als Transaktionsmemory gehalten werden. Um Inkonsistenzen im Transaktionsmemory bzw. Performanceprobleme bei den Puffern (zu große interne Tabellen) zu vermeiden, müssen diese globalen Daten regelmäßig zurückgesetzt werden.
  • Dies muß bisher durch das Hauptprogramm explizit durch Aufruf von entsprechenden Funktionsbausteinen, die die globalen Daten zurücksetzen, implementiert werden. Durch die komplexe Integration hat das Rahmenprogramm aber sehr häufig gar keine Informationen darüber, welche Module und Services verwendet werden.
  • Hier fehlt eine Möglichkeit über ein Registrierungsmechanismus und ein Event alle verwendeten Module und Services anzusprechen.

Um hierfür ein Lösung zu bieten, wurden folgende Funktionsbausteine in einer Funktionsgruppe implementiert:

  • INIT_EVENT_REGISTER
    Enthält einen Parameter mit dem Namen eines Funktionsbausteins

  • INIT_EVENT_REGISTER_FORM
    Enthält zwei Parameter mit den Namen einer Form und des zugehörigen Programms.

  • INIT_EVENT_RAISE
    Enthält einen Parameter, in dem eine ID übergeben wird, die die Transaktion eindeutig identifiziert. Nur wenn diese ID zur mit INIT_EVENT_MASTER_KEY_GET gehörenden ID paßt, kann der Event "INIT" ausgelöst werden. Falls keine ID mit dem INIT_EVENT_MASTER_KEY_GET angefordert wurde, ist der Parameter TUUID optinal und ohne Bedeutung.

  • INIT_EVENT_MASTER_KEY_GET
    Enthält einen Parameter, in dem eine ID zurückgegeben wird, die die aktuelle Transaktion eindeutig identifiziert. Damit kann das Hauptprogramm einer Transaktion identifiziert werden, und nur mithilfe dieser ID kann das INIT EVENT ausgelöst werden. Solange dieser Funktionsbaustein innerhalb einer Transaktion noch nicht gerufen wurde, gibt es noch kein Hauptprogramm, und der "INIT"-Event kann von jedem Programm ausgelöst werden. Falls der INIT_EVENT_MASTER_KEY_GET mehrfach aufgerufen wird, wird die Ausnahme "NOT_MASTER" ausgelöst. Mit Aufruf des INIT_EVENT_MASTER_KEY_GET wird auch ein automatisches Aulösen des INIT Events mit jedem COMMIT und ROLLBACK WORK verhindert.

Ablauf des Eventhandlings

Es gibt grundsätzlich zwei Mechanismen, das EVENT zu steuern.

  • Gezielt durch das Hauptprogramm:
    Das Hauptprogramm besorgt sich mit INIT_EVENT_MASTER_KEY_GET den eindeutigen Schlüssel zum Auslösen des "INIT"-Events. Das Hauptprogramm sollte immer das Programm sein, das auch COMMIT, ROLLBACK, EXIT, ... auslöst.
  • Automatisch mit commit work bzw. rollback work:
    Falls kein Schlüssel mit INIT_EVENT_MASTER_KEY_GET gezogen wird, wird das INIT Event automatisch nach jedem "COMMIT WORK" bzw "ROLLBACK WORK" (im Anschluß an das entsprechende DB-commit/rollback) ausgelöst.

  1. Alle Funktionsgruppen, die vom "INIT" Event benachrichtigt werden sollen, müssen sich mit INIT_EVENT_REGISTER registrieren, wobei mit dem Parameter festgelegt wird, welcher Funktionsbaustein durch den Event aufgerufen wird. Diese Funktionsbausteinnamen werden mit COLLECT in einer internen Tabelle der Funktionsgruppe gesammelt. Das gleiche gilt für Formaufrufe und Programme.

  2. Durch das Auslösen des INIT Events werden alle registrierten Funktionsbausteine und Forms ausgeführt. Falls die Funktionsbausteine oder Forms nicht existieren, wird ein DUMP erzeugt. Die interne Tabelle wird anschließend NICHT gelöscht, das heißt, eine erfolgte Registrierung bleibt bis zum /n (Transaktionsende) bestehen. Nur das Hauptprogramm, das heißt, das erste Programm, daß den INIT_EVENT_MASTER_KEY_GET ruft, kann den EVENT auslösen. Solange keine ID vergeben wurde, also INIT_EVENT_MASTER_KEY_GET nicht aufgerufen wurde, kann jedes beteiligte Programm den "INIT"-Event auslösen. Außerdem wird dann automatisch mit jedem COMMIT bzw. ROLLBACK WORK das INIT EVENT ausgelöst.
  3. Sie müssen den INIT_EVENT_RAISE für alle ROLLBACKS und an allen Stellen, wo Initialisierungsroutinen gerufen werden, einbauen.

Die bestehenden PERFORM ON COMMIT-Lösungen bleiben zur Aufwandsverringerung bestehen.

Vorteile dieser Vorgehensweise

  • Nicht registrierte Funktionsgruppen werden beim "INIT" Event nicht gerufen und somit auch nicht unnötig geladen.

  • Die Anwendung kann auf ein programmiertes ROLLBACK reagieren.

  • Neue Funktionsgruppen/Anwendungen haben eine zentrale Stelle, in der die Registrierung vorgenommen wird.

Beispiel

Hinweise

Diese Funktionsbausteine sollten dann verwendet werden, wenn bei Transaktionen oder Batchprogrammen nach einem Commit oder Rollback globale Daten initialisert werden müssen, um den nächsten "Bearbeitungsblock" konsistent bearbeiten zu können. Falls mit dem COMMIT oder Rollback die Transaktion oder das Batchprogramm verlassen wird (/n), werden die globalen Daten automatisch zurückgesetzt. In diesem Fall ist die Verwendung dieser Funktionsgruppe unnötig.

Falls Sie das automatische Auslösen des INIT Events mit COMMIT bzw. ROLLBACK WORK verhindern wollen, müssen Sie nur den Baustein INIT_EVENT_MASTER_KEY_GET aufrufen.

Weiterführende Informationen





Parameter

TUUID

Ausnahmen

NOT_MASTER

Funktionsgruppe

AIEV

PERFORM Short Reference   BAL Application Log Documentation  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 6783 Date: 20240523 Time: 085634     sap01-206 ( 135 ms )