Suchen und Finden
Service
Moderne Workflow-Programmierung mit ABAP® Objects - Handbuch für Entwickler
Ulrich Mende
Verlag dpunkt, 2012
ISBN 9783864912139 , 544 Seiten
Format PDF, OL
Kopierschutz Wasserzeichen
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
Zugriff auf Klassen- komponenten ohne Objektinstanz mit =>
61
Klassenmethoden
61
Instanzattribute
61
Zugriff auf Instanzkomponenten mit Objektinstanz mit ->
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
BI_PERSISTANT
129
129
Konvertierung Referenz DB à Hauptspeicher
129
BI_PERSISTANT
BI_PERSISTANT
129
129
Konvertierung Referenz Hauptspeicher à DB
129
BI_PERSISTENT
BI_PERSISTENT
129
129
BI_OBJECT
BI_OBJECT
130
130
BI_OBJECT
BI_OBJECT
130
130
BI_OBJECT
BI_OBJECT
130
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
Listing 5–8 Methode BI_PERSISTENT
134
134
Listing 5–9 CONSTRUCTOR mit Aufruf auf BI_PERSISTENT
Listing 5–9 CONSTRUCTOR mit Aufruf auf BI_PERSISTENT
135
135
Abb. 5–7 Key-Flag an der Vertragsnummer
135
Listing 5–10 Methode BI_PERSISTENT
Listing 5–10 Methode BI_PERSISTENT
135
135
Listing 5–11 Methode BI_PERSISTANT
Listing 5–11 Methode BI_PERSISTANT
136
136
Listing 5–12 Methode BI_OBJECT
Listing 5–12 Methode BI_OBJECT
136
136
Listing 5–13 Methode BI_OBJECT
Listing 5–13 Methode BI_OBJECT
137
137
Listing 5–14 Methode BI_OBJECT
Listing 5–14 Methode BI_OBJECT
137
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
159
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
319
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
321
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 &-&-Zugriff über ungebundene Containerreferenzen
324
10.11.4 &-&-Zugriff über gebundene Containerreferenzen
325
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 &-&
327
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
351
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 <> WF-BATCH
361
Abb. 11–28 Versendete Mail mit Absender <> WF-BATCH
362
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
521
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