Anfang des Inhaltsbereichs

Asynchron verbuchen Dokument im Navigationsbaum lokalisieren

In einer typischen R/3-Konfiguration gibt es sowohl Dialog-Workprozesse und zumindest einen oder auch mehrere Verbuchungs-Workprozesse. In den Verbuchungs-Workprozessen wird die Verbuchung durchgeführt. Wenn in einem Dialog-Workprozess die durch CALL FUNCTION ... IN UPDATE TASK zwischengespeicherten Funktionsbausteine über die ABAP-Anweisung COMMIT WORK zur Verarbeitung in einem Verbuchungs-Workprozess freigegeben werden, wartet der Dialog-Workprozess nicht auf die Beendigung des Verbuchungs-Auftrags. Die Verbuchung erfolgt zeitlich versetzt bzw. asynchron.

Diese Grafik wird im zugehörigen Text erklärt

Die folgende Abbildung verdeutlicht den typischen Ablauf einer asynchronen Verbuchung:

Diese Grafik wird im zugehörigen Text erklärt

Ein Benutzer möchte zum Beispiel in einer Tabelle einen Datensatz ändern oder hinzufügen. Er nimmt entsprechende Eingaben vor und initiiert den Verbuchungsvorgang, indem er die Daten sichert. Das Sichern der Eingabedaten auf dem Bildschirm löst im ABAP-Programm folgende Schritte aus:

  1. Als erstes sperrt das Programm den Datensatz für andere Benutzer. Dazu wird der Enqueue-Workprozess (bei einem verteilten System über den Message-Server) angesprochen. Dieser sorgt für einen entspechenden Eintrag in die Sperrtabelle. Der Benutzer wird informiert, ob verbucht wird oder ob der Eintrag in die Sperrtabelle aufgrund von Aktivitäten anderer Benutzer nicht durchgeführt werden konnte.
  2. Wurde die Sperre gesetzt, liest das Programm den zu ändernden Satz von der Datenbank und modifiziert ihn. Bei einem neu anzulegenden Satz überprüft das Programm, ob der Satz eventuell schon vorhanden ist.
  3. Das Programm ruft im aktuellen Dialog-Workprozess einen Funktionsbaustein mit CALL FUNCTION ... IN UPDATE TASK und schreibt damit die Änderungsanforderung als Protokollsatz in die Tabelle VBLOG.
  4. Wenn das Ende der logischen Programmeinheit erreicht ist (z.B. nach weiteren Dialogschritten) leitet das Programm mit der Anweisung COMMIT WORK den Abschluß der SAP-LUW ein. Der Workprozess, der gerade den aktuellen Dialogschritt in Bearbeitung hat, stößt einen Verbuchungs-Workprozeß an.
  5. Aufgrund der vom Dialog-Workprozeß übermittelten Informationen liest der Verbuchungs-Workprozeß die zur SAP-LUW gehörigen Protokollsätze aus der Tabelle VBLOG.
  6. Der Verbuchungs-Workprozess gibt die Änderungsvormerkung als Änderungsanforderung an die Datenbank und wertet deren Rückmeldungen aus. Im Erfolgsfall löst der Verbuchungs-Prozess nach der letzten Datenbank-Änderung einen Datenbank-Commit aus und löscht die Protokollsätze aus der Tabelle VBLOG. Im Fehlerfall löst der Verbuchungsprozeß einen Datenbank-Rollback aus, läßt die Protokollsätze in der Tabelle VBLOG stehen, kennzeichnet den entsprechenden Protokollsatz als fehlerhaft und sendet eine Nachricht per SAPmail an den Benutzer, der seinen Systemadministrator benachrichtigt.
  7. Die Sperreinträge in der Sperrtabelle werden vom Verbuchungs-Workprozess zurückgesetzt.

Die asynchrone Verbuchung wird dann verwendet, wenn die Antwortzeit eine große Rolle spielt und die Aktualisierungen so komplex sind, daß sie den Aufwand für die Protokollierung der Anforderungen rechtfertigen. Läuft eine Transaktion in einem Hintergrund-Workprozeß, bietet die asynchrone Verarbeitung keine Vorteile.

 

Ende des Inhaltsbereichs