Dialogbausteine, die Verbuchungsfunktionsbausteine aufrufen 

Im Gegensatz zu Transaktionen und ausführbaren Programmen (Reports) starten Dialogbausteine keine neue SAP-LUW. Alle Aufrufe von Verbuchungsfunktionsbausteinen aus einem Dialogbaustein heraus erhalten denselben Verbuchungsschlüssel wie die Funktionsbausteine im aufrufenden Programm. Daher werden Aufrufe von Funktionsbausteinen aus einem Dialogbaustein heraus erst dann ausgeführt, wenn eine COMMIT WORK-Anweisung im aufrufenden Programm auftritt.

In einem Dialogbaustein übergibt COMMIT WORK Datenbankänderungen zwar an die Datenbank (z.B. mit UPDATE), stößt jedoch die Verbuchungstask, in der die Verbuchungsfunktionsbausteine ausgeführt werden, nicht an. Die Funktionsbausteine werden erst ausgeführt, wenn ein COMMIT WORK im aufrufenden Programm erreicht wird.

Wenn Sie Dialogbausteine verwenden, sollten Sie nach Möglichkeit keine Verbuchungsfunktionsbausteine in Unterprogramme aufnehmen, die mit PERFORM ON COMMIT aufgerufen werden. Jedes Auftreten eines PERFORM ON COMMIT in einem Dialogbaustein (d.h. mit oder ohne Verbuchungsfunktionsbausteinaufrufen) kann Probleme bereiten.

Der Grund dafür ist, daß Dialogbausteine einen eigenen Rollbereich haben, der beim Beenden der Bausteine verschwindet. Das bedeutet, daß alle lokalen Daten (auch diejenigen, die als Parameterwerte beim Aufruf eines Verbuchungsfunktionsbausteins verwendet wurden) nicht mehr existieren sobald der Commit im Rahmenprogramm erreicht wird.

Ist es jedoch unerläßlich, diese Technik in einem Dialogbaustein zu verwenden (d.h. den Aufruf eines Verbuchungsfunktionsbausteins in ein Unterprogramm aufzunehmen), müssen Sie sicherstellen, daß die Werte der Aktual-Parameter noch bestehen, wenn der Verbuchungsfunktionsbaustein abläuft. Hierzu können Sie die benötigten Werte mit EXPORT TO MEMORY speichern und sie dann mit dem Befehl IMPORT FROM MEMORY vor der COMMIT-Anweisung wieder in das Rahmenprogramm importieren.