Technical Articles
SAP Workflow Dialog zurücklegen
Das Ziel dieses Blogbeitrags ist eine userfreundliche Beendigung eines Dialogs, aufgerufen aus dem SBWP eines SAP Workflows. Der Prozess soll dabei mit einem einzigen Dialogfenster auskommen, eine Kaskadierung aus mehreren Dialogfenstern soll vermieden werden.
Hier kam ich mit dem SAP Workflowframework an Grenzen. Allerdings habe ich einen Workaround gefunden, den ich mit diesem Blogpost teilen möchte.
- Zuordnen: Führt eine Datenbankoperation durch und beendet den Workflow
- Abbrechen: Bricht den Dialog ab und legt das Workitem in den SBWP zur späteren Bearbeitung zurück
- WF löschen: Beendet den Workflow ohne eine Datenbankioperation durchzuführen.
Die Optionen “Zuordnen” und “WF löschen”, führen die jeweilige Operation durch und beenden den Workflow.
Das Problem ist nun die Option “Abbrechen”, das Workitem wird nicht zurückgelegt. Für das Zurücklegen gibt es prinzipiell in der Workflowaktivität die Option “Verarbeitungsende bestätigen”.
Das hat zur Folge, dass man nach Ausführen der Aktivität gefragt wird, ob man das “Workitem beenden” oder “Abbrechen” möchte. Bei “Abbrechen” wird das Workitem zurückgelegt.
Die Abfrage kommt allerdings dann auch bei der Option “Zuordnen”.
Damit ist es möglich, die Datenbankoperation durchzuführen, aber dann im zweiten Dialog auf “Abbrechen” zu gehen, wodurch man das Workitem zurückerhält und die Datenbankoperation noch einmal durchführen könnte. Das ist oftmals nicht gewollt.
Die Lösung ist nun, eine Schleifenbedingung um die Aktivität zu legen. Die Schleife wird erst verlassen, wenn der Dialog erfolgreich beendet wird.
Allerdings wird der Dialog beim Zurücklegen sofort wieder erneut aufgerufen, der Benutzer kommt nicht in den SBWP zurück.
Hierzu wird eine zusätzliche Aktivität benötigt, die 5 Sekunden wartet (ABAP-Klassenmethode mit WAIT UP TO 5 SECONDS). Dies hat zur Folge, dass der Dialog geschlossen wird und 5 Sekunden später im SBWP wieder angeboten wird und dann erst erneut aufgerufen werden kann.
Zusammengefasst kann man einen benutzerfreundlichen, zurücklegbaren Dialog designen, der mit einem einzigen Dialog auskommt. Die nicht passende Standardabfrage zum “Verarbeitungsende bestätigen” wird vermieden.
Wenn der Blog Post euch gefallen habt, folgt mir gerne hier in der SAP Community. Bei Fragen oder weitere Optimierungsvorschlägen schreibt gerne in die Kommentare unter diesem Blog oder kontaktiert mich auf LinkedIn oder Xing. Vielen Dank.