24
Bonn Boston Ilja-Daniel Werner Workflow-Programmierung mit ABAP ®

Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

Embed Size (px)

Citation preview

Page 1: Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

Bonn � Boston

Ilja-Daniel Werner

Workflow-Programmierung mit ABAP®

1677-7.book Seite 3 Dienstag, 8. März 2011 2:05 14

Page 2: Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

5

Inhalt

9

1 Einleitung ............................................................................. 9

13

2 Erste Schritte ........................................................................ 13

2.1 Customizing der Workflow Engine .......................................... 132.1.1 Customizing durchführen (Transaktion SWU3)............ 132.1.2 Systembenutzer WF-BATCH ...................................... 152.1.3 Die logische RFC-Destination

»WORKFLOW_LOCAL_xxx« ....................................... 162.1.4 Customizing überprüfen

(Transaktionen SWU3 und SWUI_VERIFY) ................. 172.2 Workflows starten und Workflow-Ereignisse beobachten ....... 21

2.2.1 Ereignisse beobachten (Transaktionen SWELS und SWEL) ............................ 22

2.2.2 Workflow-Definitionen betrachten (Transaktion SWDS) .................................................. 25

2.3 Eine minimale Organisationsstruktur pflegen .......................... 302.3.1 Organisationseinheiten anlegen

(Transaktion PPOCW) ................................................ 312.3.2 Organisationseinheiten bearbeiten

(Transaktion PPOMW) ............................................... 332.3.3 SAP-Benutzer zu Planstellen zuordnen ....................... 352.3.4 Bearbeiterfindung testen (Transaktion PFAC) ............. 37

41

3 Workflow-Entwicklungsumgebung zusammenstellen ........ 41

3.1 Relevante Transaktionen ......................................................... 413.2 Workflow-Entwicklungsvorgang mit

SAP-Standardfunktionalität ..................................................... 423.3 Ereignisse ............................................................................... 43

3.3.1 Ereignistypkopplung .................................................. 443.3.2 Ereignisinstanzkopplung ............................................ 45

3.4 Verwendungsnachweis rund um SAP Business Workflow ........ 463.4.1 Vom Objekt über die Standardaufgabe

zum Workflow-Muster .............................................. 463.4.2 Vom BOR-Objekt zur Standardaufgabe (klassisch) ...... 47

1677-7.book Seite 5 Dienstag, 8. März 2011 2:05 14

Page 3: Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

Inhalt

6

3.4.3 Von der ABAP-Objects-Klasse zur Standardaufgabe (klassisch) ....................................... 48

3.4.4 Von der Standardaufgabe zum Workflow-Muster ....... 49

51

4 Methoden, Workitems und Ereignisse ................................ 51

4.1 Arten von Methoden im Workflow ......................................... 514.2 Arten und Status von Workitems ............................................ 544.3 Ereignisse und deren Zustellung .............................................. 57

4.3.1 Check- und Verbrauchertyp-Funktionsbausteine......... 594.3.2 Ereignis-Queue .......................................................... 61

63

5 In die Bearbeiterfindung eingreifen ..................................... 63

5.1 Workflow erstellen ................................................................. 635.2 Bearbeiterfindung dynamisch festlegen und auswählen ........... 645.3 Workflow-Muster testen ........................................................ 685.4 Bearbeiterfindung mit Aufgabengruppen modellieren ............. 715.5 Bearbeiterfindung mit Zuständigkeiten ................................... 77

5.5.1 Regel basierend auf Zuständigkeiten anlegen ............. 785.5.2 Regel in das Workflow-Muster einbinden .................. 82

5.6 Bearbeiterfindung programmieren .......................................... 845.6.1 Klassischen Funktionsbaustein zur

Bearbeiterfindung erstellen ........................................ 845.6.2 ABAP-Klasse zur Bearbeiterfindung erstellen ............. 90

93

6 Container, Datenfluss und Bedingungen im Workflow ....... 93

6.1 Vorbereitung .......................................................................... 936.2 Container – wo befinden sich die Daten,

die ein Workflow benutzt? ..................................................... 946.2.1 Ereigniscontainer ....................................................... 966.2.2 Workflow-Container .................................................. 966.2.3 Regelcontainer ........................................................... 976.2.4 Aufgabencontainer .................................................... 976.2.5 Methodencontainer ................................................... 98

6.3 ABAP-Coding mit Containern (Makros) ................................... 986.4 ABAP-Objects-Klassen zum Umgang mit

Containern, Datenflüssen und Bedingungen ........................... 101

1677-7.book Seite 6 Dienstag, 8. März 2011 2:05 14

Page 4: Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

Inhalt

7

6.5 Codingbeispiel zu Containern, Datenflüssen und Bedingungen ................................................................... 1036.5.1 Containerelemente erzeugen ..................................... 1036.5.2 Container erzeugen .................................................... 1056.5.3 Container konvertieren .............................................. 1076.5.4 Workflow-Bedingungen erstellen ............................... 1076.5.5 Datenfluss definieren ................................................. 110

6.6 Erweiterte Funktionalität im Datenfluss .................................. 1136.7 Programmierter Datenfluss ..................................................... 114

7 Beispielprojekt – ABAP-Objects-Klasse für den Workflow gestalten .................................................117

7.1 Ausgangssituation ................................................................... 1177.2 Besonderheiten im Workflow-Umfeld ..................................... 1197.3 Klasse anlegen, »IF_WORKFLOW« einbinden

und Schlüsselattribute definieren ............................................ 1217.4 Instanzverwaltung und -erzeugung ......................................... 1237.5 Die kleine Persistenz für »zwischendurch« .............................. 1277.6 Fehlerbehandlung mit Ausnahmeklassen ................................ 1327.7 Workflow-Ereignisse aus ABAP-Objects-Klassen erzeugen ...... 1347.8 BOR-Objekte als Attribute in ABAP-Objects-Klassen .............. 137

8 Beispielprojekt – BOR-Objekt für den Workflow gestalten .............................................................141

8.1 Ausgangssituation ................................................................... 1418.2 Neues BOR-Objekt erzeugen .................................................. 1438.3 Persistenz für BOR-Attribute anlegen ..................................... 1448.4 Schlüssel- und andere Attribute anlegen ................................. 1458.5 BOR-Methoden anlegen ......................................................... 154

8.5.1 Weitere BOR-Interfaces ............................................. 1558.5.2 Methode »CREATE« überdefinieren ........................... 1558.5.3 Methodencontainer für Parameter ............................. 1568.5.4 Methode »DELETE« überdefinieren ............................ 159

8.6 Ausnahmen und Fehler ........................................................... 1608.7 BOR-Ereignisse ....................................................................... 1618.8 BOR-Freigabestatus ................................................................ 1638.9 BOR-Default-Vorgaben ........................................................... 1658.10 Vererbung und Delegation im BOR ......................................... 166

1677-7.book Seite 7 Dienstag, 8. März 2011 2:05 14

Page 5: Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

Inhalt

8

169

Anhang ...................................................................................... 169

A Schritttypen und Beispiel-Workflows .................................................. 171A.1 Schritttypen ............................................................................ 171A.2 Weitere Workflow-Techniken ................................................. 175

B Wichtige Transaktionen ...................................................................... 177C Der Autor ........................................................................................... 181

Index....................................................................................................... 183

1677-7.book Seite 8 Dienstag, 8. März 2011 2:05 14

Page 6: Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

9

1 Einleitung

Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmiererwillkommen heißen. Aus meinen Erfahrungen aus den eigenen Workflow-Projekten heraus – ich bin von Haus aus ABAP- und Java-Programmierer – istdieses Buch entstanden. Sobald ein Workflow-Projekt in Angriff genommenwird, springen plötzlich »Workflow-Menschen« mit einem ganz seltsamenVokabular durch die Abteilung und haben völlig ungewohnte Ansprüche anTransporttermine, Parametergestaltung, Qualitätssicherung und Testszena-rien. Warum genau ihnen diese Dinge so wichtig sind, verraten sie nicht.Nach geraumer Zeit sind die »Workflow-Menschen« wieder weg, und Siesollen sich um den ABAP-Teil der in Betrieb genommenen Workflows küm-mern. Das ist nicht schwer, könnte man denken. Doch sobald zwei, drei völ-lig harmlose Sachen verändert werden, geht nichts mehr. Und schon sind die»Workflow-Menschen« wieder da.

Der »Haken« oder die besondere Herausforderung bei der Workflow-Pro-grammierung besteht darin, dass die Workflow-bezogene ABAP-Entwick-lung eine etwas andere Programmierdisziplin voraussetzt und man sich alsEntwickler in das Prozesswissen »einfühlen« muss. Sie benötigen also nichtnur besondere Programmierkenntnisse, sondern auch ein ganz speziellesProzesswissen.

Motivation und Zielgruppe

Die Modellierung neuer Workflows ist hierbei zwar das offensichtlichste»Neuland«, es ist aber gar nicht so dramatisch, wie es scheinen mag, sich anden Workflow-Builder und die einzelnen Schritttypen im Workflow zugewöhnen. Dazu gibt es Literatur, SAP-Onlinehilfen und natürlich auch SAP-Schulungen (siehe auch Anhang A). Da ich einige dieser Schulungen mittler-weile selbst halte, kenne ich die Lücken, die dennoch zwischen dem ABAP-Programmieralltag und den Übungsaufgaben innerhalb der Schulung klaffen.Genau diesen Lücken soll sich dieses Buch der Reihe SAP Essentials annehmen.

Die Arbeit mit der Workflow Engine unterscheidet sich von der klassischenApplikationsentwicklung dahingehend, dass unterschiedliche Personen inunterschiedlichen Rollen ihren Code ausführen. Sie müssen sich in komple-

1677-7.book Seite 9 Dienstag, 8. März 2011 2:05 14

Page 7: Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

Einleitung1

10

xeren Workflows mehrere Testbenutzer anlegen lassen und Ihr Coding auchunter diesem Aspekt untersuchen. Zusätzlich muss immer für Persistenz,eindeutige Schlüssel und zentrales Logging gesorgt werden – alles Aspekte,die beim »normalen« Programmieren in ABAP nicht in diesem besonderenMaße dominieren.

Dieses Buch wendet sich an alle, die sich an der Workflow-Entwicklungbeteiligen sollen und ihre ABAP-Welt wartungsfreundlich und trotzdem»Workflow-bewusst« gestalten wollen. Natürlich finden auch Workflow-Modellierer, die die ABAP-Seite der Workflow-Programmierung näherbetrachten wollen, mögliche »Einstiegspunkte«.

Inhalt und Aufbau

Sie lernen in diesem Buch die Workflow Engine aus Sicht der ABAP-Entwick-lung kennen.

Zunächst befassen Sie sich in Kapitel 2, »Erste Schritte«, mit der Workflow-Umgebung und deren Customizing. Sie erfahren, wie Sie Beispiel-Workflowsfinden und betrachten können. Im Rahmen dieses Workshops kristallisierensich in Ihrem Team gleich die SAP-Basis-Administratoren heraus, die Sie bes-ser in Zukunft zum Stammtisch begleiten. Ferner führe ich Sie durch diePflege der Organisationsstrukturen, die Sie für das Thema Bearbeiterfindungbenötigen.

Danach wird in Kapitel 3, »Workflow-Entwicklungsumgebung zusammenstel-len«, die Workflow-Entwicklungsumgebung näher vorgestellt, um ein Gefühlfür die Arbeitsweise während der Entwicklung im Workflow-Umfeld zuerhalten. Sie lernen, in den Workflow-Komponenten zu navigieren und miteinem Verwendungsnachweis die Übersicht zu behalten.

In Kapitel 4, »Methoden, Workitems und Ereignisse«, werden die BegriffeWorkitem, Methoden und Ereignisse sowie die Konzepte, die hinter diesenBegriffen stehen, aufgegriffen und näher erläutert.

Das komplette Kapitel 5, »In die Bearbeiterfindung eingreifen«, befasst sichmit den Möglichkeiten, die Bearbeiterfindung durch die Administration vonZuständigkeiten und durch programmierte Bearbeiterfindung zu beeinflus-sen. So schön ein Prozess auch modelliert und so vielseitig das Modell auchausgelegt sein mag, so wichtig ist es doch auch, dass die richtigen Köpfe aneinem Prozess beteiligt werden. Und genau dies ist eine oft unterschätzteProgrammiertätigkeit im Workflow-Umfeld.

1677-7.book Seite 10 Dienstag, 8. März 2011 2:05 14

Page 8: Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

Einleitung 1

11

Selbst wenn ein Workflow in Ihrem Betrieb etabliert ist, die Personen, diedaran beteiligt sind, wechseln vermutlich häufiger als das Workflow-Design.Und es kann ja nicht angehen, dass bei jedem neuen Mitarbeiter oder jedemAbteilungswechsel der Workflow-Experte oder Sie gerufen werden müssen.Das mächtigste Tool für diese Aufgabe ist das aus dem HR entlehnte Organi-sationsmanagement für die Workflow Engine. Sie kommen eben einfachnicht umhin, sich auch als ABAP-Programmierer mit dieser HR-nahen Philo-sophie ein klein wenig auseinanderzusetzen.

In Kapitel 6, »Container, Datenfluss und Bedingungen im Workflow«, lernenSie, wie Sie mit Hilfe der ABAP-Programmierung den Standardobjekten imSAP-Workflow »etwas mehr beibringen«. Wir befassen uns eingehend mitden Möglichkeiten, die die Workflow-Container als allgemeingültige Daten-struktur bieten. Übungsbeispiele behandeln den Eingriff in Workflow-Abläufe (Bedingungseditor), den Datenfluss oder die Ereigniserzeugung.

Die beiden letzten Kapitel – Kapitel 7, »Beispielprojekt – ABAP-Objects-Klassefür den Workflow gestalten«, und Kapitel 8, »Beispielprojekt – BOR-Objekt fürden Workflow gestalten« – stellen die Entwicklung konkreter Workflow-Objekte dar. Basierend auf identischer Kernfunktionalität wird einmal eineWorkflow-fähige ABAP-Objects-Klasse und einmal ein BOR-Objekt erarbei-tet. Die Besonderheiten von BOR-Objekten wie Erweiterung, Vererbung undDelegation werden am konkreten Beispiel diskutiert.

Im Anhang des Buches finden Sie weitere Informationen: Anhang A zähltalle möglichen Workflow-Schritte auf und verweist auf Beispiel-Workflowsaus dem SAP-Standard, die deren Verwendung zeigen. In Anhang B werdendie wichtigsten Transaktionen für die Workflow-Programmierung mit ABAPnochmals zusammengetragen.

Die Darstellung arbeitet durchgehend mit zahlreichen Abbildungen undSchritt-für-Schritt-Anleitungen, die Ihnen dabei helfen, Ihre Workflow-Anforderungen vollständig umzusetzen und dabei typische Stolpersteine zuumgehen.

1677-7.book Seite 11 Dienstag, 8. März 2011 2:05 14

Page 9: Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

Workflows starten und Workflow-Ereignisse beobachten 2.2

21

Nach diesem ersten erfolgreichen Workflow sollten Sie sich mit weiterenVerifikations-Workflows befassen, die Sie über die Transaktion SWUI_VERIFY (Test-Workflows starten) erreichen. Als ABAP-Entwickler werdenSie sicherlich einige interessante Beispiele in dieser Liste finden. Führen Siediese aus, und verzweigen Sie möglichst oft in das Workflow-Protokoll. Soerhalten Sie einen Eindruck davon, wie die Workflow Engine »tickt«.

Für ABAP-Programmierer ist das Customizing der Workflow Engine durch-aus interessant.

2.2 Workflows starten und Workflow-Ereignisse beobachten

Nachdem nun die Vorbereitungen für den Betrieb der Workflow Engineabgeschlossen sind, können Sie einem Demonstrations-Workflow etwasnäher zuschauen. Wir werden hier die bereits bekannte Transaktion SWUI_VERIFY als Einstieg verwenden – siehe Abbildung 2.11. Die Workflow-Mus-ter, die dort zur Verfügung stehen, testen die Workflow Engine und verzich-ten weitestgehend auf die Abbildung einer Organisationsstruktur.

Wenn Sie also im Folgenden einen Geschäftsprozess durchspielen, landenalle Workitems zunächst einfach bei Ihnen, dem Workflow-Initiator. Das istder Benutzer, der ein Workflow-Muster manuell gestartet hat oder in dessenBenutzerkontext das startende Ereignis für das Workflow-Muster ausgeführtwurde.

Das Verfahren, nach dem die Workflow Engine die Benutzer ermittelt,denen ein Workitem zugestellt wird, nennt sich Bearbeiterfindung. Zunächstbeschränken wir uns hier auf den Workflow-Initiator, da dies immer derSAP-Benutzer ist, der die Testtransaktion gerade ausführt oder der das rele-vante Ereignis erzeugt hat.

Merkhilfe: Besonders wichtige Hintergrundjobs

Machen Sie sich in jedem Fall mit den klassischen ABAP-Techniken für asynchroneFunktionsaufrufe via tRFC und qRFC vertraut:

� SWWCOND – Workitem-Regelüberwachung

� SWWDHEX – Workitem-Terminüberwachung

� SWWERRE – Workitem-Fehlerüberwachung

� SWWCLEAR – Aufräumarbeiten im Workflow-System

1677-7.book Seite 21 Dienstag, 8. März 2011 2:05 14

Page 10: Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

Erste Schritte2

22

Abbildung 2.11 Transaktion SWUI_VERIFY – viele Testmöglichkeiten für die Workflow Engine

2.2.1 Ereignisse beobachten (Transaktionen SWELS und SWEL)

Ein Geschäftsprozess kann schon einmal etwas länger dauern. Währendeines Geschäftsprozesses kann sogar das SAP-System gestoppt und wiedergestartet werden. Damit sich die Workflow Engine nicht in unzähligen Hin-tergrundschleifen aufhält, hat SAP auf Persistenz und asynchrone Verarbei-tung besonders hohen Wert gelegt.

Um eine solche asynchrone Verarbeitung robust zu gestalten, kommt derZustellung von Ereignissen eine besondere Bedeutung zu – es soll ja nichts»verloren gehen«.

1. Wir setzen nun das Ereignis-Trace ein, um zu beobachten, welche Ereig-nisse im System erzeugt werden und wie sie der Workflow Engine zuge-stellt werden. Schalten Sie also in der Transaktion SWELS (Ereignis-Traceein-/ausschalten) das allgemeine Ereignis-Trace ein – siehe Abbildung2.12.

1677-7.book Seite 22 Dienstag, 8. März 2011 2:05 14

Page 11: Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

Workflows starten und Workflow-Ereignisse beobachten 2.2

23

Abbildung 2.12 Transaktion SWELS – Einschalten des Ereignis-Traces

2. Wechseln Sie dann wieder in die Transaktion SWUI_VERIFY, und startenSie nacheinander die Workflow-Muster WF_Verify025 (siehe Abbildung2.13) und WF_Verify048 (siehe Abbildung 2.14).

Abbildung 2.13 Abwesenheitsmitteilung mit BOR-Objekten

Abbildung 2.14 Abwesenheitsmitteilung mit ABAP-Klassen

Im Wesentlichen erfassen beide Workflows die Abwesenheitsmitteilungeines Mitarbeiters in einem einfachen Formular und legen dieses Formu-lar zur Ansicht bzw. Genehmigung einem weiteren Mitarbeiter vor.

3. Folgen Sie möglichst genau den im rechten Teil des Bildschirms eingeblen-deten Anweisungen zur Durchführung der Test- und Beispiel-Workflows.Während des Tests werden Sie gleich mehreren möglichen Verhaltenswei-sen eines Workitems begegnen:

� Einmal müssen Sie explizit in den SAP Business Workplace wechseln.

� Ein anderes Mal analysiert die Workflow Engine, ob das Workitem fürdenjenigen bestimmt ist, dessen SAP GUI-Instanz gerade aktiv ist.Trifft dies zu, wird das Formular gleich automatisch angezeigt. DiesesVerfahren nennt sich Weiterschalten im Dialog und wird in Test-,Schulungs- und Demonstrations-Workflows gerne eingesetzt. In kom-plexeren Workflows, die umfassende Geschäftsprozesse modellieren,wird dieses Verfahren eher selten verwendet.

1677-7.book Seite 23 Dienstag, 8. März 2011 2:05 14

Page 12: Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

Erste Schritte2

24

� Ein weiteres Mal werden Sie darum gebeten, das Workitem zu been-den. Dieses explizite Beenden kann sinnvoll sein, wenn mehrere oderumfassendere Benutzeraktionen in einem Workflow-Schritt erwartetwerden und das System nicht unbedingt anhand von Ereignissen fest-stellen kann, ob die Voraussetzungen für die Fortsetzung des Work-flows erfüllt sind. Hier muss der agierende Benutzer explizit bestäti-gen, dass er mit dem Workflow-Schritt fertig ist – siehe Abbildung2.15.

Abbildung 2.15 Explizites Beenden eines Workitems

4. Nachdem Sie die Test-Workflows durchlaufen haben, begeben Sie sich indie Transaktion SWEL (Ereignis-Trace anzeigen) und selektieren die Ereig-nisse zum Objekttyp *FORM*. Sie sollten Einträge zu FORMABSENC (ein BOR-Objekt) und CL_SWF_FORMABSENC (eine ABAP-Objects-Klasse oder ABAP-OO-Klasse) sehen – siehe Abbildung 2.16.

Abbildung 2.16 Ereignisse im Ereignis-Trace – BOR-Objekte und ABAP-Klassen als Objekttyp

Workflow-relevante Ereignisse können sowohl durch ABAP-Klassen (zuerkennen am CL_ im Namen) als auch von BOR-Objekten ausgelöst wer-den – merken Sie sich zunächst jedoch nur, dass es diese beiden Objekt-typen gibt.

1677-7.book Seite 24 Dienstag, 8. März 2011 2:05 14

Page 13: Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

Workflows starten und Workflow-Ereignisse beobachten 2.2

25

Hiermit haben Sie eines der wichtigsten Analyse-Werkzeuge der Workflow-Entwicklung bereits kennengelernt. Startet ein Workflow nicht, wird meis-tens auch das auslösende Ereignis nicht erzeugt.

Schalten Sie nun den Ereignis-Trace in der Transaktion SWELS wieder aus,damit nicht unnötig viel in die Tracing-Tabellen geschrieben wird – sieheAbbildung 2.17.

Abbildung 2.17 Transaktion SWELS – Ausschalten des Ereignis-Traces

Die Zustellung von Ereignissen kann von weiteren Kriterien abhängiggemacht werden. Soll zum Beispiel ein Ereignis nur unter bestimmten Bedin-gungen zum Start eines Workflows führen oder sollen abhängig von denParametern eines Ereignisses unterschiedliche Workflows gestartet werden,kommen spezielle ABAP-Funktionsbausteine zum Zuge.

2.2.2 Workflow-Definitionen betrachten (Transaktion SWDS)

Im vorigen Abschnitt haben Sie einen ersten Eindruck vom Zusammenspielzwischen Ereignissen und Workflows gewonnen. Aber wie genau erlangtman eine Übersicht über die genauen Vorgänge innerhalb eines Workflows?

Die Transaktion SWUI_VERIFY bietet im Kontextmenü die Möglichkeit, indie grafische Darstellung des Workflow-Musters zu springen.

1. Wählen Sie dazu auf einem markierten Workflow-Muster per Klick mitder rechten Maustaste das Kontextmenü und hier den Eintrag Workflow-

Definition anzeigen – siehe Abbildung 2.18.

Merkhilfe: Allgemeines zu Workflows und Ereignissen

Folgendes sollten Sie »mitnehmen«:

� Die Objekte, mit denen die Workflow Engine arbeitet – ob nun ABAP-Klassenoder BOR-Objekte –, sind allesamt programmierintensive Elemente.

� Ereignisse können direkt per ABAP-Code erzeugt werden.

� Die Zustellung von Ereignissen und die Auswahl des richtigen Workflows lassensich mit ABAP-Mitteln beeinflussen.

1677-7.book Seite 25 Dienstag, 8. März 2011 2:05 14

Page 14: Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

Erste Schritte2

26

Abbildung 2.18 Transaktion SWUI_VERIFY – per Kontextmenü ein Workflow-Muster ansehen

Den gleichen Effekt erzielen Sie später über die Funktion zur Workflow-Anzeige in der Transaktion SWDS (Workflow-Builder).

2. Geben Sie in der Maske Workflow auswählen unter Aufgabe zur ver-einfachten Selektion das Kürzel des Workflow-Musters ein, und drückenSie dann direkt die Taste (Enter) – siehe Abbildung 2.19.

Abbildung 2.19 Transaktion SWDS – Auswahlbildschirm

1677-7.book Seite 26 Dienstag, 8. März 2011 2:05 14

Page 15: Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

Workflows starten und Workflow-Ereignisse beobachten 2.2

27

3. Sie gelangen zur Schnellansicht der Workflow-Definition eines existieren-den Workflow-Musters (siehe Abbildung 2.20). Eine ähnliche Ansichtkennen Sie ja bereits vom grafischen Workflow-Protokoll.

Der Auswahlbildschirm der Transaktion SWDS – siehe Abbildung 2.19 –macht allerdings hier schon eine weitere Besonderheit der Workflow-Ent-wicklung deutlich: Es können mehrere Versionen eines Workflow-Mustersim System existieren, jedoch ist immer nur eine davon aktiv. Die Idee dahin-ter ist, dass ein bereits gestarteter Workflow mit der Version des Workflow-Musters komplett ablaufen soll, mit der er gestartet wurde. Wird eine neueVersion des Musters erstellt und aktiviert, während ein Geschäftsprozessnoch läuft, soll dieses »Update« zu keinen Inkompatibilitäten führen. NeueWorkflows werden mit der neuen Version des Workflow-Musters gestartet.Alte Workflows laufen mit der alten Version weiter, bis sie beendet sind.

All diese blauen Kästchen in der grafischen Darstellung eines Workflow-Musters – siehe Abbildung 2.20 – stellen einen einzelnen Workflow-Schrittdar.

Abbildung 2.20 Grafische Anzeige der Workflow-Definition

Hier erkennt man sofort die Philosophie der Workflow Engine: Ein einzelner,wiederverwendbarer Workflow-Schritt kann als Standardaufgabe definiert

1677-7.book Seite 27 Dienstag, 8. März 2011 2:05 14

Page 16: Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

Erste Schritte2

28

und in mehreren Workflow-Mustern verwendet werden. In unserem Beispielkönnen mehrere Geschäftsprozesse dazu führen, dass eine Abwesenheitsmit-teilung erfasst wird. Dies könnte sowohl in einem Urlaubs-Workflow als auchin einem Dienstreise- oder Fortbildungs-Workflow notwendig sein.

Wenn Sie Näheres über einen Workflow-Schritt erfahren wollen, können Siedurch Doppelklick in der Definition navigieren. Wählen Sie hierzu etwa denSchritt Abwesenheitsmitteilung genehmigen – siehe Abbildung 2.21.

Abbildung 2.21 Verzweigen in einen einzelnen Workflow-Schritt

Abbildung 2.22 kann man neben vielen weiteren Details entnehmen, dassder Workflow-Schritt Abwesenheitsmitteilung genehmigen in diesemWorkflow-Muster die interne Nummer 24 hat und durch die Standardauf-gabe TS74507936 implementiert wird.

Abbildung 2.22 Workflow-Schritt »Abwesenheitsmitteilung genehmigen«

1677-7.book Seite 28 Dienstag, 8. März 2011 2:05 14

Page 17: Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

Workflows starten und Workflow-Ereignisse beobachten 2.2

29

Klicken Sie im Reiter Steuerung auf das Brillen-Symbol neben der Aufga-bennummer, um wiederum in die Details der Standardaufgabe zu verzwei-gen.

Dem Reiter Grunddaten entnehmen Sie, dass die ABAP-Funktionalität fürdiesen Schritt durch die Methode APPROVEASYNCHRON des BOR-ObjektesFORMABSENC bereitgestellt wird – siehe Abbildung 2.23.

Abbildung 2.23 Grunddaten der Standardaufgabe zur Genehmigung einer Abwesenheits-mitteilung

Dem Reiter Beendende Ereignisse zufolge wird diese Standardaufgabedurch die Standardereignisse FORMABSENC-APPROVED und FORMABSENC-

REJECTED beendet. Mindestens eines dieser Ereignisse haben Sie bereits imEreignis-Trace gesehen – siehe Abbildung 2.24.

1677-7.book Seite 29 Dienstag, 8. März 2011 2:05 14

Page 18: Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

Erste Schritte2

30

Abbildung 2.24 Liste der Ereignisse, die die Standardaufgabe beenden können

Durch diese Beispiele wird klar, dass nur der Prozessablauf selbst in einemWorkflow-Muster modelliert wird. Die eigentliche SAP-Funktionalität istdurch BOR-Objekte oder ABAP-Klassen gebündelt.

2.3 Eine minimale Organisationsstruktur pflegen

Echte Geschäftsprozesse umfassen unterschiedlichste Benutzer und Abtei-lungen. Nehmen wir beispielsweise einen Urlaubsantrag: Es gibt den Antrag-steller, dessen fachlichen Vorgesetzten als Genehmiger und eventuell nochdie HR-Abteilung (Human Resources).

Wir kommen also nicht umhin, all diese Beteiligten eines Workflows irgend-wie zusammenzufassen und zu verwalten.

Da jedes SAP-System die Steuertabellen von SAP ERP HCM mitbringt undHCM ein sehr mächtiges Werkzeug für die Verwaltung solcher Organisations-

Merkhilfe: Datenfluss

Folgendes sollten Sie »mitnehmen«:

� In die Art und Weise, wie die Daten aus dem Workflow zu den BOR-Objektenund ABAP-Klassen transportiert werden, kann man durch ABAP-Programmie-rung eingreifen.

� Die Variablen, die im Workitem-Text angezeigt werden, stützen sich auf BOR-Attribute. Diese können Sie ebenfalls so in ABAP programmieren, dass sie erstzum Zeitpunkt der Abfrage berechnet werden.

1677-7.book Seite 30 Dienstag, 8. März 2011 2:05 14

Page 19: Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

183

Index

A

ABAP-Objects-InterfaceIF_SERIALIZABLE_OBJECT 120, 128,

129IF_WORKFLOW 121

ABAP-Objects-Klasse 30CL_ABAP_ZIP 117CL_SWF_BND_BINDING 102CL_SWF_CNT_CONTAINER 101CL_SWF_CNT_CONVERSION_SERVICE

102CL_SWF_CNT_ELEMENT 102CL_SWF_CNT_FACTORY 98CL_SWF_EXP_FACTORY 102CL_SWF_RLS_CONDITION 102CL_XML_DOCUMENT 118, 142im Workflow nutzen 11, 117persistente Klasse 118

Aufgabengruppe 71Ausnahme

Nachrichtenklasse 160Ausnahmeklasse 132

CX_BO_ACTION_CANCELLED 133CX_BO_APPLICATION 132CX_BO_ERROR 120, 132CX_BO_INSTANCE_NOT_FOUND 132CX_BO_TEMPORARY 120, 133

B

Bearbeiterfindung 63, 64asynchron auszuführende Funktion 90durch ABAP-Objects-Klasse 90dynamische 64, 76mit Zuständigkeit 77Testen (Transaktion PFAC) 37, 39über Funktionsbaustein 84

Benutzer WF-BATCHHintergrundschritt 52SAP_ALL 15SAP_BC_BMT_WFM_SERV_USER 16Systembenutzer 15

BOR-Ereignis 161BOR-Freigabestatus 163

Ändern 165freigegeben 164implementiert 164modelliert 163obsolet 164

BOR-InterfaceIFAUTH 144IFCREATE 144, 155IFDELETE 144, 155IFFIND 144IFSAP 144, 154

BOR-MakroEXIT_CANCELLED 161EXIT_NOT_IMPLEMENTED 159EXIT_OBJECT_NOT_FOUND 154, 161EXIT_RETURN 160SWC_CREATE_OBJECT 154SWC_GET_ELEMENT 158SWC_REFRESH_OBJECT 52, 151SWC_SET_ELEMENT 152, 157SWC_SET_TABLE 157

BOR-MethodeCreate 156Display 144ExistenceCheck 144, 153

BOR-Objekt 30als Attribut 137Datenbankattribut 142, 147Default-Attribut 165, 166Default-Methode 165, 166Delegation 166Freigabestatus 163GET_PROPERTY 152im Workflow nutzen 11, 141Referenz auf anderes BOR-Objekt 144Referenz auf sich selbst (self) 153Schlüsselfeld 145SUBTYP 166SUPERTYP 166Variable OBJECT-_<Tabelle> 151Variable OBJECT-_<VirtuellesAttri-

but> 151

1677-7.book Seite 183 Dienstag, 8. März 2011 2:05 14

Page 20: Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

184

Index

Variable OBJECT-KEY-_<Schlüsselfeld> 151

Vererbung 166virtuelles Attribut 147XML_DOC 142, 147

BOR-Schlüssel 142SIBFLPORB 142

C

Container 93ABAP-Objects-Klasse zur Programmie-

rung 101Aufgabencontainer 97Element erzeugen 103Ereigniscontainer 96Erzeugen 105Konvertieren 107Methodencontainer 98Regelcontainer 97Struktur SWCONT 88Workflow-Container 96

Containerelement 93_RULE_RESULT 97_WF_INITIATOR 96Erzeugen 103Initialwert 95Merkmal 95obligatorisches 95zur Bearbeiterfindung nutzen 66

CustomizingTransaktion SWU3 13Überprüfen 17Verifikations-Workflow starten 17Workflow Engine 13

D

DatenbankattributAnlegen 147

Datenfluss 94Datenfluss-Debugger 111Definieren 110programmierter 114zur Workflow-Regel 82

Datenflusseditor 75, 119Syntax 113

Default-Attribut 165

Default-Methode 165Delegation

eines BOR-Objekts 166Verkettung 167

Dialogschrittmit Ende-Bestätigung 64

Dialog-WorkitemWeiterschalten 23

E

Entscheidungsaufgabe 18Ereignis 57

Beenden 29Check-Funktionsbaustein 58Ereignisbehandler 135Erzeugen (SWE_EVENT_CREATE) 162Erzeugen

(SWE_EVENT_CREATE_FOR_UPD_TASK) 162

innerhalb einer ABAP-Objects-Klasse 134

Startereignis 57Verbraucher-Funktionsbaustein 58Verbrauchertyp-Funktionsbaustein 59

Ereignis-Queue 61Ereignis-Queue-Browser 62Ereignis-Trace 22

Ein- und ausschalten (Transaktion SWEL(S)) 25

Transaktion SWEL 22Transaktion SWELS 22

EreignistypkopplungFlag »Auslösendes Objekt existiert nicht«

162

F

Fehlertemporärer 133

Folgemethode 53Funktionsbaustein

SAP_WAPI_START_WORKFLOW 97SWE_EVENT_CREATE 162SWR_START_WORKFLOW 97

FuntkionsbausteinSWE_EVENT_CREATE_FOR_UPD_TASK

162

1677-7.book Seite 184 Dienstag, 8. März 2011 2:05 14

Page 21: Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

185

Index

G

generelles Weiterleiten 74GUID 118

GUID_CONVERT (Konvertieren) 129GUID_CREATE (Erzeugen) 129

H

Hauptmethode 53

I

Instanzverwaltung 119, 120, 123Interface IF_WORKFLOW

BI_OBJECT~DEFAULT_ATTRIBUTE_VALUE 122

BI_OBJECT~EXECUTE_DEFAULT_METHOD 122

BI_OBJECT~RELEASE 123, 127BI_PERSISTENT~FIND_BY_LPOR 122,

125BI_PERSISTENT~LPOR 122BI_PERSISTENT~REFRESH 122, 126

L

LebenszyklusInstanzverwaltung für ABAP-Objects-

Klasse 119von ABAP-Objects-Klasse und BOR-

Objekt 118Linienvorgesetzter 32

M

MD5-Hashals ID für Schlüsselstruktur 118

Merkhilfe 25, 30, 40BOR-Editor 153Haupt- und Nebenmethode 53Transaktionen in der Workflow-Umge-

bung 41wichtige Hintergrundjobs 21

Methodeasynchrone 51synchrone 51Vor-, Folge- und Nebenmethode 53

Methodencontainer 156RESULT-Element 157

N

Nachrichtenklassefür Fehlermeldung im Workflow-Umfeld

160Nebenmethode 53

O

OrganisationseinheitAnlegen (Transaktion PPOCW) 31Bearbeiten (Transaktion PPOMW) 33Planstelle 34Vorgesetzter 32

Organisationsstruktur 30

P

ParForEach 175persistente Objektreferenz (POR) 123Persistenz 127Persistenzschicht 120Planstelle 33

SAP-Benutzer 35

R

Regelbasierend auf Funktionsbaustein 84basierend auf Zuständigkeit 78im Workflow-Muster 82Regelcontainer 97Simulieren 81Struktur SWHACTOR 88

RFC-DestinationWORKFLOW_LOCAL_xxx 16

1677-7.book Seite 185 Dienstag, 8. März 2011 2:05 14

Page 22: Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

186

Index

S

SAP Business Workplace (SBWP) 17SAP-Hinweis

1251255 (Berechtigungen für Systembe-nutzer WF-BATCH) 16

1334035 (Probleme beim Ausführen von Nebenmethoden) 53

888279 (Reglementierung der Workflow-last) 16

935047 (Erzeugung von GUIDs) 129SAP_WAPI 56

Funktionsgruppe SWRC 56Funktionsgruppe SWRI 56Funktionsgruppe SWRR 56SAP Workflow-API 97

SchlüsselstrukturSIBFLPOR 122

SchritttypAblaufsteuerung 173Ad-hoc-Anker 175Aktivität 171Bedingung 172Benutzerentscheidung 172Block 174Containeroperation 172Dokument aus Vorlage 173Ereigniserzeuger 173Formular 174lokaler Workflow 174Mail versenden 174Mehrfachbedingung 172paralleler Abschnitt 173Schleife (UNTIL/WHILE) 174Sub-Workflow 171unbestimmter Schritt 172Warteschritt (Warten auf Ereignis) 173Web-Aktivität 175

Standardaufgabe 27Startereignis 57Struktur

nach Benutzer auflösen 39SIBFLPOR 118, 122SIBFLPORB 142

Sub-Workflow 97

T

temporärer FehlerDialog-Workitem 133Hintergrund-Workitem 134

Terminüberwachung 176Transaktion

PFAC (Workflow-Regel testen/pflegen) 37, 63, 78

PFTC (Workflow-Aufgaben pflegen) 77PPOCW (Organisation und Besetzung

(Workflow) anlegen) 31PPOMW (Organisationseinheit bearbei-

ten) 33SBWP (SAP Business Workplace) 17SE80 (Entwicklungsumgebung ABAP)

121SE91 (Nachrichtenpflege) 160ST22 (ABAP Laufzeitfehler) 177SWDM (Business Workflow Explorer)

46SWDS (Workflow-Builder) 26, 27SWE5 (Konsistenzprüfung für Ereignis-

kopplungen) 177SWEL (Ereignis-Trace anzeigen) 24SWEL(S) (Ereignis Trace) 22SWEQADM (Administration der Ereig-

nis-Queue) 62, 177SWEQBROWSER (Ereignis-Queue-Brow-

ser) 62SWETYPV (Ereignistypkopplung) 58, 60SWF_GMP (Workflow-Administrator-

Übersicht) 177SWI11 (Verwendungsnachweis für Auf-

gaben) 49SWI2_ADM1 (Workitems ohne Bearbei-

ter) 91, 177SWI2_ADM2 (Workitems mit gelöschten

Bearbeitern) 177SWIA (Workitem als Administrator bear-

beiten) 177SWO1 (Business Object Builder) 47,

143, 145, 156, 167SWU_OBUF (Organisationspuffer auffri-

schen) 37SWU3 (Automatisches Workflow-Custo-

mizing) 13, 177SWUI_VERIFY (Test-Workflows) 21,

25, 63

1677-7.book Seite 186 Dienstag, 8. März 2011 2:05 14

Page 23: Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

187

Index

SWUS (Workflow Testumgebung) 68SWWA (Workitem-Terminüberwachung

pflegen) 177SWWB (Workitem-Terminüberwachung

erneut einplanen) 177SWWD (Workitem-Fehlerüberwachung

konfigurieren) 177SWWL (Workitems löschen) 177

Trigger-Zeitpunkt 43

V

VerkettungDelegation 167

Verwendungsnachweis 46ABAP-Objects-Klasse in Standard-

aufgabe 48BOR-Objekt in Standardaufgabe 47Standardaufgaben in Workflow-Mustern

49virtuelles Attribut

Anlegen 147mit Datentypreferenz anlegen 149

Vor-, Neben- und Folgemethode 176Vorgesetzter

Leiter der eigenen Organisationseinheit 35

Vormethode 53

W

Weiterleiten 74Weiterschalten

im Dialog 23Worfklow Engine

RFC-Destination WORKFLOW_LOCAL_xxx 16

WorkflowAufgabe kopieren 73Default-Attribut 119Default-Methode 119Standardaufgabe 27Testumgebung 68

Workflow EngineContainer 93Customizing 13Datenfluss 93

Hintergrundjob 21Laufzeitumgebung 14Methode 51Protokoll 19Selbsttest 21SWWDHEX (Hintergrundjob) 53WF-BATCH (Systembenutzer) 15XML-Persistenz 94

Workflow-AufgabenEntscheidungsaufgabe 18

Workflow-BedingungErzeugen 107

Workflow-Builder 27, 64Wizard 65

Workflow-DefinitionAnzeigen 25Schnellansicht 27

Workflow-Ereignisin ABAP-Objects-Klasse erzeugen 134Trigger-Zeitpunkt 43

Workflow-Eventin ABAP-Objects-Klasse erzeugen 136

Workflow-Initiator 21Containerelement _WF_INITIATOR 65

Workflow-MakroInclude <CNTN01> 99Include <CNTN02> <CNTN03> 99Include <SWFCNTN01> 99

Workflow-Methode 51Workflow-Muster

Aufgabengruppe zuordnen 71Testen 68

Workflow-Protokoll 19grafisches 19mit technischen Details 69

Workflow-RegelRegelauflösung simulieren 81

Workflow-SchlüsselstrukturSIBFLPOR 118

Workflow-SchrittDialogschritt 52Hintergrundschritt 52

Workitem 54(Sub-)Workflow 54Ausgang 19Detailansicht 19Dialog 54Dialog-Workitem 16Eingang 17

1677-7.book Seite 187 Dienstag, 8. März 2011 2:05 14

Page 24: Workflow-Programmierung mit ABAP · PDF file9 1 Einleitung Erst einmal möchte ich Sie in der Gruppe der SAP-Workflow-Programmierer willkommen heißen. Aus meinen Erfahrungen aus den

188

Index

explizites Beenden 24Hintergrund-Workitem 16Hintergrund 54SAP Business Workplace 17Terminüberschreitung 54Verhaltensweise 23Warteschritt 54Weiterleiten 74

Workitem-Manager 53

X

XSLT-TransformationIdentitätsabbildung (ID) 129

1677-7.book Seite 188 Dienstag, 8. März 2011 2:05 14