Der Workflow startet nicht, was ist da denn los? Ich denke Workflows zu debuggen und zu verstehen stellt für viele Berater einen kleinen Stolperstein dar.
Besonders im Umfeld der SAP Learning Solution bieten die Business Workflows noch einige ganz besondere Feinheiten, die uns das Leben schwer machen wollen. Dort können wir im Customizing das Auslösen von Ereignissen definieren, die dann zur Ausführung von Workflows führen sollen.
In diesem Fall wollten wir erreichen, dass die Mitarbeiter des Kunden ihre Trainingsteilnahme eigenständig im Portal buchen konnten. Eigentlich eine einfache Aufgabe, da der Standardworkflow einen Großteil der Anforderungen bereits abdecken kann.
![Übersicht: WS12000003]()
Übersicht: WS12000003
Die Abbildung zeigt den durch SAP gelieferten Workflow WS12000003 (LSO_APPROVE1).
SAP schreibt dazu im Einführungsleitfaden (SPRO), dass in der Tabelle LSOWF_CUSTOMIZE ein Eintrag anzulegen ist. Dieser wird in Abhängigkeit zur Trainingsform angelegt. (Eine Alternative bietet hier der Infotyp 5041 – Workfloweinstellungen, der eine Definition am jeweiligen Trainingstypen erlaubt.)
![LSO Workflow Customizing in der SPRO]()
LSO Workflow Customizing in der SPRO
Wir haben also einen solchen Eintrag hinzugefügt, der den folgenden Werten entsprach.
![LSO Workflow Customizing in der SPRO 2]()
LSO Workflow Customizing in der SPRO 2
Die Angaben entsprechen in diesem Falle dem Standard-Customizing, wie im Einführungsleitfaden empfohlen. Natürlich sollten Sie hier das für sich passende Customizing hinterlegen. Zur Nutzung des zuvor gezeigten Workflows ist es aber unabdingbar, dass Sie das hier gezeigte Business Object LSO_PARTIC mit dessen Ereignis BOOKREQUEST verwenden.
Nun aber der Clou: Die Vermutung liegt nahe, dass Sie hier definieren, welcher Workflow letztendlich gestartet wird. Dies stimmt aber nur bedingt. Ein Blick ins Coding (Funktionsbaustein LSO_IF_PARTICIPATION_CREATE_C) zeigt, dass lediglich das Ereignis ausgelöst wird. Ereigniskopplung dient später zum Start des Workflows.
Die hier hinterlegte ID wird durch die Learning Solution genutzt, um bereits laufende Workflows zu finden, hat aber keinen Einfluss auf den Workflowstart.
Wer an dieser Stelle denkt, das bisherige Customizing reiche aus: Weit gefehlt! Die nächste Buchung startet leider kein Workflow. Aber warum ist das so?
Der Ereignis-Trace
Den Systemtrace kennen sicherlich die meisten. Eine Transaktion zeigt nicht das gewünschte Ergebnis, eine kurzer Trace mittels ST01 und schon ist klar, welcher Berechtigungsfehler uns im Wege steht. Workflowstarts zu debuggen ist nicht ganz so trivial, allerdings hat die SAP uns auch hier ein Mittel an die Hand gegeben: Ereignis-Trace
Um den Ereignis-Trace zu nutzen benötigen wir zuerst die Transaktion SWELS (Ereignis-Trace ein-/ausschalten).
![Ereignis-Trace einschalten]()
Ereignis-Trace einschalten
Hier schalten wir den Ereignis-Trace ein. Anschließend ist es möglich mittels der Transaktion SWEL (Ereignis-Trace anzeigen) die geloggten Ereignisse anzusehen. Das ganze wird allerdings erst interessant, wenn wir ein Ereignis erzeugen, das geloggt werden soll. Dies können wir selbstverständlich durch Buchung eines Trainings tun, oder wir erzeugen unser Ereignis mittels der Transaktion SWUE.
![Erzeugen eines Ereignisses in der SWUE]()
Erzeugen eines Ereignisses in der SWUE
In dieser Transaktion ist es zudem möglich, dass Ereignis so zu erzeugen, dass es sogar mit dem Debugger nachvollziehbar wird, was im Hintergrund passiert.(Verbraucher-FB synchron auslösen)
Lohnenswert ist es, nach Eintragen des zu erzeugenden Ereignisses zu allererst auf „Ereignisverbraucher“ zu klicken. Hier wird uns angezeigt, ob das Ereignis später im luftleeren Raum verhallt oder es einen Behandler gibt, der etwas mit dem Ereignis anfangen kann.
![Rückmeldung: Es gibt keinen Verbraucher]()
Rückmeldung: Es gibt keinen Verbraucher
Wenn wir nicht genau wissen, wonach wir suchen, hilft uns hier der zuvor genannte Ereignis-Trace. (SWEL)
![Auslesen des Ereignis-Trace]()
Auslesen des Ereignis-Trace
Hier können wir sämtliche Ereignisse finden und bekommen auch die Verbraucher geliefert, wenn diese konfiguriert sind.
Wenn der Business Workflow nicht richtig zuhört
Wir haben also herausgefunden, dass wir keinen Ereignisverbraucher definiert haben, das wollen wir nun ändern. Der einfachste Weg ist es, den entsprechenden Workflow in der Transaktion SWDD (Workflow Builder) zu öffnen und das Startereignis zu aktivieren.
![Aktivieren der Ereignistypkopplung]()
Aktivieren der Ereignistypkopplung
Startereignisse können wir über die Grunddaten (Hut) des Workflows definieren. Einfacher gelangen wir an diese Stelle, indem wir doppelt auf „Buchung beantragt“ klicken.
![Aktivieren der Ereignistypkopplung]()
Aktivieren der Ereignistypkopplung
Mit einem Klick aktivieren wir nun das Startereignis und ab sofort gibt es einen Verbraucher. Beachten Sie, dass Sie an dieser Stelle nach einem Customizing-Auftrag gefragt werden. Anschließend aktivieren wir noch den Workflow mittels Zauberstab.
Um zu kontrollieren, welche Ereignisverbraucher aktiv sind, empfiehlt sich die Transaktion SWE2 (Anzeige/Pflege Ereignistypkopplungen)
Hier finden wir nun einen Eintrag, der systemseitig erzeugt wurde und den Aktivierungsstatus des Workflows zeigt
![Kontrollieren der Ereignistypkopplung]()
Kontrollieren der Ereignistypkopplung
Viel Erfolg bei der Einrichtung Ihres Workflows.
Habe auch Sie Erfahrungen in der Einrichtung und Pflege von Workflows gemacht, die Sie gerne mit mir teilen möchten? Ich freue mich sehr auf Ihre Reaktionen.