Moderne Workflow-Programmierung mit ABAP® Objects (eBook)

Handbuch für Entwickler

(Autor)

eBook Download: PDF
2012 | 1. Auflage
544 Seiten
dpunkt (Verlag)
978-3-86491-213-9 (ISBN)

Lese- und Medienproben

Moderne Workflow-Programmierung mit ABAP® Objects -  Ulrich Mende
Systemvoraussetzungen
64,90 inkl. MwSt
  • Download sofort lieferbar
  • Zahlungsarten anzeigen
SAP Business Workflow hat sich als Technologie zur Abbildung und Abwicklung komplexer, arbeitsteiliger Prozesse im SAP-Umfeld inzwischen fest etabliert. Das Buch demonstriert, wie man heute effizient Workflowanwendungen entwickelt. Dabei liegt der Fokus auf den modernen Methoden von ABAP Objects, die es einerseits erlauben, eigene Workflow-Klassen zu entwickeln, und die andererseits die von SAP erneuerte Basis des gesamten Workflow-Systems bilden. Für Entwickler ist dieser objektorientierte Zugang deshalb besonders wichtig, weil die Klassen von ABAP Objects in den nächsten Jahren die herkömmlichen Workflow-Objekttypen des Business Objekt Repository schrittweise ablösen werden.

Dr. Ulrich Mende ist seit 12 Jahren als selbstständiger R/3-Berater, Entwickler und Trainer im Bereich ABAP-Workbench und SAP Business Workflow tätig. Er hat in den letzten Jahren für so namhafte Firmen wie die Deutsche Börse AG, die E.ON AG, die RWE AG und die Berliner GASAG komplexe Workflow-Anwendungen entwickelt und bis zur Produktivsetzung begleitet. Das vorliegende Buch entstand direkt aus seiner Entwicklertätigkeit in diesen Projekten.

Dr. Ulrich Mende ist seit 12 Jahren als selbstständiger R/3-Berater, Entwickler und Trainer im Bereich ABAP-Workbench und SAP Business Workflow tätig. Er hat in den letzten Jahren für so namhafte Firmen wie die Deutsche Börse AG, die E.ON AG, die RWE AG und die Berliner GASAG komplexe Workflow-Anwendungen entwickelt und bis zur Produktivsetzung begleitet. Das vorliegende Buch entstand direkt aus seiner Entwicklertätigkeit in diesen Projekten.

Inhaltsverzeichnis 7
Einleitung 19
Wer hat das Buch geschrieben? 19
Dank 19
Worum geht es in diesem Buch? 20
An wen richtet sich das Buch? 21
Hinweise zu den einzelnen Kapiteln 22
Kapitel 1 – SAP Business Workflow im Überblick 22
Kapitel 2 – Workflow – Entwicklung Tools 22
Kapitel 3 – ABAP Objects – Grundlagen 23
Kapitel 4 – Durchgängiges Beispiel des Buches: Kreditverträge 23
Kapitel 5 – Die neue Welt: ABAP Objects im Workflow 23
Kapitel 6 – Workflow-Container und Workflow-Ereignisse 23
Kapitel 7 – Organisationsmanagement und Regeln 24
Kapitel 8 – Standardaufgaben anlegen und verwenden 24
Kapitel 9 – Workflow-Muster anlegen und verwenden 24
Kapitel 10 – Klassenbasierte Techniken im Workflow 25
Kapitel 11 – Klassenbasierte Eigenentwicklungen im Workflow 25
Kapitel 12 – Business Workplace als Userinterface 25
Kapitel 13 – Webservices im Workflow 25
Kapitel 14 – Das Workflow-Laufzeitsystem 26
Kapitel 15 – Tests und Fehlersuche 26
Kapitel 16 – Workflow-Administration 26
Anhang – Die alte Welt: BOR-Objekte im Workflow 27
1 SAP Business Workflow im Überblick 29
Workflow für komplex strukturierte, arbeitsteilige Prozesse 29
Keine zusätzlichen Lizenzkosten für SAP Business Workflow 29
Workitem, Business Workplace 30
Workflow-Definition 30
Terminüberschreitung 30
Aufbauorganisation 30
1.1 Die Architektur des SAP Business Workflow 31
Abb. 1–1 Architektur des SAP Business Workflows mit allen Komponenten 31
1.1.1 Definitionszeit 31
Einzelschrittaufgabe 31
Tab. 1–1 Zwei wesentliche Aspekte der Einzelschrittaufgabe 32
Mehrschrittaufgabe = Workflow-Definition = Workflow-Muster 32
Schritttypen 32
Business Object Repository 33
Tab. 1–2 Übersicht über die Schritttypen in einer Workflow-Definition 33
Objekttyp, Objektmethode, Objektattribut 33
1.1.2 Workflows und Workitems zur Ausführungszeit 34
Workflow als Ausführung einer Workflow-Definition 34
Workitem als Schritt eines Workflows 34
1.1.3 Bearbeiterfindung 34
Organisatorische Zuordnung 34
Regel 34
1.1.4 Workflow als Reaktion auf Anwendungssignale 35
Ereignis 35
1.1.5 Vorkonfigurierte Workflow-Definitionen 35
Workflow-Muster 35
1.1.6 Der typische Workflow-Benutzer 36
Sachbearbeiter 36
Prozessmodellierer 36
Programmierer 36
Verantwortlicher für Aufbauorganisation 37
Workflow-Administrator 37
1.2 Ein typisches Workflow-Szenario 37
Genehmigungs- und Freigabeverfahren 37
1.3 Dokumentation und Tutorial 38
1.4 Business Workplace 38
1.4.1 Mails im Business Workplace 39
Abb. 1–2 Business Workplace 39
Dokumente 39
1.4.2 Workitems mit Benutzerdialog in der Worklist 39
Worklist 39
2 Workflow-Entwicklung – Tools 41
2.1 Workflow aus Entwicklersicht 41
2.1.1 Workflow als Framework 41
2.1.2 Schichtenmodell einer Workflow-Anwendung 41
2.1.3 Paketorientierte Workflow-Entwicklung in der SE80 42
Abb. 2–1 Schichtenmodell einer Workflow-Anwendung 42
Abb. 2–2 Alle Entwicklungsobjekte einer Workflow- Anwendung in der SE80 42
Aufgabengruppen nicht über SE80 43
2.1.4 Das Workflow-Bereichsmenü SWLD 43
Bereichsmenü SWLD 43
Empfehlenswert: eigenes Favoritenmenü für Workflow 43
PFTC = allgemeine Aufgabenpflege PFAC = allgemeine Regelpflege 43
2.2 Workflow-Beispiellösungen der SAP 44
Abb. 2–3 Favoriten mit speziellem Ordner für Workflow 44
2.2.1 Tutorials 44
2.2.2 Workflow-Anwendung »Urlaubsantrag« 45
Workflow-Muster Urlaubsantrag = WS30000015 45
2.2.3 Workflows der Aufgabengruppe WFUNIT 45
80 Workflow-Muster in TG WFUNIT 45
2.2.4 Workflows der Aufgabengruppe WF_Verify 46
Abb. 2–4 Workflow-Muster der Aufgabengruppe WFUNIT 46
Abb. 2–5 Workflow-Muster der Aufgabengruppe WF_Verify 46
2.3 SAP Service Marketplace 47
Abb. 2–6 Startseite des SAP Service Marketplace 47
2.3.1 SAP Support Portal mit Hinweissystem 47
Zugriff auf das SAP-Hinweissystem unbedingt erforderlich 47
Abb. 2–7 Suchmaske für Hinweissystem 48
Abb. 2–8 Application Area in der Suchmaske des Hinweissystems 49
Abb. 2–9 Zusätzliche Suchkriterien bei der Hinweissuche 49
Abb. 2–10 Suchergebnis des Hinweissystems 50
2.3.2 SDN-Community 50
SDN-Teilnahme wertvoll für Entwickler 50
Abb. 2–11 Suche im SDN-Forum »SAP Business Workflow« 50
2.3.3 SAP Help online und offline 51
3 ABAP Objects – Grundlagen 53
3.1 Objektorientierung als Abbild der realen Welt 53
Tab. 3–1 Analogie Handy-Bau – Objektorientierung 53
3.2 Klassen und ihre Komponenten 54
Attribute speichern Objektdaten. 54
Methoden kapseln ABAP-Code. 54
3.2.1 PUBLIC-, PROTECTED- und PRIVATE-Komponenten 54
Stufenweise Kapselung von Komponenten mit PUBLIC, PROTECTED und PRIVATE 55
3.2.2 Statische und Instanzkomponenten 55
Statisches Attribut = Klassenattribut = einmal pro Klasse Statische Methode = Klassenmethode = sieht nur Klassenattribute 55
3.2.3 Abstrakte und finale Methoden und Klassen 55
Abstrakte Klassen sind nicht instanziierbar. 55
Abstrakte Methoden müssen bei Vererbung redefiniert werden. 56
Finale Klassen sind nicht ableitbar. 56
3.2.4 Lokale und globale Klassen 56
Listing 3–1 Programmstruktur einer lokalen Klasse 56
SE24 ist in SE80 integriert. 57
Abb. 3–1 Bearbeitung eine globalen Klasse mit der SE24 innerhalb der SE80 58
3.2.5 Objekte und Referenzen 58
Objektreferenzen sind Zeiger auf Objektinstanzen. 59
Listing 3–2 Test, ob Referenz gebunden ist. 59
CREATE OBJECT = Neuanlage Objekt + Zuweisung Referenz 59
Listing 3–3 Anlegen einer Objektinstanz und zuweisen einer Referenz 59
Regeln für Referenzen 60
3.2.6 Zugriff auf Klassen- und Instanzkomponenten 60
Klassenattribute 61

Klassenmethoden 61
Instanzattribute 61

Instanzmethoden 61
Objektreferenz ME zeigt auf das eigene Objekt. 61
Listing 3–4 Zugriff auf Klassen- und Instanzmethoden 62
Anwendungsdaten auf der DB, Objektdaten im Hauptspeicher 62
3.3 Vererbung und Casting von Referenzen 62
Vererbungsbaum durch mehrstufige Vererbung 62
Vererbung auf Klassenebene, nicht auf Instanzebene 63
Abb. 3–2 Vererbung und Referenzen 63
Vater-Referenz darf auf Sohn- und Enkel- Instanzen zeigen. 64
Statischer und dynamischer Typ von Referenzen 64
3.3.1 Klasse CL_VATER 64
Listing 3–5 Lokale Klassendefinition CL_VATER 65
3.3.2 Klasse CL_SOHN 66
Listing 3–6 Lokale Klassendefinition CL_SOHN 66
3.3.3 Klasse CL_ENKEL 67
Pseudoreferenz SUPER 67
Listing 3–7 Lokale Klassendefinition CL_ENKEL 68
3.3.4 Beispielprogramm zur Vererbung 68
Vererbung besteht zwischen Klassen, nicht zwischen Objekten. 68
Listing 3–8 Diverse Methodenaufrufe via Referenz 69
3.3.5 Upcasting und Downcasting von Referenzen 70
Up- und Downcasting im natürlichen Vererbungsbaum 70
Upcasting ist uneingeschränkt möglich. 71
Downcasting nur, wenn Source-Referenz spezieller als Target-Referenz 71
Listing 3–9 Erlaubte und verbotene Castings 71
Abb. 3–3 Programmausgaben 72
3.4 Events 73
3.4.1 Prinzip Publish and Subscribe 73
Beispiel aus dem Bereich der Stellensuche 73
Pull-Prinzip 73
Push-Prinzip 73
Publish and Subscribe 73
Ereignisse haben nur EXPORTING-Parameter. 73
Tab. 3–2 Statischer und dynamischer Teil von Publish and Subscribe 74
3.4.2 Event Handling 74
Aufruf Eventhandler 74
Workflow verwendet kein Shared Memory. 75
3.4.3 Events im Workflow-Kontext 75
Systemweite Workflow- Events 75
3.5 Interfaces 75
IF_WORLFLOW 76
IF_WORKITEM_EXIT 76
Abb. 3–4 Einbindung eines Interface über mehrere Vererbungsbäume hinweg 76
3.5.1 Definition von Interfaces 77
Listing 3–10 Muster für die Definition eines Interface 77
3.5.2 Interfaceimplementierung und -referenzen 77
ALIAS-Namen für Interfacekomponenten 78
Listing 3–11 Definition und Implementierung eines Interface 78
3.6 Polymorphie 79
3.6.1 Allgemeines 79
Polymorphie = Vererbung + Redefinition 79
Abb. 3–5 Vererbungsbaum Java AWT 80
Polymorphie im Workflow = IF_WORKFLOW 80
3.6.2 Polymorphie durch Vererbung 81
Listing 3–12 Polymorphie in einer Liste unterschiedlicher Männer 81
3.6.3 Polymorphie über Interfaces 82
3.7 Ausnahmen und Ausnahmeklassen 82
3.7.1 Klassische Ausnahmen ohne Ausnahmeklassen 82
Abb. 3–6 Klassische Exceptions an einer Methode 82
Listing 3–13 Methode mit klassischer Exception 83
Listing 3–14 Aufruf einer Methode mit klassischer Exception 83
3.7.2 Ausnahmeklassen 84
Abb. 3–7 Nachricht ausgeben nach einer klassischen Exception 84
3 Basisausnahmeklassen von SAP 84
Abb. 3–8 Teil des Vererbungs- baumes von CX_DYNAMIC_CHECK 85
Abb. 3–9 Nachrichtenklasse für Ausnahmeklasse 85
Abb. 3–10 Eigenschaften der Ausnahmeklasse 86
Abb. 3–11 Texte der Ausnahmeklasse 86
Abb. 3–12 Nachrichten- und Parameterzuordnung 87
Abb. 3–13 Attribute der Ausnahmeklasse 87
Listing 3–15 Generierte Konstante vom Typ T100 87
Abb. 3–14 Eigenschaften der geerbten bzw. generierten Methoden der Ausnahmeklasse 88
Generierter CONSTRUCTOR 88
Abb. 3–15 Generierter CONSTRUCTOR der Ausnahmeklasse 89
Abb. 3–16 Ausnahmeklasse in der Methode angeben 89
Listing 3–16 Methode mit klassen- basierter Exception 90
Listing 3–17 Aufruf einer Methode mit klassenbasierter Exception 91
Abb. 3–17 Nachricht aus GET_TEXT 91
Abb. 3–18 Laufzeitfehler bei fehlendem TRY-CATCH-Block 92
CONSTRUCTOR nachgenerieren 92
Vorteile von Ausnahmeklassen 93
Exceptions und Exportparameter 93
Exceptions und Exportparameter 93
3.7.3 Ausnahmetexte aus dem OTR 93
3.8 Zugriff auf die Klassendefinition im Repository 94
Tabellen SEO_* enthalten Klassendefinitionen. 94
Abb. 3–19 Repository-Informationen zu einer Klasse 94
Listing 3–18 Zugriff auf die Klassendefinition im Repository 95
3.9 Dynamischer Aufruf von Klassenmethoden 96
Abb. 3–20 Dynamischer Methodenaufruf – Parameterliste 96
Listing 3–19 Definition von Parametertabellen für dynamischen Aufruf 97
Listing 3–20 Vollständig dynamischer Aufruf einer Instanzmethode 97
3.9.1 Parameter vom Typ REF TO dynamisch übergeben 100
Listing 3–21 Methode mit Ref To-Parameter 101
Listing 3–22 Objektreferenz als Parameter in einem dynamischen Aufruf 101
Objektreferenzen dynamisch erzeugen 103
Abb. 3–21 Parametertabelle mit Referenzparameter 103
Abb. 3–22 Statischen Typ über Feldsymbol dynamisch zuweisen 104
3.10 Run Time Type Services 104
3.10.1 Run Time Type Identification (RTTI) 104
Listing 3–23 Makros für die Typermittlung von Referenzen 104
Listing 3–24 Statischen und dynamischen Typ ermitteln 105
Abb. 3–23 Ausgabe des Programms Z_TEST_TYPEDEF 106
3.10.2 Run Time Type Creation (RTTC) 107
Abb. 3–24 Klassenhierarchie des RTTI 107
Listing 3–25 Dynamischer Typaufbau via RTTC 107
3.11 Übernehmen lokaler Klassen in das Repository 109
Abb. 3–25 Dynamisch mit RTTC erzeugte interne Tabelle im Debugger 109
Abb. 3–26 Lokale Klassen importieren aus Programm 109
Abb. 3–27 Importierte lokale Klasse CL_ENKEL 110
4 Durchgängiges Beispiel des Buches: Kreditverträge 111
4.1 Aufgabenstellung 111
Dieses Beispiel wird durchgehend verwendet. 111
4.2 Tabelle ZVERTRAG 111
4.3 Vertragstransaktion 112
Abb. 4–1 Tabelle ZVERTRAG 112
4.4 Statusdiagramm 112
4.5 Implementierung (DB und ABAP) 113
Abb. 4–2 Statusdiagramm der Beispieltransaktion 113
Listing 4–1 Interface FBS Z_VERTRAG (Vertragsbearbeitung) 113
Formeln für Monatsrate und Laufzeit 114
Abb. 4–3 FBS Z_VERTRAG – Aktion ANLEGEN 114
Abb. 4–4 FBS Z_VERTRAG – Aktion AENDERN 114
Abb. 4–5 FBS Z_VERTRAG – Aktion GENEHMIGEN 115
Abb. 4–6 Ratenplan eines Kreditvertrages (nur letzter Teil) 115
4.6 Quelltext der Vertragstransaktion 116
Listing 4–2 Quelltext Vertragstransaktion 116
4.7 Quelltext zur Berechnung des Ratenplans 120
Listing 4–3 Quelltext zur Berechnung des Ratenplans 121
5 Die neue Welt: ABAP Objects im Workflow 125
5.1 Problemstellung 125
5.2 IF_WORKFLOW 126
Beispiel einer Vertragsbearbeitung im Workflow 126
Abb. 5–1 Struktur SIBFLPOR für persistente Klassenreferenzen 127
Abb. 5–2 Struktur SIBFLPORB für persistente BOR-Referenzen 127
Abb. 5–3 Interface IF_WORKFLOW im Class Builder (SE24) 128
Listing 5–1 Komponenten von BI_OBJECT 128
Listing 5–2 Komponenten von BI_PERSISTENT 128
Listing 5–3 Komponenten von IF_WORKFLOW 129
BI_PERSISTANT~FIND_BY_LPOR 129
Konvertierung Referenz DB à Hauptspeicher 129
BI_PERSISTANT~LPOR 129
Konvertierung Referenz Hauptspeicher à DB 129
BI_PERSISTENT~REFRESH 129
BI_OBJECT~DEFAULT_ATTRIBUTE_VALUE 130
BI_OBJECT~EXECUTE_DEFAULT_METHOD 130
BI_OBJECT~RELEASE 130
5.3 Vertragsbearbeitung im Workflow – Klasse ZCL_VERTRAG 130
Listing 5–4 CONSTRUCTOR der Klasse ZCL_VERTRAG 130
5.3.1 Attribute MV_VERNR und MS_VERTRAG 130
Abb. 5–4 Keine Schlüsselattribute vor IF_WORKFLOW 131
5.3.2 Methoden ANZEIGEN, AENDERN, GENEHMIGEN 131
Listing 5–5 Instanzmethode ZCL_VERTRAG.ANZEIGEN 131
Listing 5–6 Instanzmethode ZCL_VERTRAG.AENDERN 132
Listing 5–7 Instanzmethode ZCL_VERTRAG.GENEHMIGEN 132
5.3.3 Ereignisse CREATED, CHANGED und CANCELLED 133
Abb. 5–5 Ereignisse der Klasse ZCL_VERTRAG 133
5.3.4 Erste Tests der Klasse ohne Interface IF_WORKFLOW 134
5.4 Einfachste Ausprägung von IF_WORKFLOW 134
Abb. 5–6 Methodenliste von ZCL_VERTRAG nach Einbindung von IF_WORKFLOW 134
Listing 5–8 Methode BI_PERSISTENT~REFRESH 134
Listing 5–9 CONSTRUCTOR mit Aufruf auf BI_PERSISTENT~REFRESH 135
Abb. 5–7 Key-Flag an der Vertragsnummer 135
Listing 5–10 Methode BI_PERSISTENT~ FIND_BY_LPOR 135
Listing 5–11 Methode BI_PERSISTANT~LPOR 136
Listing 5–12 Methode BI_OBJECT~DEFAULT_ATT RIBUTE_VALUE 136
Listing 5–13 Methode BI_OBJECT~EXECUTE_DE FAULT_METHOD ruft die Anzeigemethode auf. 137
Listing 5–14 Methode BI_OBJECT~RELEASE ist leer. 137
5.5 Erweiterte Ausprägung IF_WORKFLOW 137
Listing 5–15 CONSTRUCTOR bei erweitertem Interface 137
Listing 5–16 Typen und Klassendaten für Instanzverwaltung 138
Listing 5–17 Methode FIND_BY_LPOR mit Instanzpufferung 138
Listing 5–18 Methode LPOR liefert Instanzdatum GS_POR. 139
Listing 5–19 Methode REFRESH liest Vertragsdaten von der DB 139
Listing 5–20 Wert des Defaultattributes ist Vertragsnummer. 140
Listing 5–21 Defaultmethode ruft parameterlose Anzeigemethode auf. 140
Listing 5–22 Methode RELEASE bleibt leer. 140
Instanzpufferung: Performance vs. Datensicherheit 140
Redundanz zwischen Objekt- und DB-Daten 140
Listing 5–23 Statische Methode zur Instanzerzeugung 141
Abb. 5–8 PRIVATE- Instanzerzeugung bei Instanzverwaltung 141
6 Workflow-Container und Workflow-Ereignisse 143
6.1 Konzept 143
Tab. 6–1 Workflow-Teilobjekte mit eigenen Containern 143
CL-Methoden haben keine Methodencontainer. 144
Publish-Subscribe-Prinzip 144
Event-Condition-Action- Paradigma 144
6.2 Workflow-Container 145
6.2.1 Die Klasse CL_SWF_CNT_CONTAINER 145
Tab. 6–2 Interface der Klasse CL_SWF_CNT_CONTAINER 145
Tab. 6–3 Befreundete Klassen von CL_SWF_CNT_CONTAINER 146
Listing 6–1 Arbeiten mit Containern und Elementen 147
Abb. 6–1 Editieren eines Containerinhalts 148
Listing 6–2 Arbeiten mit Containerelementen 149
Abb. 6–2 Editieren der Elementdefinition außerhalb des Containers 150
Abb. 6–3 Container nach Einstellen des Elements 150
6.2.2 Datenflüsse zwischen Containern 151
Listing 6–3 Arbeiten mit Datenflüssen 151
Abb. 6–4 Editieren einer Datenflussdefinition 153
6.2.3 Containerpersistenz auf der Datenbank 154
Abb. 6–5 Target-Container vor und nach Datenfluss 154
Containerpersistenz einer Workflow-Definition einstellen 154
Abb. 6–6 Datenstruktur zur Untersuchung der Containerpersistenz 154
Containerspeicherung bei Strukturpersistenz 155
Listing 6–4 NICHT SINNVOLL: Direkter Zugriff auf Containertabellen 155
Abb. 6–7 Datenstruktur DATASTRU in der Tabelle SWW_CONT 155
Containerspeicherung bei XML-Persistenz 156
Abb. 6–8 Abbruch bei Containeranzeige 156
Abb. 6–9 Inhalt der Tabelle SWWCNTP0 156
Listing 6–5 XML-Daten eines Containers anzeigen 157
Container eines Workitems im Programm ändern 158
Abb. 6–10 XML-Anzeige der Containerdaten eines WI 158
Listing 6–6 Container eines Workitems per FBS ändern 158
6.3 Ereigniserzeugung 159
6.3.1 Universelle Ereigniserzeugung in ABAP-Programmen 159
Abb. 6–11 Ereignis ZCL_VERTRAG -> CANCELLED mit zwei Parametern
Listing 6–7 Event mit Eventcontainer auslösen 159
Abb. 6–12 MAMETAB-Tabelle im Eventcontainer 161
Listing 6–8 Verbraucher zu einem ausgelösten Event ermitteln 162
Abb. 6–13 Ereignis mit Parametern 162
6.3.2 Erzeugung von BOR-Events mit SWE_EVENT_CREATE 163
6.3.3 Ereigniserzeugung über Änderungsbelege 163
Änderungsbelegobjekt ZVERTRAG anlegen 164
Abb. 6–14 Änderungsbelegobjekt ZVERTRAG 164
Abb. 6–15 Tabellen im Generierungsobjekt eintragen 165
Abb. 6–16 Verbucher generieren 165
Änderungsbelege – Workflow-Eigenschaften 166
Abb. 6–17 Änderungsbelege Workflow-Eigenschaften 166
Änderungsbelege – Ereigniskopplung 166
Abb. 6–18 Änderungsbelege – Ereigniskopplung (Übersicht) 166
Abb. 6–19 Änderungsbelege – Ereigniskopplung (Details) 166
Abb. 6–20 Änderungsbelege – Ereigniskopplung Feldrestriktionen 167
Änderungsbelege anzeigen 167
Abb. 6–21 Anzeige von Änderungsbelegen mit RSSCD100 167
Abb. 6–22 Änderungsbelege – Ereignis-Trace anzeigen 167
6.3.4 Weitere Methoden der Ereigniserzeugung 168
Ereigniserzeugung über Statusverwaltung 168
Ereigniserzeugung über Nachrichtensteuerung 168
6.4 Ereignis-Verbraucher-Kopplungen 168
6.4.1 Typkopplung mit Funktionsbaustein oder Methode 169
Abb. 6–23 Übersicht Typkopplung 169
Abb. 6–24 Details Typkopplung, Aufrufart Funktionsbaustein 170
Abb. 6–25 Details Typkopplung, Aufrufart Methode 170
6.4.2 Verbrauchertyp 171
Workflow-Muster steht im Verbrauchertyp 171
6.4.3 Verbraucher-Funktionsbaustein 171
6.4.4 Check-Funktionsbaustein 171
Check-FBS prüft Startbedingungen. 171
Listing 6–9 Beispiel für Check-FBS 172
6.4.5 Verbrauchertyp-Funktionsbaustein 172
Listing 6–10 Beispiel für Verbrauchertyp-FBS 173
6.4.6 Typkopplung aktiv, Ereignis-Queue zulassen 173
6.4.7 Instanzkopplung 173
Instanzkopplung setzt Typkopplung voraus. 174
Abb. 6–26 Instanzkopplungen für verschiedene Objekttypen (Übersicht) 174
Abb. 6–27 Instanzkopplung für einen Objekttyp (Objektdaten) 174
6.4.8 Einträge in den Koppeltabellen durch Workflow 174
Startereignis Workflow über Typkopplung 175
Endeereignis für Workitem über Instanzkopplung 175
6.4.9 Workflow-Startbedingungen 175
Start- oder Abbruchbedingung 176
Abb. 6–28 Workflow- Startbedingungen 176
De Morgan’sche Regeln für Negation komplexer logischer Ausdrücke 176
Listing 6–11 Abbruchbedingungen im Check-FBS 176
Listing 6–12 Startbedingungen in TA SWB_COND 176
6.5 Ereignisverarbeitung 177
6.5.1 Ablauf der Ereignisverarbeitung 177
Ereignismanager 177
6.5.2 Erzeuger- und Verbraucherkontext 177
Abb. 6–29 Erzeuger- und Verbraucherkontext bei der Ereignisverarbeitung 178
6.5.3 Ereignisfluss bei Vererbung 178
Abb. 6–30 Ereigniskopplung für Super- und Subklasse 179
Abb. 6–31 Ereignis-Trace für Ereignis CREATED der Subklasse 179
6.6 Laufzeitwerkzeuge für Ereignisse 179
6.6.1 Ereignis auslösen 179
6.6.2 Ereignis simulieren 180
Abb. 6–32 Ereigniserzeugung 180
Ereignissimulation = Was würde bei Auslösung passieren. 180
Abb. 6–33 Anzeige der Simulationsergebnisse einer Ereignissimulation 180
6.6.3 Ereignis-Trace 181
Abb. 6–34 Ereignis-Trace, Selektionsbild 181
Abb. 6–35 Ereignis-Trace, Listanzeige 182
6.6.4 Ereignis-Queue 182
Abb. 6–36 Administration der Ereignis-Queue 183
Abb. 6–37 Ereignis-Queue-Browser 184
Abb. 6–38 Ereignis-Queue für Ereigniskopplung aktivieren 184
7 Organisationsmanagement und Regeln 185
7.1 Konzept 185
Tab. 7–1 Statische vs. dynamische Bearbeiterzuordnung 185
7.2 Bestandteile des Organisationsmanagements 186
7.2.1 Organisationseinheiten 186
Organisationsstruktur 186
7.2.2 Besetzungsplan 186
Abb. 7–1 Aufbauorganisation 187
7.2.3 Aufgabenprofil 187
7.3 Einfache Pflege der Aufbauorganisation 188
Abb. 7–2 Pflege der Aufbauorganisation 189
7.4 Infotypen 189
7.4.1 OM-Typebene und OM-Objektebene 189
OM-Typebene 189
Abb. 7–3 Pflege des Organisations- managements 190
OM-Objektebene 190
7.4.2 OM-Objekttypen (Infotyp 1000) 191
OM-Objekttypen sind keine BOR-Objekttypen und keine Klassen. 191
Tab. 7–2 Wichtige OM-Objekttypen 191
7.4.3 Verknüpfungen zwischen Objekttypen (Infotyp 1001) 191
Abb. 7–4 Verknüpfungen pflegen 192
7.4.4 Weitere Infotypen 193
7.4.5 Zuständigkeiten 193
Zuständigkeiten sind OM-Objekte vom Typ RY. 193
7.5 Regeln und Regelauflösung 194
7.5.1 Konzept 194
7.5.2 Regeldefinition 195
7.5.3 Regeln mit Funktionsbausteinen 196
Listing 7–1 Beispiel für Regel-FBS 196
Spezialfall: Regel mit Auswertungswegen: RH_GET_STRUCTURE 196
7.5.4 Regeln mit Zuständigkeiten 197
Abb. 7–5 Regel mit Auswertungsweg 197
Abb. 7–6 Definition des Auswertungsweges WF_ORGUN mit TA OOAW 197
Tab. 7–3 Zuständigkeiten nach Name und Kredithöhe 198
Abb. 7–7 Anlegen von Zuständigkeiten innerhalb der Regelpflege (Tabellensicht) 198
Abb. 7–8 Bearbeiterzuordnung bei Zuständigkeiten 199
Abb. 7–9 Test der Regelauflösung für hohe Beträge 199
Abb. 7–10 Datenfluss vom Workflow-Container (Vertragsreferenz) in den Regelcontainer 200
7.6 Dynamische Eingangskörbe 200
7.6.1 Aufgabenstellung 200
7.6.2 Das Prinzip der dynamischen Eingangskörbe 201
Abb. 7–11 Aufbau und Funktion eines dynamischen Eingangskorbes 202
7.6.3 Pflege der Bestandteile dynamischer Eingangskörbe 203
Abb. 7–12 Eingangskörbe als Org-Einheit mit Planstelle und Aufgabengruppe 203
Abb. 7–13 Zuordnung von Benutzern zu Planstelle über TA PPSM 203
Abb. 7–14 Dynamische Zuordnung Benutzer zu Planstelle 204
Abb. 7–15 Benutzer, die die Vertretung für die Planstelle übernehmen dürfen 204
Abb. 7–16 Vertretung für einen/mehrere Eingangskörbe übernehmen 205
8 Standardaufgaben anlegen und verwenden 207
8.1 Konzept Standardaufgaben 207
Abb. 8–1 Standardaufgaben mit ihren Bestandteilen 207
8.2 Standardaufgaben anlegen 208
Abb. 8–2 Anlegen einer Standardaufgabe zvertr_aend 208
8.2.1 Objekttyp und Methode 208
Standardaufgaben sind atomare Bestandteile des Workflows. 209
Synchrone Standardaufgaben rufen synchrone Methoden 209
Synchrone Aufgaben entsprechen FBS-Aufrufen. 209
Asynchrone Standardaufgaben rufen asynchrone Methoden 209
8.2.2 Hintergrundaufgabe und Dialogaufgabe 210
8.2.3 Verarbeitungsende bestätigen 211
Listing 8–1 Genehmigungsmethode für Verträge 212
8.2.4 Container und Initialwerte 212
Abb. 8–3 Anlegen der Container- elemente auf Anfrage 213
Abb. 8–4 Aufgabencontainer 213
Abb. 8–5 Leerer (= automatischer) Datenfluss zwischen Methode und Aufgabe 214
8.2.5 Aufgabe mit Rückgabewert 214
Abb. 8–6 Grunddaten der Aufgabe zvertr_gene 215
Abb. 8–7 Container der Aufgabe zvert_gene 216
Abb. 8–8 Statusfestwerte als aktivierbare Ausgänge am Genehmigungsschritt 216
Abb. 8–9 Anlegen von _WI_RESULT 217
Abb. 8–10 Container mit Rückgabeelement _WI_RESULT 217
8.2.6 Workitem-Text 217
Abb. 8–11 Workitem-Text mit Parametern 218
Abb. 8–12 Auswahl eines Ausdruckes aus dem Aufgabencontainer 218
8.2.7 Beschreibung 218
Langtext zur Beschreibung 219
Langtext zur Beschreibung 219
Langtext bei Terminüberschreitung 219
Langtext bei Terminüberschreitung 219
Langtext zur Endebenachrichtigung 219
Langtext zur Endebenachrichtigung 219
8.2.8 Auslösende Ereignisse 219
8.2.9 Beendende Ereignisse 220
Abb. 8–13 Auslösende Ereignisse einer Aufgabe 220
Abb. 8–14 Beendende Ereignisse einer Aufgabe 221
8.2.10 Mögliche Bearbeiter 221
Abb. 8–15 Eigenschaften einer Standardaufgabe 223
Tab. 8–1 Unterschiedliche Arten des Weiterleitens 223
8.2.11 Zuständige Bearbeiter – Defaultregeln 223
Abb. 8–16 Defaultregeln 223
8.3 Standardaufgaben starten 224
8.3.1 Start aus Workflow (Standardfall) 224
8.3.2 Start über Ereignis 224
8.3.3 Start aus Programm 224
Listing 8–2 BOR-Standardaufgabe aus Programm starten 224
Listing 8–3 CL-Standardaufgabe aus Programm starten 226
9 Workflow-Muster anlegen und verwenden 227
9.1 Konzept Workflow-Muster 227
Workflow-Muster bilden Geschäftsprozesse ab. 227
Grafische Workflow- Definition 228
9.2 Workflow-Interface 228
Abb. 9–1 Anlegen eines Workflow- Musters – Grunddaten 228
9.2.1 Workflow-Container 229
Führende Objektreferenz bestimmt die Art des Workflows. 229
Abb. 9–2 Anlegen eines Workflow- Musters – Container 230
Abb. 9–3 Führendes Objekt als CL-Referenz anlegen 230
9.2.2 Initialwerte 231
Abb. 9–4 Initialwert zur Vetragsreferenz angeben 231
9.2.3 Aufgabentext 231
9.2.4 Aufgabenbeschreibung 231
Beschreibungen für Workflow 231
9.2.5 Auslösende Ereignisse 232
Datenfluss Startereignis à Workflow 232
Abb. 9–5 Auslösende Ereignisse eines Workflow-Musters 232
9.3 Workflow-Definition 233
9.3.1 Die Arbeit mit dem grafischen Editor 233
Teilfenster des grafischen Workflow-Editors 233
Abb. 9–6 Grafischer Workflow- Editor 234
9.3.2 Der Bedingungseditor 235
Abb. 9–7 Bedingungseditor wird an verschiedenen Verzweigungsstellen eingesetzt. 235
9.3.3 Übersicht Schritttypen 236
Tab. 9–1 Schritttypen der Workflow-Definition 236
9.3.4 Schritttyp Aktivität 238
Reiter »Steuerung« 238
Reiter »Details« 239
Abb. 9–8 Schritttyp »Aktivität« – Reiter »Steuerung« 239
Abb. 9–9 Schritttyp »Aktivität« – Reiter »Details« 239
Reiter »Ausgänge« 240
Folgeereignisse bilden Verzweigungen im Workflow. 240
Abb. 9–10 Schritttyp »Aktivität« – Reiter »Ausgänge« 240
9.3.5 Schritttyp Webaktivität 241
9.3.6 Schritttyp Mailversand 241
9.3.7 Schritttyp Formular 242
Abb. 9–11 Formularangaben im Schritttyp »Formular« 242
Listing 9–1 Generierte Forms bei Formularen 242
9.3.8 Schritttyp Benutzerentscheidung 243
Nie generische Entscheidungsaufgabe verwenden 243
Abb. 9–12 Schritttyp »Benutzerentscheidung« 243
Abb. 9–13 Schritttyp »Benutzer- entscheidung« in der Workflow-Definition 244
9.3.9 Schritttyp Warten auf Ereignis 244
Abb. 9–14 Schritttyp »Warten auf Ereignis« 244
9.3.10 Schritttyp Bedingung 245
Listing 9–2 Pseudocode Schritttyp »Bedingung« 245
Abb. 9–15 Schritttyp »Bedingung« 245
9.3.11 Schritttyp Mehrfachbedingung 246
Abb. 9–16 Schritttyp »Bedingung« in der Workflow-Definition 246
Listing 9–3 Pseudocode Schritttyp »Mehrfachbedingnung« 246
Abb. 9–17 Schritttyp »Mehrfachbedingung« 246
Abb. 9–18 Schritttyp »Mehrfachbedingung« in der Workflow-Definition 247
9.3.12 Schritttyp Paralleler Abschnitt 247
Listing 9–4 Pseudocode Schritttyp »Paralleler Abschnitt« 247
Abb. 9–19 Schritttyp »Paralleler Abschnitt« 248
Abb. 9–20 Schritttyp »Paralleler Abschnitt« (1 aus 2) in der Workflow-Definition 248
9.3.13 Schritttyp UNTIL-Schleife 248
Listing 9–5 Pseudocode Schritttyp »UNTIL-Schleife« 248
Abb. 9–21 UNTIL-Schleife 249
Abb. 9–22 UNTIL-Schleife in der Workflow-Definition 249
9.3.14 Schritttyp WHILE-Schleife 250
Listing 9–6 Pseudocode Schritttyp »WHILE-Schleife« 250
Abb. 9–23 Schritttyp »WHILE-Schleife« 250
Abb. 9–24 WHILE-Schleife in der Workflow-Definition 251
9.3.15 Schritttyp Ablaufsteuerung 251
Abb. 9–25 Schritttyp »Ablaufsteuerung« – Funktion »Workflow beenden« 252
9.3.16 Schritttyp Containeroperation 252
Abb. 9–26 Schritttyp »Containeroperation« 252
9.3.17 Schritttyp Ereigniserzeuger 253
Abb. 9–27 Schritttyp »Ereigniserzeuger« 253
9.3.18 Schritttyp Ad-hoc-Anker 253
9.3.19 Schritttyp Block 253
9.3.20 Schritttyp Lokaler Workflow 254
9.4 Container in der Workflow-Definition 254
Abb. 9–28 Datenflüsse im Workflow 254
9.5 Workflow-Grunddaten 255
Abb. 9–29 Workflow-Grunddaten: versionsunabhängig 255
9.5.1 Versionsunabhängig (Aufgabe) 256
Reiter »Grunddaten« 256
Abb. 9–30 Versionsunabhängig: Grunddaten 256
Reiter »Beschreibung« 256
Abb. 9–31 Versionsunabhängig: Beschreibung 256
Reiter »Startereignisse« 256
Abb. 9–32 Versionsunabhängig: Startereignisse 257
Abb. 9–33 Versionsunabhängig: Startereignisse, Bedingung 257
Reiter »Versionsübersicht« 257
Abb. 9–34 Versionsunabhängig: Versionsübersicht 257
Reiter »Funktionsgruppe« 258
9.5.2 Versionsabhängig (aktuelle Workflow-Version) 258
Abb. 9–35 Versionsabhängig: Steuerung: Persistenzprofil 258
Reiter »Steuerung« 258
Reiter »Workfloweinstellungen« 259
Reiter »Bearbeiter« 259
Reiter »Reviewer« 259
Reiter »Benachrichtigung« 259
Reiter »WebFlow« 259
Reiter »Ereignisse« 259
Abb. 9–36 Versionsabhängig: Ereignisse 260
Reiter »Lokale Ereignisse« 260
Reiter »Programmier-Exits« 260
Reiter »Eigenschaften« 261
Reiter »Aufgaben« 261
Reiter »Technische Informationen« 261
Reiter »Änderungsdaten« 261
9.6 Einfacher Vertrags-Workflow 261
9.6.1 Technische Workflow-Beschreibung und Pseudocode 261
Listing 9–7 Pseudocode Vertrags-Workflow 262
9.6.2 Workflow-Muster zao_main 262
Start des Builders mit leerem Workflow 262
Abb. 9–37 Anlegen zao_main: Start mit leerem Workflow 262
Einfügen der UNTIL-Schleife 263
Abb. 9–38 Anlegen zao_main: UNTIL-Schleife mit Bedingung 263
Abb. 9–39 Anlegen zao_main: UNTIL-Schleife: Bedingung 263
Schritt einfügen für Aufgabe zao_gene 264
Abb. 9–40 Workflow zao_main: Schritt Vertrag genehmigen: Steuerung 264
Abb. 9–41 Workflow zao_main: Schritt Vertrag genehmigen: Ausgänge 264
Schritt einfügen für Aufgabe zao_aend 265
Abb. 9–42 Anlegen zao_main: nach Einfügen des Genehmigungsschrittes 265
Abb. 9–43 Workflow zao_main: Schritt Vertrag ändern nach Ablehnung: Steuerung 265
Abb. 9–44 Anlegen zao_main: fertiger Workflow mit Blockstruktur 266
9.7 Bearbeiterfindung im Workflow 267
9.7.1 Allgemeines 267
9.7.2 Definition der möglichen Bearbeiter 267
Abb. 9–45 Bearbeiterzuordnung pflegen 268
9.7.3 Zuständige und ausgeschlossene Bearbeiter 268
Sonderfälle 269
Abb. 9–46 Definition der zuständigen und der ausgeschlossenen Bearbeiter 269
9.7.4 Ermittlung der Empfänger 269
Abb. 9–47 Ermittlung der Empfänger eines Workitems 270
9.8 Arbeiten mit dem Business Workflow Explorer 270
9.8.1 Zweck des Business Workflow Explorer 270
9.8.2 Auswahl des Suchbereiches 271
Abb. 9–48 Angabe der Objekttypen im Business Workflow Explorer 271
9.8.3 Anzeige und Bearbeitung von Objekten 272
Abb. 9–49 Anzeige von Objekttypen im Business Workflow Explorer 272
9.9 Lesen der Workflow-Definitionen 272
Workflow-Definitionen in ABAP auswerten 272
Listing 9–8 Workflow-Muster mit Aufgaben auflisten 273
Abb. 9–50 Liste von Workflow- Mustern mit Aufgaben und ABAP-Methoden 274
9.10 Starten von Workflows 275
9.10.1 Start von Workflows über ABAP OO 275
Listing 9–9 Workflow aus Programm direkt starten 275
9.10.2 Start von Workflows über Ereignisse 276
10 Klassenbasierte Techniken im Workflow 277
10.1 SAP-Klassen im Workflow-Umfeld 277
Tab. 10–1 Klassengruppen für SAP-Klassen im Workflow-Kontext 277
10.2 Iterator-Klassen, Factory-Klassen und Utility-Klassen 278
10.2.1 Iterator-Klassen 278
Abb. 10–1 Attribute der BasisIterator-Klasse CL_SWF_UTL_ITERATOR 278
Abb. 10–2 Tabellentyp der BasisIterator-Klasse CL_SWF_UTL_ITERATOR 278
Abb. 10–3 Methoden der BasisIterator-Klasse CL_SWF_UTL_ITERATOR 279
Listing 10–1 Beispielprogramm Iterator 279
Listing 10–2 Iteration über Containerelemente 281
10.2.2 Factory-Klassen und Factory-Methoden 281
Tab. 10–2 Factory-Klassen im Workflow-Kontext 281
Abb. 10–4 Singletonklasse 282
Listing 10–3 Methode get_container der Klasse cl_swf_tst_ container_singleton 283
Listing 10–4 Drei Containerreferenzen zeigen auf dasselbe Objekt. 283
Abb. 10–5 Drei Containerreferenzen auf dasselbe Containerobjekt 283
10.2.3 Utility-Klassen 283
Tab. 10–3 Utility-Klassen im Workflow-Kontext 284
10.3 Terminüberwachung 284
10.3.1 Problem und Lösungsprinzip 284
10.3.2 Standardfall mit Deadline-Workitems 284
Deadline-Workitem 285
Abb. 10–6 Spätester Start (Standardfall) 285
10.3.3 Berechnete Termine mit Deadline-Workitem 286
Abb. 10–7 Eingangskorb mit Deadline-Workitem zur Erinnerung (Release 4.0) 286
10.3.4 Obsolet setzen eines Workitems 287
Abb. 10–8 Berechnete Termine für den spätesten Start 287
Kalenderfunktionen zur Berechnung von Terminen 287
Abb. 10–9 Workflow mit modellierter Fristüberschreitung und Obsoletausnahme 288
10.4 Nebenmethoden 288
10.4.1 Problem und Lösungsprinzip 288
10.4.2 Methode zur Vertragsanzeige 289
Funktionsbaustein REUSE_ALV_LIST_DISPLAY 289
Listing 10–5 Nebenmethode zur Anzeige aller Verträge eines Kunden 289
10.4.3 Eintrag als Nebenmethode in die Aktivität 289
Abb. 10–10 Eintrag einer Methode als Nebenmethode 289
10.4.4 Amodaler Aufruf der Nebenmethode 290
Abb. 10–11 Aufruf einer Vertragsliste als amodale Nebenmethode 290
10.5 Objektreferenzen in die Workitem-Vorschau einstellen 291
10.5.1 Referenzen auf bestehende Workflow-Klassen 291
Abb. 10–12 Objektliste _Adhoc_Objects nur für BOR-Referenzen 291
Abb. 10–13 Versorgen einer Referenz für die Workitem-Vorschau 291
Abb. 10–14 Workitem-Vorschau für Ratenplananzeige 292
10.5.2 Referenzen auf spezielle Anzeigeklassen 292
Überspringen von Dynpros mit Batch-Input 292
Abb. 10–15 Zieldarstellung für Einsprung in das CIC 293
Listing 10–6 Generierter FBS mit Batch-Input 294
Abb. 10–16 Klasse ZCL_CICLINK für CIC-Link 295
Listing 10–7 Quelltext der Klasse ZCL_CICLINK 296
10.6 Programmier-Exits für Workitems 297
10.6.1 Das Interface IF_SWF_IFS_WORKITEM_EXIT 297
Abb. 10–17 Workitem-Exit 297
10.6.2 Logging mit CHECK-POINT-Gruppe 297
Abb. 10–18 CHECK-POINT-Gruppe ZVERTRAG mit Aktivierungen 298
Abb. 10–19 Parameter im Workitem-Exit 298
Abb. 10–20 Mögliche Events für den Aufruf des Workitem-Exits 298
Abb. 10–21 Interface IF_WAPI_WORKITEM_ CONTEXT 299
Listing 10–8 Workitem-Exit mit Logging 299
Abb. 10–22 Anzeige der Log-Einträge zum Userexit 300
10.6.3 Automatisches Zurücklegen eines Workitems 300
Listing 10–9 Workitem-Exit für das Zurücklegen eines Workitems 301
Listing 10–10 Bacht-Report zum Zurücklegen eines Workitems 301
10.7 Fortgeschrittene Workflow-Definition 302
10.7.1 Lokale Ereignisse und Ausnahmen 302
Abb. 10–23 Workflow-Grunddaten: Versionsabhängig: Lokale Ereignisse 303
Tab. 10–4 Schritttypen für lokale Ereignisse und Ausnahmen 303
10.7.2 Lokale Ereignisse und komplexe Bedingungen 303
Abb. 10–24 Komplexe Bedingung modelliert über lokales Ereignis 304
Abb. 10–25 Schritt D wartet auf Schritt A im anderen Parallelzweig 304
10.7.3 TRY/CATCH im Workflow: Blöcke und Ausnahmen 305
10.7.4 Lokale Workflows und lokale Ereignisse 305
10.8 Dynamische Blöcke 306
10.8.1 Dynamisch sequenzieller Block = Workflow-Iterator 307
Abb. 10–26 Dynamisch sequenzieller Block als eingebetteter Subworkflow 307
10.8.2 Dynamisch paralleler Block 307
Abb. 10–27 Dynamisch paralleler Block als eingebetteter Subworkflow 307
10.8.3 Beispiel: Bewertungs-Workflow für Vertrag 308
Abb. 10–28 Dynamisch-sequenzielle Bearbeitung der UserListe 308
Abb. 10–29 Datenfluss zum dynamisch-sequenziellen Block 309
Abb. 10–30 Dynamisch-paralleler Block zur Vertragsbewertung 309
Abb. 10–31 Datenfluss zwischen Workflow-Container und Blockcontainer 310
Abb. 10–32 Abbruchbedingung für dynamisch-parallelen Block 310
Abb. 10–33 SBE zur Vertrags- bewertung mit Link zum Vertrag 311
Abb. 10–34 Protokoll eines Workflows mit Blöcken 311
10.9 Ad-hoc-Funktionen im Workflow 312
10.9.1 Ad-hoc-Aufgabenauswahl 312
Abb. 10–35 Maschinelle Aufgabenbestimmung 312
Listing 10–11 Statische, funktionale Methode zur Bestimmung des Workflow-Musters 313
Abb. 10–36 Ausdruck für Aufgabe ist funktionale Methode. 313
Manuelle Ad-hoc-Aufgabenauswahl 314
Abb. 10–37 Aufgabenauswahl aus einer passenden Aufgabengruppe 314
Abb. 10–38 Ausdruck für Ad-hoc- Aufgabe ist Containervariable 314
10.9.2 Ad-hoc-Bearbeiterauswahl 314
Abb. 10–39 Datenfluss von/zum Dialog für Ad-hoc- Bearbeiterauswahl. 315
10.9.3 Ad-hoc-Workflow einbinden 316
Abb. 10–40 Dialog zur Ad-hoc- Bearbeiterauswahl 316
Abb. 10–41 Liste der Ad-hoc- Workflows in einem Schritt »Ad-hoc-Anker« 316
Abb. 10–42 Grafisches Workflow- Protokoll vor der Ersetzung 317
10.10 Reaktion eines Workflows auf externe Ereignisse 318
Abb. 10–43 Ersetzter Ad-hoc-Anker im Workflow-Protokoll 318
10.10.1 Standardreaktionen über Grunddaten des Workflows 319
Abb. 10–44 Workflow abbrechen bei Ereignis ZCL_VERTRAG-> CANCELLED
Abb. 10–45 Instanzkopplung für Ereignisempfang 320
10.10.2 Modellierte Reaktionen über Ereignisempfänger 320
Abb. 10–46 Warten auf Ereignis ZCL_VERTRAG-> ACTIVATED
Abb. 10–47 Frist für Warteschritt auswerten (modelliert) 321
Abb. 10–48 Ereignisempfänger mit Fristüberwachung 322
10.11 Klassenverwendung im Workflow ohne Standardaufgaben 322
10.11.1 Konzept 322
Tab. 10–5 Klassenaufrufe im Workflow ohne Standardaufgaben 323
10.11.2 %-%-Zugriff ohne IF_WORKFLOW 323
Abb. 10–49 Ausdruck mit funktionaler Methode in Containerzuweisung 324
Abb. 10–50 Funktionale Methode mit Parametervariablen im Datenfluss 324
10.11.3 & -&
10.11.4 & -&
Abb. 10–51 Ungebundene Klassenreferenz im Container 325
Listing 10–12 Pseudoinstanziierung 325
Abb. 10–52 Instanziierung (= Initiali- sierung) der Pseudo- referenz der Utility-Klasse 326
Abb. 10–53 Kompletter (ergänzter) Ausdruck 326
Abb. 10–54 Ausdruck mit funktionaler Methode via Referenz im Datenfluss 327
10.11.5 Geschachtelter Zugriff mit %-% und & -&
Abb. 10–55 Geschachtelter Ausdruck in einer Bedingung 327
10.11.6 Methoden mit mehreren Exportparametern 328
Listing 10–13 Nicht funktionale Methode mit zwei alternativen Exportparametern 328
Leider nicht möglich! 328
10.11.7 Objektreferenzen on-the-Flight 329
Abb. 10–56 Aufruf der Methode ZCL_CALC.POWER in einem Datenfluss 329
Abb. 10–57 Objekt on-the-Flight im Datenfluss 329
11 Klassenbasierte Eigenentwicklungen im Workflow 331
11.1 Utility-Klasse ZCL_DATE: Datumsberechnung auf Kalendern 331
11.1.1 Verwendung von Datumsberechnungen 331
11.1.2 Implementierung von ZCL_DATE 331
Listing 11–1 Klasse ZCL_DATE, Methode DATE 331
Listing 11–2 Klasse ZCL_DATE, Methode TIME 333
Abb. 11–1 Zeitkonstanten der Klasse ZCL_DATE 334
11.1.3 Verwendung von ZCL_DATE in Ausdrücken 334
Abb. 11–2 Verwendung von ZCL_DATE im Vorlagetermin 334
Abb. 11–3 Datumsberechnung in die Vergangenheit 335
Klassenausdrücke mit % ohne IF_WORKFLOW 335
11.2 Utility-Klasse ZCL_COND: komplexe Bedingungen 335
11.2.1 Konzept komplexer Bedingungen im Workflow 335
Abbildung beliebiger Bedingungen 335
11.2.2 Tabelle ZCONDITION 336
Abb. 11–4 Workitems: Tabelle für Startbedingungen 336
11.2.3 Implementierung von ZCL_COND 336
Listing 11–3 Klasse ZCL_COND, Setzen einer Bedingung mit SET 336
Listing 11–4 Klasse ZCL_COND, Prüfen einer Bedingung mit CHECK 337
11.2.4 Verwendung von ZCL_COND in ZCL_VERTRAG 337
Listing 11–5 Methode SETCOND der Klasse ZCL_COND 337
Listing 11–6 Methode CHECKCOND der Klasse ZCL_COND 338
11.2.5 Setzen und Prüfen von Vertragsbedingungen 338
Abb. 11–5 Workflow mit Setzen einer Bedingung via Containeroperation 339
Abb. 11–6 Zuweisung zum Setzen einer Bedingung 339
Abb. 11–7 Startbedingung am Schritt D 340
Abb. 11–8 Nach Start des Workflows 340
Abb. 11–9 Nach Beenden des Schrittes A, vor dem nächsten Lauf von SWWCOND 341
Abb. 11–10 Bedingung »A_FERTIG« wurde in die Tabelle geschrieben. 341
Abb. 11–11 Nach dem nächstem Lauf des Reports SWWCOND 342
11.2.6 Aufruf von ZCL_COND in Ausdrücken 343
Abb. 11–12 Direkter Aufruf der Klasse ZCL_COND 343
11.3 Utility-Klasse ZCL_CONST: Datenbankkonstanten 343
11.3.1 Konzept »variabler« Konstanten 343
11.3.2 Tabelle der Konstanten ZCONST 344
Abb. 11–13 DB-Tabelle für Konstanten 344
Abb. 11–14 Werte in der Konstantentabelle 344
11.3.3 Aufruf der Konstanten über ZCL_CONST 344
Listing 11–7 Aufruf einer Datums- konstanten über Klasse ZCL_CONST 345
11.3.4 Implementierung von ZCL_CONST 345
Abb. 11–15 Konstanten als statische Read-only-Attribute mit Defaultwert 345
Abb. 11–16 Methoden der Konstantenklasse 345
Listing 11–8 Lesen der DB-Konstanten in Klasse ZCL_CONST 346
Listing 11–9 CONSTRUCTOR ruft Methode REFRESH 346
11.3.5 Einführen neuer Konstanten 347
Abb. 11–17 Testen der statischen Konstantenklasse 347
11.3.6 Verwendung der Konstanten im Workflow 347
Abb. 11–18 Statischer Aufruf von Konstanten 348
Listing 11–10 Pseudoinstanziierung der Klasse ZCL_CONST 348
Abb. 11–19 Abstrakte Konstantenklasse im Workflow-Container zur Definitionszeit 348
Abb. 11–20 Verwendung der Konstantenklasse in einer Containeroperation 349
11.4 Utility-Klasse ZCL_SYSTEM: generische Systemmethoden 349
11.4.1 Inhalt von ZCL_SYSTEM 349
11.4.2 Erzeugen von Klassenreferenzen im Workflow 350
Import via Datenfluss aus dem Ereigniscontainer 350
Import aus Instanziierungsmethode einer Klasse 350
Listing 11–11 Methode zur Instanziierung von Vertragsobjekten 351
Abb. 11–21 Setzen einer Vertragsreferenz mit ZCL_VERTRAG=> GET_REF
Import aus spezieller CREATE-Methode der Klasse 351
Listing 11–12 Klassenmethode zum Neuanlegen eines Vertrages 352
11.4.3 GENERICINSTANTIATE von CL- und BOR-Referenzen 352
Listing 11–13 Methode zum Anlegen von BOR- und CL-Referenzen im Workflow 352
11.4.4 MAKE_CL_REF für den Aufruf in Ausdrücken 353
Listing 11–14 Funktionale Methode ZCL_SYSTEM.MAKE_ CL_REF 354
Listing 11–15 Aufruf von MAKE_CL_REF in einer Zuweisung 354
11.5 Kommunikation zwischen parallelen Subworkflows 354
11.5.1 Kommunikation über Ereignisse 355
Abb. 11–22 Parameter am Ereignis ANSWER_FOR_EVENT_ FLAGS 355
Abb. 11–23 Mainworkflow mit zwei kommunizierenden parallelen Subworkflows 355
Abb. 11–24 Kommunikation zwischen zwei parallelen Subworkflows über Ereignisse 356
11.5.2 ZCL_SYSTEM: Lesen fremder Workflow-Container 356
Listing 11–16 Lesen eines anderen Workflow-Containers 357
Abb. 11–25 Binding Workflow à Auf- gabe für Leseschritt aus fremdem WF-Container 359
11.6 Mails im Workflow-Umfeld 359
11.6.1 Mail senden mit Schritttyp Mailversand 359
Abb. 11–26 Mailinhalt mit Platzhaltern im Schritt Mail versenden 360
Abb. 11–27 Erzeugte Mail in SAPconnect (TA SOST) 360
11.6.2 ZCL_SYSTEM: Mail mit eigenem Absender 360
Listing 11–17 Mail aus Workflow mit Absender < >
Abb. 11–28 Versendete Mail mit Absender < >
11.6.3 ZCL_SYSTEM: Mail mit SAP – Text und Containerbezug 362
Listing 11–18 Mail aus SAP- Standardtext mit Platzhaltern 363
Abb. 11–29 SAPScript-Text ZVERTRAG_GENEHMIGT für Mail bei Vertragsgenehmigung 365
Abb. 11–30 Datenfluss zur Aufgabe für Mailversand 365
Abb. 11–31 Gesendete Mail in der TA SOST 366
Abb. 11–32 Mail mit ersetzten Werten aus dem Workflow-Container 366
11.6.4 HTML-Mails mit Rückantwort 367
Senden einer HTML-Mail 367
Listing 11–19 Anlegen und versenden einer HTML-Mail 367
Abb. 11–33 HTML-Mail mit Tasten für Rückantwort 369
Abb. 11–34 Antwortmail des Genehmigers 369
Verarbeitung der Antwortmails 369
Listing 11–20 Implementierung des Interface IF_INBOUND_EXIT BCS 369
Abb. 11–35 Eintragen der Klasse ZCL_VERTRAG_ MAILREPLY für Eingangsverarbeitung 370
Reaktion auf Ereignisse aus der Mailverarbeitung im Workflow 371
Abb. 11–36 Beendende Ereignisse an der Genehmigungs- aufgabe 371
Abb. 11–37 Ausgänge am Genehmigungsschritt 372
Abb. 11–38 Ablehnung/Genehmigung per Mail/GUI 372
12 Business Workplace als Userinterface 373
12.1 Allgemeines zum Business Workplace 373
Abb. 12–1 Outlook-Arbeitsplatz mit dreigeteiltem Fenster 373
Abb. 12–2 SAP Business Workplace mit Dreifelderaufteilung 374
12.2 Fenster im Business Workplace 375
Abb. 12–3 SAP Business Workplace, Workitems nicht gruppiert 375
Abb. 12–4 SAP Business Workplace, Ansicht Workflow, gruppiert nach Aufgaben 375
12.2.1 Das Mappenfenster (1) 375
Tab. 12–1 Inhalt und Bedeutung des Mappenfensters 376
Gruppierungen im Workplace 377
12.2.2 Das Inboxfenster (2) 378
Abb. 12–5 Inbox im Inboxfenster des Business Workplace 378
Abb. 12–6 Drucktasten für Inbox 378
12.2.3 Das Vorschaufenster (3) 379
Anwenderspezifisches Vorschaufenster 379
Abb. 12–7 Anwenderspezifische Vorschau 379
12.3 Funktionen im Workplace 380
Abb. 12–8 Funktionsbaustein für anwenderspezifische Vorschau 380
12.3.1 Funktionen der Workflow-Inbox 380
Statuswerte von Dialog-Workitems 380
Refresh 381
Abb. 12–9 Statusdiagramm für Dialog-Workitems 381
Ausführen 381
Anzeigen 382
Annehmen 382
Automatik: Weiterschalten mit Dialog 382
Zurücklegen 382
Weiterleiten 382
Wiedervorlegen 383
Workflow-Protokoll anzeigen 383
Anlagen anlegen, ändern, löschen 383
Anlagen per Upload am Frontend 383
Weitere Funktionen 383
Sortieren aufsteigend und absteigend 384
Suchen 384
Layout 384
12.3.2 Persönliche Workflow-Einstellungen 385
Abb. 12–10 Persönliche Workflow-Einstellungen 385
Organisatorisches Umfeld auffrischen 385
12.3.3 Workflow-Vertretungen 385
Vertreterregelungen werden unterschätzt. 386
Pflege von Vertretern 386
Potenzielle Vertreter vorausschauend pflegen 386
Aktivierung einer Vertretung durch den Vertretenen 386
Aktivierung von Vertretern durch den Vertreter selbst 387
Abb. 12–11 Vertretungen pflegen und übernehmen 387
Probleme der Vertreterregelung in SAP Business Workflow 387
Keine Kettenvertretung möglich 387
12.3.4 Vertretungen in Tabelle HRUS_D2 388
Abb. 12–12 Tabelle HRUS_D2 der Workflow-Vertretungen 388
12.4 Die Anpassung der Inbox 388
12.4.1 Layoutfunktionen des ALV-Grids 388
Spaltenauswahl 389
Abb. 12–13 Spaltenauswahl und Spaltenreihenfolge festlegen 389
Sortierung 389
Filterung 390
Abb. 12–14 Sortiereinstellungen im Layout 390
Abb. 12–15 Filtereinstellungen im Layout 390
12.4.2 Verwendung dynamischer Anwenderspalten 391
Abb. 12–16 Definition dynamischer Spalten für eine Standardaufgabe 391
Abb. 12–17 Dynamische Spalten ins Layout einfügen 392
Abb. 12–18 Sichern des Layouts als Voreinstellung 392
Abb. 12–19 Layout der Workflow- Inbox für Vertragsgenehmigungen 393
13 Webservices im Workflow 395
13.1 Webservices im Workflow 395
Transaktionen WF_EXTSRV und WFWS sind veraltet. 395
13.2 Das Webservice-Framework 396
Abb. 13–1 Architektur des Webservice-Frameworks 396
13.2.1 Erstellen eigener Webservices 397
13.2.2 Einbinden fremder Webservices 398
Abb. 13–2 SAP-System als Webservice-Provider 398
Abb. 13–3 Seite mit freien Webservices für Wetterdienste 398
13.3 Beispiel: Einbinden eines Webservice 399
Abb. 13–4 SAP-System als Webservice-Consumer 399
13.3.1 SOAP-Webservice für Wetterdienste 399
Abb. 13–5 Wetterdienst 399
Abb. 13–6 WSDL-File des Webservice für Wetterdienste 400
13.3.2 Einbinden eines Webservice in SAP 400
Abb. 13–7 Auswahl des Objekttypen: Service-Consumer 400
Abb. 13–8 Quelle des Service: Lokale Datei 401
Abb. 13–9 WSDL-Datei vom Frontend verwenden 401
Abb. 13–10 Paket und Präfix vergeben 401
Abb. 13–11 Fertigstellen des Service 402
Abb. 13–12 Übersicht über den neuen Webservice GlobalWeatherSoap 402
Abb. 13–13 Methoden mit Parametern 403
Abb. 13–14 Objekte des Webservice 403
13.3.3 Generierte Klasse ZCO_GLOBAL_WEATHER_SOAP 403
Abb. 13–15 Generierte Klasse zum GlobalWeather-Service 404
Listing 13–1 Generierte Methode GET_CITIES_BY_COUNTRY 404
13.3.4 Anlegen logischer Ports 405
Abb. 13–16 Logischer Port: Laufzeit 406
Abb. 13–17 Logischer Port: Aufrufparameter 406
Abb. 13–18 Logischer Port: Operationen 406
13.4 Aufruf des Webservice 407
13.4.1 Aufruf des Service GlobalWeather in einem Programm 407
Listing 13–2 Aufruf des Webservice GlobalWeather 407
Abb. 13–19 XML-Resultatstring des Webservice GlobalWeather (gekürzt) 408
Listing 13–3 Simple Transformation zur Deserialisierung des XML-Ergebnisses 408
13.4.2 Einbinden des Webservice in den Workflow 409
Abb. 13–20 Ausgabe Testprogramm Webservice GlobalWeather (gekürzt) 409
Abb. 13–21 Aufruf Webservice in statischer Methode bei Containerzuweisung 409
Abb. 13–22 Containerinhalt nach Datenfluss: Wetterstationen in Frankreich 410
14 Das Workflow-Laufzeitsystem 411
14.1 Konzept 411
14.2 Die Tabellen des Laufzeitsystems 411
Tab. 14–1 Einige wichtige Tabellen des Workflow- Laufzeitsystems 412
14.2.1 Die Tabelle SWWWIHEAD der Workitem-Köpfe 412
Workitem ist zentraler Begriff des Laufzeitsystems. 412
Tab. 14–2 Wichtige Felder der Tabelle SWWWIHEAD 412
Tab. 14–3 Typen von Workitems 413
Tab. 14–4 Statuswerte der Workitems 413
Abb. 14–1 Hierarchie von Workitems 414
14.2.2 Die Tabelle SWW_WI2OBJ für Objektreferenzen 414
14.2.3 Die Tabelle SWWORGTASK 415
14.2.4 Die Tabelle SWWUSERWI der Benutzerzuordnung 415
14.2.5 Views 415
14.2.6 Programmierter Zugriff auf die Laufzeittabellen 415
Lesender Zugriff auf Laufzeittabellen kann sinnvoll sein. 415
Listing 14–1 Lesender Zugriff auf Laufzeittabellen 416
Listing 14–2 FBS zum Prüfen einer Vertretung zwischen zwei Benutzern 417
14.3 Wichtige Funktionsbausteine und Klassen 418
14.3.1 SAP_WAPI-Bausteine 418
Tab. 14–5 WAPI-Funktionsbausteine 418
14.3.2 Klassen des Laufzeitsystems 419
Tab. 14–6 Wichtige SAP-Klassen des Laufzeitsystems 419
14.4 Die Arbeitsweise des Laufzeitsystems 420
Abb. 14–2 Prinzipielle Arbeitsweise des Workflow- Laufzeitsystems 421
Abb. 14–3 Aufrufhierarchie beim Ausführen eines Dialog-Workitems 423
Abb. 14–4 Aufrufhierarchie beim Ausführen der Callback- Funktion des Dialog- Workitems 424
14.4.1 Datenfluss über Container 424
14.4.2 Aktionen auf Workitems 424
14.4.3 Termin- und Fehlerüberwachung 425
Report zur Terminüberwachung RSWWDHEX 425
Report zur Fehlerüberwachung RSWWERRE 425
14.4.4 Business Workplace als Sicht auf die Laufzeittabellen 425
15 Tests und Fehlersuche 427
15.1 Workflow-Instanzen suchen 427
15.1.1 Workitem-Selektion mit ihren Anzeigemöglichkeiten 427
SWI1 nicht geeignet für P-Systeme 427
Abb. 15–1 Selektionsbild der Workitem-Selektion 428
Abb. 15–2 Liste mit Workitems der Transaktion SWI1 (Entwicklungssystem) 428
15.1.2 Workflow-Instanzen zu Objekttyp 429
Abb. 15–3 Selektionsbild SWI14: Workflows zu Objekttyp 429
Abb. 15–4 Ergebnisanzeige SWI14: Workflows zu Objekttyp 429
15.1.3 Workflow-Instanzen zu Objektinstanz 430
Abb. 15–5 Selektionsbild SWI6: Workflows zu Objektinstanz 430
Abb. 15–6 SWI6: Eingabe des Schlüssels der Objektinstanz 430
Abb. 15–7 Ergebnisanzeige SWI6: Workflows zu Objektinstanz 431
15.2 Workflow-Protokoll mit seinen diversen Sichten 431
15.2.1 ActiveX-Protokoll und seine Sichten 432
Abb. 15–8 Auswahl der Einstiegssicht des Workflow-Protokolls 432
Abb. 15–9 ActiveX-Workflow- Protokoll: Sicht Workflow-Chronik 432
Abb. 15–10 Grafisches Workflow- Protokoll: Wahl der Hierarchieebene 433
Abb. 15–11 ActiveX-Workflow- Protokoll: Sicht Workflow-Bearbeiter 433
15.2.2 Technisches Workflow-Protokoll und seine Sichten 434
Abb. 15–12 Technisches Workflow-Protokoll, Chronologische Sicht 434
15.2.3 Grafisches Workflow-Protokoll 435
Abb. 15–13 Grafisches Workflow-Protokoll 435
15.2.4 Anzeigen, Ändern und Beenden von Workitems 435
Abb. 15–14 Technische Workitem-Anzeige 436
15.2.5 Testen der Fristverletzung an Ereignisempfängern 436
Abb. 15–15 Ereignisempfänger mit Frist 437
Abb. 15–16 Ereignisempfänger ändern 437
Abb. 15–17 Ändern: Frist (LED = Latest End Date) 438
15.3 Debug-Report für Batch-Workitems 438
15.3.1 Notwendigkeit 438
Fehlersuche in Batch- Workitems ist kompliziert. 438
15.3.2 Anwendung 439
Abb. 15–18 Debug-Report: Parametereingabe beim Starten 439
Abb. 15–19 Debug-Report: Anzeigen bzw. Ändern von Containerwerten 439
Abb. 15–20 Debug-Report: Breakpunkt in einer Hintergrundmethode 440
15.3.3 Quelltext des Reports ZAO_DEBUGWI 440
Listing 15–1 Report zum Debuggen eines Batch-Workitems 441
15.4 Hintergrundschritte im Status STARTED 442
15.4.1 Dump-Analyse 442
Abb. 15–21 ST22: ABAP-Laufzeitfehler: Einstiegsbild 442
Abb. 15–22 ST22: ABAP-Laufzeitfehler: Liste 443
Abb. 15–23 ST22: ABAP-Laufzeitfehler: Langtext zu einem Laufzeitfehler 443
Abb. 15–24 Ermitteln des verursachenden Workitems 443
Abb. 15–25 Workitem in den ausgewählten Variablen 444
15.4.2 Wiederanstarten nach Fehlerkorrektur 444
15.5 Nützliche Hilfsprogramme 444
15.5.1 Container-Update 444
Listing 15–2 Programm zum Ändern des Containers eines Workitems 444
15.5.2 SBE fortsetzen mit Simulation der Auswahl 445
Listing 15–3 Beenden eines Dialog- Workitems mit Ergebniswert 446
15.5.3 Benutzer an Dialog-Workitems ändern 446
Listing 15–4 Ersetzen eines alten durch einen neuen Benutzer an einem Workitem 447
15.5.4 Ultima Ratio nach 22 Uhr 448
Listing 15–5 Programmieren auf geschlossenen Systemen 449
Abb. 15–26 Dynamisches Programm erzeugen 451
Abb. 15–27 Dynamisch erzeugtes Programm – Syntaxcheck 451
Abb. 15–28 Dynamisch erzeugtes Programm liefert Output. 452
Listing 15–6 Programm ändern mit dynamischem Programm 452
15.6 Up- und Download von Workflow-Mustern 452
15.6.1 Problematik 452
Vollständiger XML-Download für Workflows fehlt. 452
15.6.2 Noch kein SAPlink-Plug-in für Workflows 453
Abb. 15–29 SAPlink-Seite im SAP Community Network 453
15.6.3 Up- und Download von Klassen im XML-Format 454
XML-Upload und Download für Klassen 454
15.6.4 Up- und Download von Workflow-Mustern als XML 454
Abb. 15–30 Ausschnitt aus einer XML-Datei für ein Workflow-Muster 455
15.7 Workflow-Transporte 456
Abb. 15–31 Fehler beim Workflow-Transport 456
16 Workflow-Administration 457
16.1 Aufgabe und Festlegung der Administratoren 457
16.1.1 Allgemeine Aufgaben des Workflow-Administrators 457
16.1.2 Customizing verifizieren 458
Abb. 16–1 Workflow-Customizing 458
16.1.3 Workflow-Administrator global einstellen 459
Abb. 16–2 Globalen Workflow- Administrator pflegen 459
16.1.4 Workflow-Administrator pro Workflow-Definition 459
16.2 Batchjobs konfigurieren und einplanen 460
Abb. 16–3 Workflow-Administrator pro Workflow pflegen 460
16.2.1 Terminüberwachung 460
Abb. 16–4 Hintergrundjob für Terminüberwachung konfigurieren und einplanen 460
16.2.2 Workitem-Fehlerüberwachung 461
Abb. 16–5 Hintergrundjob zum Anstarten fehlerhafter Workitems konfigurieren 461
16.2.3 Bedingungsauswertung 461
16.3 E-Mail-Notification für SAP-Gelegenheitsbenutzer 462
16.3.1 Pflege der E-Mail-Adresse für das Weiterleiten 462
Abb. 16–6 E-Mail-Adresse zum Weiterleiten einstellen 462
16.3.2 Pflege der persönlichen E-Mail-Adresse in den Benutzerdaten 462
16.3.3 Erzeugen von E-Mails zu neuen Workitems 463
Abb. 16–7 Pflege der E-Mail-Adresse in den Benutzerstammdaten 463
RSWUWFML für E-Mail-Notification 463
16.3.4 Versenden der Internetmails über SAPconnect 465
Mailversand mit SAPconnect 465
Abb. 16–8 SAPconnect- Administration (TA SCOT) 465
Abb. 16–9 Sendevorgänge SAPconnect (TA SOST) 466
16.4 Reaktion auf Fehlermeldungen des Laufzeitsystems 466
Abb. 16–10 Mail an den Administrator über einen Workflow-Fehler 466
Abb. 16–11 Workflow-Protokoll zur Fehlermeldung 467
16.5 Typische Workflow-Fehler und ihre Behebung 467
16.5.1 Workitems ohne Bearbeiter 467
16.5.2 Workitems mit Terminüberschreitungen 468
16.5.3 Diagnose fehlerhafter Workitems 468
Abb. 16–12 Diagnose fehlerhafter Workitems 468
Abb. 16–13 Fehlermeldung zu einer Zeile des Diagnosereports 469
16.5.4 Laufzeitpuffer synchronisieren 469
WICHTIG: TA SWU_OBUF 469
16.6 Restarten unterbrochener Workflows 470
16.6.1 Restart fehlerhafter Workflows 470
16.6.2 Restart nach Systemabsturz oder Schrittdump 470
Abb. 16–14 Workflows fortsetzen nach Systemabsturz/ Kurzdump, Selektionsbild 470
16.7 Analysen 471
Abb. 16–15 Workflows fortsetzen nach Systemabsturz/ Kurzdump, Ergebnis 471
16.7.1 Workitems pro Aufgabe 471
Abb. 16–16 Aufgabenanalyse 471
16.7.2 Workitems nach Bearbeitungsdauer 472
Sicht Schwellenwerte 472
Abb. 16–17 Bearbeitungsdauern von Aufgaben, Sicht Schwellenwerte 472
Sicht Mittelwerte 472
16.7.3 Workload-Analyse 473
Abb. 16–18 Bearbeitungsdauern von Aufgaben, Sicht Mittelwerte 473
Abb. 16–19 Workload-Analyse für einen Bearbeiter 473
Workload für vergangene Arbeitsbelastung 474
Abb. 16–20 Workload-Analyse: Arbeitsbelastung in der Vergangenheit (Übersicht über alle Aufgaben) 474
Workload für zukünftige Arbeitsbelastung 474
Abb. 16–21 Workload-Analyse: Arbeitsbelastung in der Zukunft 474
16.8 Reorganisation der Laufzeitdaten 475
16.8.1 Allgemeines 475
Workitems werden selten archiviert. 475
16.8.2 Auslastung der Workflow-Laufzeittabellen 475
Tab. 16–1 Speicherplatzintensive Laufzeittabellen des Workflow-Systems 475
XML ist extrem speicherintensiv. 475
16.8.3 Gezieltes Löschen von einzelnen Workflows 476
16.8.4 Löschen von Workflows im Batch 476
Abb. 16–22 RSWWWIDE, gestartet am 13.01.2003, mit dynamischer Selektions- option für die Erzeugungs- zeit im Intervall (Heute -100 d, Heute -30 d) 477
Abb. 16–23 Anlegen der Variante V_100_30 478
Abb. 16–24 Variantenvariablen V_100_30 479
Abb. 16–25 Berechnungsalgorithmus wählen 479
Abb. 16–26 Eingabe der Offsetwerte für SY-DATUM 480
16.8.5 Archivieren von Workflows im Batch 480
Abb. 16–27 Einstiegsbild der Transaktion SWW_SARA 480
Abb. 16–28 Variante für Archivierungslauf festlegen 481
Abb. 16–29 Jobübersicht WORKITEM- Archivierung 482
16.9 Transportieren von Workflows 483
A Die alte Welt – BOR-Objekte im Workflow 485
A.1 Historisches 485
A.2 Anlegen eines neuen Objekttyps 486
Abb. A–1 Grunddaten des neuen Objekttyps 486
A.2.1 Die Objektliste mit ihren Bestandteilen 487
Abb. A–2 Liste des Objekttyps ZVERTRAG mit seinen Bestandteilen 488
Tab. A–1 Liste des Objekttyps ZVERTRAG mit seinen Bestandteilen 488
A.2.2 Programm des Objekttyps als Subroutinenpool 489
Listing A–1 Generierter Programmkopf des BOR-OT ZVERTRAG 489
A.2.3 Interface 490
Abb. A–3 Interface IFSAP mit SubInterface IFEXIST und IFDISPL 490
Listing A–2 Methode EXISTENCECHECK des BOR-OT ZVERTRAG 491
A.2.4 Freigeben von Objekttyp und Komponenten 491
A.3 Attribute 492
A.3.1 Datenbankattribute mit GET_TABLE_PROPERTY 492
Datenbankattribute entsprechen Tabellenspalten. 492
Abb. A–4 Anlegen des Datenbankattributes STATUS 492
Abb. A–5 Einmaliges Generieren des Codes für alle DB-Attribute (Tabellenzugriff) 493
Listing A–3 Programm des BOR-OT ZVERTRAG mit Zugriffsroutinen für Tabelleneigenschaften 493
A.3.2 Objektreferenzen und Makros für den Objektzugriff 495
Abb. A–6 Zweites DB-Attribut im Status modelliert 495
Tab. A–2 Struktur für Laufzeitobjektreferenz SWC_OBJECT 495
Makros für Objektzugriff 496
SELF-Referenz 497
Persistente Objektreferenzen 497
Tab. A–3 Struktur für persistente Objektreferenz SWOTOBJID 497
A.3.3 Implementierung und Aufruf virtueller Attribute 497
Virtuelle Attribute enthalten Code. 497
Listing A–4 Coderahmen für virtuelles Attribut 498
Virtuelles Defaultattribut 498
Abb. A–7 Virtuelles Defaultattribut 498
Listing A–5 Generierte Defaultvariable im Programmcode 499
Listing A–6 Defaultattribut mit SELF-Zugriff 499
Liste von Vertragsreferenzen als virtuelles Attribut 499
Abb. A–8 Virtuelles Attribut liefert Liste von Objektreferenzen. 499
Listing A–7 Generierte Variable für mehrzeiliges, virtuelles Attribut 500
Listing A–8 Generierter Code des virtuellen Attributes VERTRAGSLISTEPERSON 500
Listing A–9 Makro GET_PROPERTY 500
Listing A–10 Programmcode für mehrzeiliges, virtuelles Attribut 501
Abb. A–9 Virtuelles Attribut VertragsListePerson 501
A.4 Implementierung und Aufruf von Methoden 502
Anwendungsfunktionen sind nur über Methoden aufrufbar. 502
Abb. A–10 Definition einer neuen Methode 502
Tab. A–4 Klassifizierung unterschiedlicher Methodentypen 504
Listing A–11 Coderahmen für Methoden 504
Generierung einer Methode 504
A.4.1 Synchrone Anzeigemethode als Defaultmethode 505
Listing A–12 Anzeigemethode für Verträge 505
Abb. A–11 Grunddaten/Defaults des OT Z_VERTRAG 506
A.4.2 Synchrone Dialogmethode mit Ergebnisparameter 506
Festwerte am Ergebnisparameter steuern den Workflow. 506
Abb. A–12 Methode GENEHMIGEN mit Rückgabewert STATUS 507
Abb. A–13 Domänenfestwerte des Ergebnistyps ZVERTRAG-STATUS 507
Listing A–13 Genehmigungsmethode mit Ergebnisparameter 508
Abb. A–14 EXIT_CANCELLED löst Ausnahme 8017 aus 508
A.4.3 Synchrone Hintergrundmethode mit Parametern 509
Abb. A–15 Definition eines mehrzeiligen Importparameters 509
Abb. A–16 Hintergrundmethode mit Import- und Exportparametern 509
Hintergrundmethode mit Import- und Exportparametern 509
Listing A–14 Methode mit mehreren Parametern 510
A.4.4 Asynchrone Dialogmethode ohne alles 510
Asynchrone Methoden müssen Endeereignisse haben. 511
A.4.5 Methoden mit Ausnahmen 511
Abb. A–17 Definition einer Ausnahme an einer Methode 511
Listing A–15 Ausnahmen auslösen mit Makro EXIT_RETURN 512
Abb. A–18 Pop-up zur Anzeige einer aufgetretenen Ausnahme im Methodentest 512
Tab. A–5 Vordefinierte Ausnahmen 512
Ausnahmen und Exportparameter 512
A.4.6 Überdefinieren von Methoden 513
A.5 Ereignisse 513
Abb. A–19 Anlegen eines Ereignisses am Objekttyp 513
A.6 Prüfen und Testen einer Objektimplementierung 514
Abb. A–20 Testen eines Objekttyps 515
Abb. A–21 Eingabe der Importparameter beim Test einer Dialogmethode 515
Abb. A–22 Testergebnisse der Methode RP_PRO_INTERVALL 516
A.7 Vererbung und Delegation 516
A.7.1 Vererbung und Delegation im BOR 516
Abb. A–23 Von ISUSWITCHD abgeleiteter Sub-OT ZVMKSWITCH 518
Abb. A–24 Delegation von ISUSWITCHD nach ZVMKSWITCH 518
A.7.2 Vererbung und keine Delegation für ABAP-Klassen 519
A.7.3 Ereignisbehandlung bei Vererbung und Delegation 519
A.8 Standardisierte Schnittstellen – Container 520
A.8.1 Container in Programmen – Include < CNTN01>
Containerstruktur SWCONT 521
Tab. A–6 Struktur der internen Containertabelle 521
Makros für Containerzugriff anlegen und freigeben 521
Anlegen und Löschen von Elementen 521
Setzen von Werten 522
Setzen von Tabellen 522
Lesen von Werten 522
Lesen von Tabellen 522
Listing A–16 Arbeiten mit BOR-Containern 523
A.8.2 Persistente Instanzen von Containern 525
Abb. A–25 Output des Programms ZAO_BOR_CONTAINER 525
A.8.3 Container im Workflow 526
A.9 Spezielle Objekttypen 527
Tab. A–7 Spezielle Objekttypen 527
Literatur 529
Ginger Gatling et al. Workflow Management mit SAP (2. Auflage) Galileo Press, Bonn, 2010 529
Ulrich Mende Workflow und Archive-Link mit SAP dpunkt.verlag, Heidelberg, 2004 529
Ilja-Daniel Werner Workflow-Entwicklung mit ABAP Galileo Press, Bonn, 2011 529
Horst Keller, Sascha Krüger ABAP Objects (3. Auflage) Galileo Press, Bonn, 2006 529
Inhalt des Downloadbereiches 531
Abkürzungsverzeichnis 535
Index 537

Erscheint lt. Verlag 22.11.2012
Verlagsort Heidelberg
Sprache deutsch
Themenwelt Mathematik / Informatik Informatik Programmiersprachen / -werkzeuge
Informatik Weitere Themen SAP
Wirtschaft
Schlagworte ABAP • Kundenberichte • SAP Business Worklflow • SAP Business Worklflow; ABAP; Kundenberichte
ISBN-10 3-86491-213-X / 386491213X
ISBN-13 978-3-86491-213-9 / 9783864912139
Haben Sie eine Frage zum Produkt?
Wie bewerten Sie den Artikel?
Bitte geben Sie Ihre Bewertung ein:
Bitte geben Sie Daten ein:
PDFPDF (Wasserzeichen)
Größe: 18,8 MB

DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasser­zeichen und ist damit für Sie persona­lisiert. Bei einer missbräuch­lichen Weiter­gabe des eBooks an Dritte ist eine Rück­ver­folgung an die Quelle möglich.

Dateiformat: PDF (Portable Document Format)
Mit einem festen Seiten­layout eignet sich die PDF besonders für Fach­bücher mit Spalten, Tabellen und Abbild­ungen. Eine PDF kann auf fast allen Geräten ange­zeigt werden, ist aber für kleine Displays (Smart­phone, eReader) nur einge­schränkt geeignet.

Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.

Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.

Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.

Mehr entdecken
aus dem Bereich