Sie sind hier
E-Book

Moderne Workflow-Programmierung mit ABAP® Objects

Handbuch für Entwickler

AutorUlrich Mende
Verlagdpunkt
Erscheinungsjahr2012
Seitenanzahl544 Seiten
ISBN9783864912139
FormatPDF
KopierschutzWasserzeichen/DRM
GerätePC/MAC/eReader/Tablet
Preis49,99 EUR
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.

Kaufen Sie hier:

Horizontale Tabs

Blick ins Buch
Inhaltsverzeichnis
Inhaltsverzeichnis7
Einleitung19
Wer hat das Buch geschrieben?19
Dank19
Worum geht es in diesem Buch?20
An wen richtet sich das Buch?21
Hinweise zu den einzelnen Kapiteln22
Kapitel 1 – SAP Business Workflow im Überblick22
Kapitel 2 – Workflow – Entwicklung Tools22
Kapitel 3 – ABAP Objects – Grundlagen23
Kapitel 4 – Durchgängiges Beispiel des Buches: Kreditverträge23
Kapitel 5 – Die neue Welt: ABAP Objects im Workflow23
Kapitel 6 – Workflow-Container und Workflow-Ereignisse23
Kapitel 7 – Organisationsmanagement und Regeln24
Kapitel 8 – Standardaufgaben anlegen und verwenden24
Kapitel 9 – Workflow-Muster anlegen und verwenden24
Kapitel 10 – Klassenbasierte Techniken im Workflow25
Kapitel 11 – Klassenbasierte Eigenentwicklungen im Workflow25
Kapitel 12 – Business Workplace als Userinterface25
Kapitel 13 – Webservices im Workflow25
Kapitel 14 – Das Workflow-Laufzeitsystem26
Kapitel 15 – Tests und Fehlersuche26
Kapitel 16 – Workflow-Administration26
Anhang – Die alte Welt: BOR-Objekte im Workflow27
1 SAP Business Workflow im Überblick29
Workflow für komplex strukturierte, arbeitsteilige Prozesse29
Keine zusätzlichen Lizenzkosten für SAP Business Workflow29
Workitem, Business Workplace30
Workflow-Definition30
Terminüberschreitung30
Aufbauorganisation30
1.1 Die Architektur des SAP Business Workflow31
Abb. 1–1 Architektur des SAP Business Workflows mit allen Komponenten31
1.1.1 Definitionszeit31
Einzelschrittaufgabe31
Tab. 1–1 Zwei wesentliche Aspekte der Einzelschrittaufgabe32
Mehrschrittaufgabe = Workflow-Definition = Workflow-Muster32
Schritttypen32
Business Object Repository33
Tab. 1–2 Übersicht über die Schritttypen in einer Workflow-Definition33
Objekttyp, Objektmethode, Objektattribut33
1.1.2 Workflows und Workitems zur Ausführungszeit34
Workflow als Ausführung einer Workflow-Definition34
Workitem als Schritt eines Workflows34
1.1.3 Bearbeiterfindung34
Organisatorische Zuordnung34
Regel34
1.1.4 Workflow als Reaktion auf Anwendungssignale35
Ereignis35
1.1.5 Vorkonfigurierte Workflow-Definitionen35
Workflow-Muster35
1.1.6 Der typische Workflow-Benutzer36
Sachbearbeiter36
Prozessmodellierer36
Programmierer36
Verantwortlicher für Aufbauorganisation37
Workflow-Administrator37
1.2 Ein typisches Workflow-Szenario37
Genehmigungs- und Freigabeverfahren37
1.3 Dokumentation und Tutorial38
1.4 Business Workplace38
1.4.1 Mails im Business Workplace39
Abb. 1–2 Business Workplace39
Dokumente39
1.4.2 Workitems mit Benutzerdialog in der Worklist39
Worklist39
2 Workflow-Entwicklung – Tools41
2.1 Workflow aus Entwicklersicht41
2.1.1 Workflow als Framework41
2.1.2 Schichtenmodell einer Workflow-Anwendung41
2.1.3 Paketorientierte Workflow-Entwicklung in der SE8042
Abb. 2–1 Schichtenmodell einer Workflow-Anwendung42
Abb. 2–2 Alle Entwicklungsobjekte einer Workflow- Anwendung in der SE8042
Aufgabengruppen nicht über SE8043
2.1.4 Das Workflow-Bereichsmenü SWLD43
Bereichsmenü SWLD43
Empfehlenswert: eigenes Favoritenmenü für Workflow43
PFTC = allgemeine Aufgabenpflege PFAC = allgemeine Regelpflege43
2.2 Workflow-Beispiellösungen der SAP44
Abb. 2–3 Favoriten mit speziellem Ordner für Workflow44
2.2.1 Tutorials44
2.2.2 Workflow-Anwendung »Urlaubsantrag«45
Workflow-Muster Urlaubsantrag = WS3000001545
2.2.3 Workflows der Aufgabengruppe WFUNIT45
80 Workflow-Muster in TG WFUNIT45
2.2.4 Workflows der Aufgabengruppe WF_Verify46
Abb. 2–4 Workflow-Muster der Aufgabengruppe WFUNIT46
Abb. 2–5 Workflow-Muster der Aufgabengruppe WF_Verify46
2.3 SAP Service Marketplace47
Abb. 2–6 Startseite des SAP Service Marketplace47
2.3.1 SAP Support Portal mit Hinweissystem47
Zugriff auf das SAP-Hinweissystem unbedingt erforderlich47
Abb. 2–7 Suchmaske für Hinweissystem48
Abb. 2–8 Application Area in der Suchmaske des Hinweissystems49
Abb. 2–9 Zusätzliche Suchkriterien bei der Hinweissuche49
Abb. 2–10 Suchergebnis des Hinweissystems50
2.3.2 SDN-Community50
SDN-Teilnahme wertvoll für Entwickler50
Abb. 2–11 Suche im SDN-Forum »SAP Business Workflow«50
2.3.3 SAP Help online und offline51
3 ABAP Objects – Grundlagen53
3.1 Objektorientierung als Abbild der realen Welt53
Tab. 3–1 Analogie Handy-Bau – Objektorientierung53
3.2 Klassen und ihre Komponenten54
Attribute speichern Objektdaten.54
Methoden kapseln ABAP-Code.54
3.2.1 PUBLIC-, PROTECTED- und PRIVATE-Komponenten54
Stufenweise Kapselung von Komponenten mit PUBLIC, PROTECTED und PRIVATE55
3.2.2 Statische und Instanzkomponenten55
Statisches Attribut = Klassenattribut = einmal pro Klasse Statische Methode = Klassenmethode = sieht nur Klassenattribute55
3.2.3 Abstrakte und finale Methoden und Klassen55
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 Klassen56
Listing 3–1 Programmstruktur einer lokalen Klasse56
SE24 ist in SE80 integriert.57
Abb. 3–1 Bearbeitung eine globalen Klasse mit der SE24 innerhalb der SE8058
3.2.5 Objekte und Referenzen58
Objektreferenzen sind Zeiger auf Objektinstanzen.59
Listing 3–2 Test, ob Referenz gebunden ist.59
CREATE OBJECT = Neuanlage Objekt + Zuweisung Referenz59
Listing 3–3 Anlegen einer Objektinstanz und zuweisen einer Referenz59
Regeln für Referenzen60
3.2.6 Zugriff auf Klassen- und Instanzkomponenten60
Klassenattribute61
Zugriff auf Klassen- komponenten ohne Objektinstanz mit =>61
Klassenmethoden61
Instanzattribute61
Zugriff auf Instanzkomponenten mit Objektinstanz mit ->61
Instanzmethoden61
Objektreferenz ME zeigt auf das eigene Objekt.61
Listing 3–4 Zugriff auf Klassen- und Instanzmethoden62
Anwendungsdaten auf der DB, Objektdaten im Hauptspeicher62
3.3 Vererbung und Casting von Referenzen62
Vererbungsbaum durch mehrstufige Vererbung62
Vererbung auf Klassenebene, nicht auf Instanzebene63
Abb. 3–2 Vererbung und Referenzen63
Vater-Referenz darf auf Sohn- und Enkel- Instanzen zeigen.64
Statischer und dynamischer Typ von Referenzen64
3.3.1 Klasse CL_VATER64
Listing 3–5 Lokale Klassendefinition CL_VATER65
3.3.2 Klasse CL_SOHN66
Listing 3–6 Lokale Klassendefinition CL_SOHN66
3.3.3 Klasse CL_ENKEL67
Pseudoreferenz SUPER67
Listing 3–7 Lokale Klassendefinition CL_ENKEL68
3.3.4 Beispielprogramm zur Vererbung68
Vererbung besteht zwischen Klassen, nicht zwischen Objekten.68
Listing 3–8 Diverse Methodenaufrufe via Referenz69
3.3.5 Upcasting und Downcasting von Referenzen70
Up- und Downcasting im natürlichen Vererbungsbaum70
Upcasting ist uneingeschränkt möglich.71
Downcasting nur, wenn Source-Referenz spezieller als Target-Referenz71
Listing 3–9 Erlaubte und verbotene Castings71
Abb. 3–3 Programmausgaben72
3.4 Events73
3.4.1 Prinzip Publish and Subscribe73
Beispiel aus dem Bereich der Stellensuche73
Pull-Prinzip73
Push-Prinzip73
Publish and Subscribe73
Ereignisse haben nur EXPORTING-Parameter.73
Tab. 3–2 Statischer und dynamischer Teil von Publish and Subscribe74
3.4.2 Event Handling74
Aufruf Eventhandler74
Workflow verwendet kein Shared Memory.75
3.4.3 Events im Workflow-Kontext75
Systemweite Workflow- Events75
3.5 Interfaces75
IF_WORLFLOW76
IF_WORKITEM_EXIT76
Abb. 3–4 Einbindung eines Interface über mehrere Vererbungsbäume hinweg76
3.5.1 Definition von Interfaces77
Listing 3–10 Muster für die Definition eines Interface77
3.5.2 Interfaceimplementierung und -referenzen77
ALIAS-Namen für Interfacekomponenten78
Listing 3–11 Definition und Implementierung eines Interface78
3.6 Polymorphie79
3.6.1 Allgemeines79
Polymorphie = Vererbung + Redefinition79
Abb. 3–5 Vererbungsbaum Java AWT80
Polymorphie im Workflow = IF_WORKFLOW80
3.6.2 Polymorphie durch Vererbung81
Listing 3–12 Polymorphie in einer Liste unterschiedlicher Männer81
3.6.3 Polymorphie über Interfaces82
3.7 Ausnahmen und Ausnahmeklassen82
3.7.1 Klassische Ausnahmen ohne Ausnahmeklassen82
Abb. 3–6 Klassische Exceptions an einer Methode82
Listing 3–13 Methode mit klassischer Exception83
Listing 3–14 Aufruf einer Methode mit klassischer Exception83
3.7.2 Ausnahmeklassen84
Abb. 3–7 Nachricht ausgeben nach einer klassischen Exception84
3 Basisausnahmeklassen von SAP84
Abb. 3–8 Teil des Vererbungs- baumes von CX_DYNAMIC_CHECK85
Abb. 3–9 Nachrichtenklasse für Ausnahmeklasse85
Abb. 3–10 Eigenschaften der Ausnahmeklasse86
Abb. 3–11 Texte der Ausnahmeklasse86
Abb. 3–12 Nachrichten- und Parameterzuordnung87
Abb. 3–13 Attribute der Ausnahmeklasse87
Listing 3–15 Generierte Konstante vom Typ T10087
Abb. 3–14 Eigenschaften der geerbten bzw. generierten Methoden der Ausnahmeklasse88
Generierter CONSTRUCTOR88
Abb. 3–15 Generierter CONSTRUCTOR der Ausnahmeklasse89
Abb. 3–16 Ausnahmeklasse in der Methode angeben89
Listing 3–16 Methode mit klassen- basierter Exception90
Listing 3–17 Aufruf einer Methode mit klassenbasierter Exception91
Abb. 3–17 Nachricht aus GET_TEXT91
Abb. 3–18 Laufzeitfehler bei fehlendem TRY-CATCH-Block92
CONSTRUCTOR nachgenerieren92
Vorteile von Ausnahmeklassen93
Exceptions und Exportparameter93
Exceptions und Exportparameter93
3.7.3 Ausnahmetexte aus dem OTR93
3.8 Zugriff auf die Klassendefinition im Repository94
Tabellen SEO_* enthalten Klassendefinitionen.94
Abb. 3–19 Repository-Informationen zu einer Klasse94
Listing 3–18 Zugriff auf die Klassendefinition im Repository95
3.9 Dynamischer Aufruf von Klassenmethoden96
Abb. 3–20 Dynamischer Methodenaufruf – Parameterliste96
Listing 3–19 Definition von Parametertabellen für dynamischen Aufruf97
Listing 3–20 Vollständig dynamischer Aufruf einer Instanzmethode97
3.9.1 Parameter vom Typ REF TO dynamisch übergeben100
Listing 3–21 Methode mit Ref To-Parameter101
Listing 3–22 Objektreferenz als Parameter in einem dynamischen Aufruf101
Objektreferenzen dynamisch erzeugen103
Abb. 3–21 Parametertabelle mit Referenzparameter103
Abb. 3–22 Statischen Typ über Feldsymbol dynamisch zuweisen104
3.10 Run Time Type Services104
3.10.1 Run Time Type Identification (RTTI)104
Listing 3–23 Makros für die Typermittlung von Referenzen104
Listing 3–24 Statischen und dynamischen Typ ermitteln105
Abb. 3–23 Ausgabe des Programms Z_TEST_TYPEDEF106
3.10.2 Run Time Type Creation (RTTC)107
Abb. 3–24 Klassenhierarchie des RTTI107
Listing 3–25 Dynamischer Typaufbau via RTTC107
3.11 Übernehmen lokaler Klassen in das Repository109
Abb. 3–25 Dynamisch mit RTTC erzeugte interne Tabelle im Debugger109
Abb. 3–26 Lokale Klassen importieren aus Programm109
Abb. 3–27 Importierte lokale Klasse CL_ENKEL110
4 Durchgängiges Beispiel des Buches: Kreditverträge111
4.1 Aufgabenstellung111
Dieses Beispiel wird durchgehend verwendet.111
4.2 Tabelle ZVERTRAG111
4.3 Vertragstransaktion112
Abb. 4–1 Tabelle ZVERTRAG112
4.4 Statusdiagramm112
4.5 Implementierung (DB und ABAP)113
Abb. 4–2 Statusdiagramm der Beispieltransaktion113
Listing 4–1 Interface FBS Z_VERTRAG (Vertragsbearbeitung)113
Formeln für Monatsrate und Laufzeit114
Abb. 4–3 FBS Z_VERTRAG – Aktion ANLEGEN114
Abb. 4–4 FBS Z_VERTRAG – Aktion AENDERN114
Abb. 4–5 FBS Z_VERTRAG – Aktion GENEHMIGEN115
Abb. 4–6 Ratenplan eines Kreditvertrages (nur letzter Teil)115
4.6 Quelltext der Vertragstransaktion116
Listing 4–2 Quelltext Vertragstransaktion116
4.7 Quelltext zur Berechnung des Ratenplans120
Listing 4–3 Quelltext zur Berechnung des Ratenplans121
5 Die neue Welt: ABAP Objects im Workflow125
5.1 Problemstellung125
5.2 IF_WORKFLOW126
Beispiel einer Vertragsbearbeitung im Workflow126
Abb. 5–1 Struktur SIBFLPOR für persistente Klassenreferenzen127
Abb. 5–2 Struktur SIBFLPORB für persistente BOR-Referenzen127
Abb. 5–3 Interface IF_WORKFLOW im Class Builder (SE24)128
Listing 5–1 Komponenten von BI_OBJECT128
Listing 5–2 Komponenten von BI_PERSISTENT128
Listing 5–3 Komponenten von IF_WORKFLOW129
BI_PERSISTANT~FIND_BY_LPOR129
Konvertierung Referenz DB à Hauptspeicher129
BI_PERSISTANT~LPOR129
Konvertierung Referenz Hauptspeicher à DB129
BI_PERSISTENT~REFRESH129
BI_OBJECT~DEFAULT_ATTRIBUTE_VALUE130
BI_OBJECT~EXECUTE_DEFAULT_METHOD130
BI_OBJECT~RELEASE130
5.3 Vertragsbearbeitung im Workflow – Klasse ZCL_VERTRAG130
Listing 5–4 CONSTRUCTOR der Klasse ZCL_VERTRAG130
5.3.1 Attribute MV_VERNR und MS_VERTRAG130
Abb. 5–4 Keine Schlüsselattribute vor IF_WORKFLOW131
5.3.2 Methoden ANZEIGEN, AENDERN, GENEHMIGEN131
Listing 5–5 Instanzmethode ZCL_VERTRAG.ANZEIGEN131
Listing 5–6 Instanzmethode ZCL_VERTRAG.AENDERN132
Listing 5–7 Instanzmethode ZCL_VERTRAG.GENEHMIGEN132
5.3.3 Ereignisse CREATED, CHANGED und CANCELLED133
Abb. 5–5 Ereignisse der Klasse ZCL_VERTRAG133
5.3.4 Erste Tests der Klasse ohne Interface IF_WORKFLOW134
5.4 Einfachste Ausprägung von IF_WORKFLOW134
Abb. 5–6 Methodenliste von ZCL_VERTRAG nach Einbindung von IF_WORKFLOW134
Listing 5–8 Methode BI_PERSISTENT~REFRESH134
Listing 5–9 CONSTRUCTOR mit Aufruf auf BI_PERSISTENT~REFRESH135
Abb. 5–7 Key-Flag an der Vertragsnummer135
Listing 5–10 Methode BI_PERSISTENT~ FIND_BY_LPOR135
Listing 5–11 Methode BI_PERSISTANT~LPOR136
Listing 5–12 Methode BI_OBJECT~DEFAULT_ATT RIBUTE_VALUE136
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_WORKFLOW137
Listing 5–15 CONSTRUCTOR bei erweitertem Interface137
Listing 5–16 Typen und Klassendaten für Instanzverwaltung138
Listing 5–17 Methode FIND_BY_LPOR mit Instanzpufferung138
Listing 5–18 Methode LPOR liefert Instanzdatum GS_POR.139
Listing 5–19 Methode REFRESH liest Vertragsdaten von der DB139
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. Datensicherheit140
Redundanz zwischen Objekt- und DB-Daten140
Listing 5–23 Statische Methode zur Instanzerzeugung141
Abb. 5–8 PRIVATE- Instanzerzeugung bei Instanzverwaltung141
6 Workflow-Container und Workflow-Ereignisse143
6.1 Konzept143
Tab. 6–1 Workflow-Teilobjekte mit eigenen Containern143
CL-Methoden haben keine Methodencontainer.144
Publish-Subscribe-Prinzip144
Event-Condition-Action- Paradigma144
6.2 Workflow-Container145
6.2.1 Die Klasse CL_SWF_CNT_CONTAINER145
Tab. 6–2 Interface der Klasse CL_SWF_CNT_CONTAINER145
Tab. 6–3 Befreundete Klassen von CL_SWF_CNT_CONTAINER146
Listing 6–1 Arbeiten mit Containern und Elementen147
Abb. 6–1 Editieren eines Containerinhalts148
Listing 6–2 Arbeiten mit Containerelementen149
Abb. 6–2 Editieren der Elementdefinition außerhalb des Containers150
Abb. 6–3 Container nach Einstellen des Elements150
6.2.2 Datenflüsse zwischen Containern151
Listing 6–3 Arbeiten mit Datenflüssen151
Abb. 6–4 Editieren einer Datenflussdefinition153
6.2.3 Containerpersistenz auf der Datenbank154
Abb. 6–5 Target-Container vor und nach Datenfluss154
Containerpersistenz einer Workflow-Definition einstellen154
Abb. 6–6 Datenstruktur zur Untersuchung der Containerpersistenz154
Containerspeicherung bei Strukturpersistenz155
Listing 6–4 NICHT SINNVOLL: Direkter Zugriff auf Containertabellen155
Abb. 6–7 Datenstruktur DATASTRU in der Tabelle SWW_CONT155
Containerspeicherung bei XML-Persistenz156
Abb. 6–8 Abbruch bei Containeranzeige156
Abb. 6–9 Inhalt der Tabelle SWWCNTP0156
Listing 6–5 XML-Daten eines Containers anzeigen157
Container eines Workitems im Programm ändern158
Abb. 6–10 XML-Anzeige der Containerdaten eines WI158
Listing 6–6 Container eines Workitems per FBS ändern158
6.3 Ereigniserzeugung159
6.3.1 Universelle Ereigniserzeugung in ABAP-Programmen159
Abb. 6–11 Ereignis ZCL_VERTRAG ->CANCELLED mit zwei Parametern159
Listing 6–7 Event mit Eventcontainer auslösen159
Abb. 6–12 MAMETAB-Tabelle im Eventcontainer161
Listing 6–8 Verbraucher zu einem ausgelösten Event ermitteln162
Abb. 6–13 Ereignis mit Parametern162
6.3.2 Erzeugung von BOR-Events mit SWE_EVENT_CREATE163
6.3.3 Ereigniserzeugung über Änderungsbelege163
Änderungsbelegobjekt ZVERTRAG anlegen164
Abb. 6–14 Änderungsbelegobjekt ZVERTRAG164
Abb. 6–15 Tabellen im Generierungsobjekt eintragen165
Abb. 6–16 Verbucher generieren165
Änderungsbelege – Workflow-Eigenschaften166
Abb. 6–17 Änderungsbelege Workflow-Eigenschaften166
Änderungsbelege – Ereigniskopplung166
Abb. 6–18 Änderungsbelege – Ereigniskopplung (Übersicht)166
Abb. 6–19 Änderungsbelege – Ereigniskopplung (Details)166
Abb. 6–20 Änderungsbelege – Ereigniskopplung Feldrestriktionen167
Änderungsbelege anzeigen167
Abb. 6–21 Anzeige von Änderungsbelegen mit RSSCD100167
Abb. 6–22 Änderungsbelege – Ereignis-Trace anzeigen167
6.3.4 Weitere Methoden der Ereigniserzeugung168
Ereigniserzeugung über Statusverwaltung168
Ereigniserzeugung über Nachrichtensteuerung168
6.4 Ereignis-Verbraucher-Kopplungen168
6.4.1 Typkopplung mit Funktionsbaustein oder Methode169
Abb. 6–23 Übersicht Typkopplung169
Abb. 6–24 Details Typkopplung, Aufrufart Funktionsbaustein170
Abb. 6–25 Details Typkopplung, Aufrufart Methode170
6.4.2 Verbrauchertyp171
Workflow-Muster steht im Verbrauchertyp171
6.4.3 Verbraucher-Funktionsbaustein171
6.4.4 Check-Funktionsbaustein171
Check-FBS prüft Startbedingungen.171
Listing 6–9 Beispiel für Check-FBS172
6.4.5 Verbrauchertyp-Funktionsbaustein172
Listing 6–10 Beispiel für Verbrauchertyp-FBS173
6.4.6 Typkopplung aktiv, Ereignis-Queue zulassen173
6.4.7 Instanzkopplung173
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 Workflow174
Startereignis Workflow über Typkopplung175
Endeereignis für Workitem über Instanzkopplung175
6.4.9 Workflow-Startbedingungen175
Start- oder Abbruchbedingung176
Abb. 6–28 Workflow- Startbedingungen176
De Morgan’sche Regeln für Negation komplexer logischer Ausdrücke176
Listing 6–11 Abbruchbedingungen im Check-FBS176
Listing 6–12 Startbedingungen in TA SWB_COND176
6.5 Ereignisverarbeitung177
6.5.1 Ablauf der Ereignisverarbeitung177
Ereignismanager177
6.5.2 Erzeuger- und Verbraucherkontext177
Abb. 6–29 Erzeuger- und Verbraucherkontext bei der Ereignisverarbeitung178
6.5.3 Ereignisfluss bei Vererbung178
Abb. 6–30 Ereigniskopplung für Super- und Subklasse179
Abb. 6–31 Ereignis-Trace für Ereignis CREATED der Subklasse179
6.6 Laufzeitwerkzeuge für Ereignisse179
6.6.1 Ereignis auslösen179
6.6.2 Ereignis simulieren180
Abb. 6–32 Ereigniserzeugung180
Ereignissimulation = Was würde bei Auslösung passieren.180
Abb. 6–33 Anzeige der Simulationsergebnisse einer Ereignissimulation180
6.6.3 Ereignis-Trace181
Abb. 6–34 Ereignis-Trace, Selektionsbild181
Abb. 6–35 Ereignis-Trace, Listanzeige182
6.6.4 Ereignis-Queue182
Abb. 6–36 Administration der Ereignis-Queue183
Abb. 6–37 Ereignis-Queue-Browser184
Abb. 6–38 Ereignis-Queue für Ereigniskopplung aktivieren184
7 Organisationsmanagement und Regeln185
7.1 Konzept185
Tab. 7–1 Statische vs. dynamische Bearbeiterzuordnung185
7.2 Bestandteile des Organisationsmanagements186
7.2.1 Organisationseinheiten186
Organisationsstruktur186
7.2.2 Besetzungsplan186
Abb. 7–1 Aufbauorganisation187
7.2.3 Aufgabenprofil187
7.3 Einfache Pflege der Aufbauorganisation188
Abb. 7–2 Pflege der Aufbauorganisation189
7.4 Infotypen189
7.4.1 OM-Typebene und OM-Objektebene189
OM-Typebene189
Abb. 7–3 Pflege des Organisations- managements190
OM-Objektebene190
7.4.2 OM-Objekttypen (Infotyp 1000)191
OM-Objekttypen sind keine BOR-Objekttypen und keine Klassen.191
Tab. 7–2 Wichtige OM-Objekttypen191
7.4.3 Verknüpfungen zwischen Objekttypen (Infotyp 1001)191
Abb. 7–4 Verknüpfungen pflegen192
7.4.4 Weitere Infotypen193
7.4.5 Zuständigkeiten193
Zuständigkeiten sind OM-Objekte vom Typ RY.193
7.5 Regeln und Regelauflösung194
7.5.1 Konzept194
7.5.2 Regeldefinition195
7.5.3 Regeln mit Funktionsbausteinen196
Listing 7–1 Beispiel für Regel-FBS196
Spezialfall: Regel mit Auswertungswegen: RH_GET_STRUCTURE196
7.5.4 Regeln mit Zuständigkeiten197
Abb. 7–5 Regel mit Auswertungsweg197
Abb. 7–6 Definition des Auswertungsweges WF_ORGUN mit TA OOAW197
Tab. 7–3 Zuständigkeiten nach Name und Kredithöhe198
Abb. 7–7 Anlegen von Zuständigkeiten innerhalb der Regelpflege (Tabellensicht)198
Abb. 7–8 Bearbeiterzuordnung bei Zuständigkeiten199
Abb. 7–9 Test der Regelauflösung für hohe Beträge199
Abb. 7–10 Datenfluss vom Workflow-Container (Vertragsreferenz) in den Regelcontainer200
7.6 Dynamische Eingangskörbe200
7.6.1 Aufgabenstellung200
7.6.2 Das Prinzip der dynamischen Eingangskörbe201
Abb. 7–11 Aufbau und Funktion eines dynamischen Eingangskorbes202
7.6.3 Pflege der Bestandteile dynamischer Eingangskörbe203
Abb. 7–12 Eingangskörbe als Org-Einheit mit Planstelle und Aufgabengruppe203
Abb. 7–13 Zuordnung von Benutzern zu Planstelle über TA PPSM203
Abb. 7–14 Dynamische Zuordnung Benutzer zu Planstelle204
Abb. 7–15 Benutzer, die die Vertretung für die Planstelle übernehmen dürfen204
Abb. 7–16 Vertretung für einen/mehrere Eingangskörbe übernehmen205
8 Standardaufgaben anlegen und verwenden207
8.1 Konzept Standardaufgaben207
Abb. 8–1 Standardaufgaben mit ihren Bestandteilen207
8.2 Standardaufgaben anlegen208
Abb. 8–2 Anlegen einer Standardaufgabe zvertr_aend208
8.2.1 Objekttyp und Methode208
Standardaufgaben sind atomare Bestandteile des Workflows.209
Synchrone Standardaufgaben rufen synchrone Methoden209
Synchrone Aufgaben entsprechen FBS-Aufrufen.209
Asynchrone Standardaufgaben rufen asynchrone Methoden209
8.2.2 Hintergrundaufgabe und Dialogaufgabe210
8.2.3 Verarbeitungsende bestätigen211
Listing 8–1 Genehmigungsmethode für Verträge212
8.2.4 Container und Initialwerte212
Abb. 8–3 Anlegen der Container- elemente auf Anfrage213
Abb. 8–4 Aufgabencontainer213
Abb. 8–5 Leerer (= automatischer) Datenfluss zwischen Methode und Aufgabe214
8.2.5 Aufgabe mit Rückgabewert214
Abb. 8–6 Grunddaten der Aufgabe zvertr_gene215
Abb. 8–7 Container der Aufgabe zvert_gene216
Abb. 8–8 Statusfestwerte als aktivierbare Ausgänge am Genehmigungsschritt216
Abb. 8–9 Anlegen von _WI_RESULT217
Abb. 8–10 Container mit Rückgabeelement _WI_RESULT217
8.2.6 Workitem-Text217
Abb. 8–11 Workitem-Text mit Parametern218
Abb. 8–12 Auswahl eines Ausdruckes aus dem Aufgabencontainer218
8.2.7 Beschreibung218
Langtext zur Beschreibung219
Langtext zur Beschreibung219
Langtext bei Terminüberschreitung219
Langtext bei Terminüberschreitung219
Langtext zur Endebenachrichtigung219
Langtext zur Endebenachrichtigung219
8.2.8 Auslösende Ereignisse219
8.2.9 Beendende Ereignisse220
Abb. 8–13 Auslösende Ereignisse einer Aufgabe220
Abb. 8–14 Beendende Ereignisse einer Aufgabe221
8.2.10 Mögliche Bearbeiter221
Abb. 8–15 Eigenschaften einer Standardaufgabe223
Tab. 8–1 Unterschiedliche Arten des Weiterleitens223
8.2.11 Zuständige Bearbeiter – Defaultregeln223
Abb. 8–16 Defaultregeln223
8.3 Standardaufgaben starten224
8.3.1 Start aus Workflow (Standardfall)224
8.3.2 Start über Ereignis224
8.3.3 Start aus Programm224
Listing 8–2 BOR-Standardaufgabe aus Programm starten224
Listing 8–3 CL-Standardaufgabe aus Programm starten226
9 Workflow-Muster anlegen und verwenden227
9.1 Konzept Workflow-Muster227
Workflow-Muster bilden Geschäftsprozesse ab.227
Grafische Workflow- Definition228
9.2 Workflow-Interface228
Abb. 9–1 Anlegen eines Workflow- Musters – Grunddaten228
9.2.1 Workflow-Container229
Führende Objektreferenz bestimmt die Art des Workflows.229
Abb. 9–2 Anlegen eines Workflow- Musters – Container230
Abb. 9–3 Führendes Objekt als CL-Referenz anlegen230
9.2.2 Initialwerte231
Abb. 9–4 Initialwert zur Vetragsreferenz angeben231
9.2.3 Aufgabentext231
9.2.4 Aufgabenbeschreibung231
Beschreibungen für Workflow231
9.2.5 Auslösende Ereignisse232
Datenfluss Startereignis à Workflow232
Abb. 9–5 Auslösende Ereignisse eines Workflow-Musters232
9.3 Workflow-Definition233
9.3.1 Die Arbeit mit dem grafischen Editor233
Teilfenster des grafischen Workflow-Editors233
Abb. 9–6 Grafischer Workflow- Editor234
9.3.2 Der Bedingungseditor235
Abb. 9–7 Bedingungseditor wird an verschiedenen Verzweigungsstellen eingesetzt.235
9.3.3 Übersicht Schritttypen236
Tab. 9–1 Schritttypen der Workflow-Definition236
9.3.4 Schritttyp Aktivität238
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ät241
9.3.6 Schritttyp Mailversand241
9.3.7 Schritttyp Formular242
Abb. 9–11 Formularangaben im Schritttyp »Formular«242
Listing 9–1 Generierte Forms bei Formularen242
9.3.8 Schritttyp Benutzerentscheidung243
Nie generische Entscheidungsaufgabe verwenden243
Abb. 9–12 Schritttyp »Benutzerentscheidung«243
Abb. 9–13 Schritttyp »Benutzer- entscheidung« in der Workflow-Definition244
9.3.9 Schritttyp Warten auf Ereignis244
Abb. 9–14 Schritttyp »Warten auf Ereignis«244
9.3.10 Schritttyp Bedingung245
Listing 9–2 Pseudocode Schritttyp »Bedingung«245
Abb. 9–15 Schritttyp »Bedingung«245
9.3.11 Schritttyp Mehrfachbedingung246
Abb. 9–16 Schritttyp »Bedingung« in der Workflow-Definition246
Listing 9–3 Pseudocode Schritttyp »Mehrfachbedingnung«246
Abb. 9–17 Schritttyp »Mehrfachbedingung«246
Abb. 9–18 Schritttyp »Mehrfachbedingung« in der Workflow-Definition247
9.3.12 Schritttyp Paralleler Abschnitt247
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-Definition248
9.3.13 Schritttyp UNTIL-Schleife248
Listing 9–5 Pseudocode Schritttyp »UNTIL-Schleife«248
Abb. 9–21 UNTIL-Schleife249
Abb. 9–22 UNTIL-Schleife in der Workflow-Definition249
9.3.14 Schritttyp WHILE-Schleife250
Listing 9–6 Pseudocode Schritttyp »WHILE-Schleife«250
Abb. 9–23 Schritttyp »WHILE-Schleife«250
Abb. 9–24 WHILE-Schleife in der Workflow-Definition251
9.3.15 Schritttyp Ablaufsteuerung251
Abb. 9–25 Schritttyp »Ablaufsteuerung« – Funktion »Workflow beenden«252
9.3.16 Schritttyp Containeroperation252
Abb. 9–26 Schritttyp »Containeroperation«252
9.3.17 Schritttyp Ereigniserzeuger253
Abb. 9–27 Schritttyp »Ereigniserzeuger«253
9.3.18 Schritttyp Ad-hoc-Anker253
9.3.19 Schritttyp Block253
9.3.20 Schritttyp Lokaler Workflow254
9.4 Container in der Workflow-Definition254
Abb. 9–28 Datenflüsse im Workflow254
9.5 Workflow-Grunddaten255
Abb. 9–29 Workflow-Grunddaten: versionsunabhängig255
9.5.1 Versionsunabhängig (Aufgabe)256
Reiter »Grunddaten«256
Abb. 9–30 Versionsunabhängig: Grunddaten256
Reiter »Beschreibung«256
Abb. 9–31 Versionsunabhängig: Beschreibung256
Reiter »Startereignisse«256
Abb. 9–32 Versionsunabhängig: Startereignisse257
Abb. 9–33 Versionsunabhängig: Startereignisse, Bedingung257
Reiter »Versionsübersicht«257
Abb. 9–34 Versionsunabhängig: Versionsübersicht257
Reiter »Funktionsgruppe«258
9.5.2 Versionsabhängig (aktuelle Workflow-Version)258
Abb. 9–35 Versionsabhängig: Steuerung: Persistenzprofil258
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: Ereignisse260
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-Workflow261
9.6.1 Technische Workflow-Beschreibung und Pseudocode261
Listing 9–7 Pseudocode Vertrags-Workflow262
9.6.2 Workflow-Muster zao_main262
Start des Builders mit leerem Workflow262
Abb. 9–37 Anlegen zao_main: Start mit leerem Workflow262
Einfügen der UNTIL-Schleife263
Abb. 9–38 Anlegen zao_main: UNTIL-Schleife mit Bedingung263
Abb. 9–39 Anlegen zao_main: UNTIL-Schleife: Bedingung263
Schritt einfügen für Aufgabe zao_gene264
Abb. 9–40 Workflow zao_main: Schritt Vertrag genehmigen: Steuerung264
Abb. 9–41 Workflow zao_main: Schritt Vertrag genehmigen: Ausgänge264
Schritt einfügen für Aufgabe zao_aend265
Abb. 9–42 Anlegen zao_main: nach Einfügen des Genehmigungsschrittes265
Abb. 9–43 Workflow zao_main: Schritt Vertrag ändern nach Ablehnung: Steuerung265
Abb. 9–44 Anlegen zao_main: fertiger Workflow mit Blockstruktur266
9.7 Bearbeiterfindung im Workflow267
9.7.1 Allgemeines267
9.7.2 Definition der möglichen Bearbeiter267
Abb. 9–45 Bearbeiterzuordnung pflegen268
9.7.3 Zuständige und ausgeschlossene Bearbeiter268
Sonderfälle269
Abb. 9–46 Definition der zuständigen und der ausgeschlossenen Bearbeiter269
9.7.4 Ermittlung der Empfänger269
Abb. 9–47 Ermittlung der Empfänger eines Workitems270
9.8 Arbeiten mit dem Business Workflow Explorer270
9.8.1 Zweck des Business Workflow Explorer270
9.8.2 Auswahl des Suchbereiches271
Abb. 9–48 Angabe der Objekttypen im Business Workflow Explorer271
9.8.3 Anzeige und Bearbeitung von Objekten272
Abb. 9–49 Anzeige von Objekttypen im Business Workflow Explorer272
9.9 Lesen der Workflow-Definitionen272
Workflow-Definitionen in ABAP auswerten272
Listing 9–8 Workflow-Muster mit Aufgaben auflisten273
Abb. 9–50 Liste von Workflow- Mustern mit Aufgaben und ABAP-Methoden274
9.10 Starten von Workflows275
9.10.1 Start von Workflows über ABAP OO275
Listing 9–9 Workflow aus Programm direkt starten275
9.10.2 Start von Workflows über Ereignisse276
10 Klassenbasierte Techniken im Workflow277
10.1 SAP-Klassen im Workflow-Umfeld277
Tab. 10–1 Klassengruppen für SAP-Klassen im Workflow-Kontext277
10.2 Iterator-Klassen, Factory-Klassen und Utility-Klassen278
10.2.1 Iterator-Klassen278
Abb. 10–1 Attribute der BasisIterator-Klasse CL_SWF_UTL_ITERATOR278
Abb. 10–2 Tabellentyp der BasisIterator-Klasse CL_SWF_UTL_ITERATOR278
Abb. 10–3 Methoden der BasisIterator-Klasse CL_SWF_UTL_ITERATOR279
Listing 10–1 Beispielprogramm Iterator279
Listing 10–2 Iteration über Containerelemente281
10.2.2 Factory-Klassen und Factory-Methoden281
Tab. 10–2 Factory-Klassen im Workflow-Kontext281
Abb. 10–4 Singletonklasse282
Listing 10–3 Methode get_container der Klasse cl_swf_tst_ container_singleton283
Listing 10–4 Drei Containerreferenzen zeigen auf dasselbe Objekt.283
Abb. 10–5 Drei Containerreferenzen auf dasselbe Containerobjekt283
10.2.3 Utility-Klassen283
Tab. 10–3 Utility-Klassen im Workflow-Kontext284
10.3 Terminüberwachung284
10.3.1 Problem und Lösungsprinzip284
10.3.2 Standardfall mit Deadline-Workitems284
Deadline-Workitem285
Abb. 10–6 Spätester Start (Standardfall)285
10.3.3 Berechnete Termine mit Deadline-Workitem286
Abb. 10–7 Eingangskorb mit Deadline-Workitem zur Erinnerung (Release 4.0)286
10.3.4 Obsolet setzen eines Workitems287
Abb. 10–8 Berechnete Termine für den spätesten Start287
Kalenderfunktionen zur Berechnung von Terminen287
Abb. 10–9 Workflow mit modellierter Fristüberschreitung und Obsoletausnahme288
10.4 Nebenmethoden288
10.4.1 Problem und Lösungsprinzip288
10.4.2 Methode zur Vertragsanzeige289
Funktionsbaustein REUSE_ALV_LIST_DISPLAY289
Listing 10–5 Nebenmethode zur Anzeige aller Verträge eines Kunden289
10.4.3 Eintrag als Nebenmethode in die Aktivität289
Abb. 10–10 Eintrag einer Methode als Nebenmethode289
10.4.4 Amodaler Aufruf der Nebenmethode290
Abb. 10–11 Aufruf einer Vertragsliste als amodale Nebenmethode290
10.5 Objektreferenzen in die Workitem-Vorschau einstellen291
10.5.1 Referenzen auf bestehende Workflow-Klassen291
Abb. 10–12 Objektliste _Adhoc_Objects nur für BOR-Referenzen291
Abb. 10–13 Versorgen einer Referenz für die Workitem-Vorschau291
Abb. 10–14 Workitem-Vorschau für Ratenplananzeige292
10.5.2 Referenzen auf spezielle Anzeigeklassen292
Überspringen von Dynpros mit Batch-Input292
Abb. 10–15 Zieldarstellung für Einsprung in das CIC293
Listing 10–6 Generierter FBS mit Batch-Input294
Abb. 10–16 Klasse ZCL_CICLINK für CIC-Link295
Listing 10–7 Quelltext der Klasse ZCL_CICLINK296
10.6 Programmier-Exits für Workitems297
10.6.1 Das Interface IF_SWF_IFS_WORKITEM_EXIT297
Abb. 10–17 Workitem-Exit297
10.6.2 Logging mit CHECK-POINT-Gruppe297
Abb. 10–18 CHECK-POINT-Gruppe ZVERTRAG mit Aktivierungen298
Abb. 10–19 Parameter im Workitem-Exit298
Abb. 10–20 Mögliche Events für den Aufruf des Workitem-Exits298
Abb. 10–21 Interface IF_WAPI_WORKITEM_ CONTEXT299
Listing 10–8 Workitem-Exit mit Logging299
Abb. 10–22 Anzeige der Log-Einträge zum Userexit300
10.6.3 Automatisches Zurücklegen eines Workitems300
Listing 10–9 Workitem-Exit für das Zurücklegen eines Workitems301
Listing 10–10 Bacht-Report zum Zurücklegen eines Workitems301
10.7 Fortgeschrittene Workflow-Definition302
10.7.1 Lokale Ereignisse und Ausnahmen302
Abb. 10–23 Workflow-Grunddaten: Versionsabhängig: Lokale Ereignisse303
Tab. 10–4 Schritttypen für lokale Ereignisse und Ausnahmen303
10.7.2 Lokale Ereignisse und komplexe Bedingungen303
Abb. 10–24 Komplexe Bedingung modelliert über lokales Ereignis304
Abb. 10–25 Schritt D wartet auf Schritt A im anderen Parallelzweig304
10.7.3 TRY/CATCH im Workflow: Blöcke und Ausnahmen305
10.7.4 Lokale Workflows und lokale Ereignisse305
10.8 Dynamische Blöcke306
10.8.1 Dynamisch sequenzieller Block = Workflow-Iterator307
Abb. 10–26 Dynamisch sequenzieller Block als eingebetteter Subworkflow307
10.8.2 Dynamisch paralleler Block307
Abb. 10–27 Dynamisch paralleler Block als eingebetteter Subworkflow307
10.8.3 Beispiel: Bewertungs-Workflow für Vertrag308
Abb. 10–28 Dynamisch-sequenzielle Bearbeitung der UserListe308
Abb. 10–29 Datenfluss zum dynamisch-sequenziellen Block309
Abb. 10–30 Dynamisch-paralleler Block zur Vertragsbewertung309
Abb. 10–31 Datenfluss zwischen Workflow-Container und Blockcontainer310
Abb. 10–32 Abbruchbedingung für dynamisch-parallelen Block310
Abb. 10–33 SBE zur Vertrags- bewertung mit Link zum Vertrag311
Abb. 10–34 Protokoll eines Workflows mit Blöcken311
10.9 Ad-hoc-Funktionen im Workflow312
10.9.1 Ad-hoc-Aufgabenauswahl312
Abb. 10–35 Maschinelle Aufgabenbestimmung312
Listing 10–11 Statische, funktionale Methode zur Bestimmung des Workflow-Musters313
Abb. 10–36 Ausdruck für Aufgabe ist funktionale Methode.313
Manuelle Ad-hoc-Aufgabenauswahl314
Abb. 10–37 Aufgabenauswahl aus einer passenden Aufgabengruppe314
Abb. 10–38 Ausdruck für Ad-hoc- Aufgabe ist Containervariable314
10.9.2 Ad-hoc-Bearbeiterauswahl314
Abb. 10–39 Datenfluss von/zum Dialog für Ad-hoc- Bearbeiterauswahl.315
10.9.3 Ad-hoc-Workflow einbinden316
Abb. 10–40 Dialog zur Ad-hoc- Bearbeiterauswahl316
Abb. 10–41 Liste der Ad-hoc- Workflows in einem Schritt »Ad-hoc-Anker«316
Abb. 10–42 Grafisches Workflow- Protokoll vor der Ersetzung317
10.10 Reaktion eines Workflows auf externe Ereignisse318
Abb. 10–43 Ersetzter Ad-hoc-Anker im Workflow-Protokoll318
10.10.1 Standardreaktionen über Grunddaten des Workflows319
Abb. 10–44 Workflow abbrechen bei Ereignis ZCL_VERTRAG->CANCELLED319
Abb. 10–45 Instanzkopplung für Ereignisempfang320
10.10.2 Modellierte Reaktionen über Ereignisempfänger320
Abb. 10–46 Warten auf Ereignis ZCL_VERTRAG->ACTIVATED321
Abb. 10–47 Frist für Warteschritt auswerten (modelliert)321
Abb. 10–48 Ereignisempfänger mit Fristüberwachung322
10.11 Klassenverwendung im Workflow ohne Standardaufgaben322
10.11.1 Konzept322
Tab. 10–5 Klassenaufrufe im Workflow ohne Standardaufgaben323
10.11.2 %-%-Zugriff ohne IF_WORKFLOW323
Abb. 10–49 Ausdruck mit funktionaler Methode in Containerzuweisung324
Abb. 10–50 Funktionale Methode mit Parametervariablen im Datenfluss324
10.11.3 &-&-Zugriff über ungebundene Containerreferenzen324
10.11.4 &-&-Zugriff über gebundene Containerreferenzen325
Abb. 10–51 Ungebundene Klassenreferenz im Container325
Listing 10–12 Pseudoinstanziierung325
Abb. 10–52 Instanziierung (= Initiali- sierung) der Pseudo- referenz der Utility-Klasse326
Abb. 10–53 Kompletter (ergänzter) Ausdruck326
Abb. 10–54 Ausdruck mit funktionaler Methode via Referenz im Datenfluss327
10.11.5 Geschachtelter Zugriff mit %-% und &-&327
Abb. 10–55 Geschachtelter Ausdruck in einer Bedingung327
10.11.6 Methoden mit mehreren Exportparametern328
Listing 10–13 Nicht funktionale Methode mit zwei alternativen Exportparametern328
Leider nicht möglich!328
10.11.7 Objektreferenzen on-the-Flight329
Abb. 10–56 Aufruf der Methode ZCL_CALC.POWER in einem Datenfluss329
Abb. 10–57 Objekt on-the-Flight im Datenfluss329
11 Klassenbasierte Eigenentwicklungen im Workflow331
11.1 Utility-Klasse ZCL_DATE: Datumsberechnung auf Kalendern331
11.1.1 Verwendung von Datumsberechnungen331
11.1.2 Implementierung von ZCL_DATE331
Listing 11–1 Klasse ZCL_DATE, Methode DATE331
Listing 11–2 Klasse ZCL_DATE, Methode TIME333
Abb. 11–1 Zeitkonstanten der Klasse ZCL_DATE334
11.1.3 Verwendung von ZCL_DATE in Ausdrücken334
Abb. 11–2 Verwendung von ZCL_DATE im Vorlagetermin334
Abb. 11–3 Datumsberechnung in die Vergangenheit335
Klassenausdrücke mit % ohne IF_WORKFLOW335
11.2 Utility-Klasse ZCL_COND: komplexe Bedingungen335
11.2.1 Konzept komplexer Bedingungen im Workflow335
Abbildung beliebiger Bedingungen335
11.2.2 Tabelle ZCONDITION336
Abb. 11–4 Workitems: Tabelle für Startbedingungen336
11.2.3 Implementierung von ZCL_COND336
Listing 11–3 Klasse ZCL_COND, Setzen einer Bedingung mit SET336
Listing 11–4 Klasse ZCL_COND, Prüfen einer Bedingung mit CHECK337
11.2.4 Verwendung von ZCL_COND in ZCL_VERTRAG337
Listing 11–5 Methode SETCOND der Klasse ZCL_COND337
Listing 11–6 Methode CHECKCOND der Klasse ZCL_COND338
11.2.5 Setzen und Prüfen von Vertragsbedingungen338
Abb. 11–5 Workflow mit Setzen einer Bedingung via Containeroperation339
Abb. 11–6 Zuweisung zum Setzen einer Bedingung339
Abb. 11–7 Startbedingung am Schritt D340
Abb. 11–8 Nach Start des Workflows340
Abb. 11–9 Nach Beenden des Schrittes A, vor dem nächsten Lauf von SWWCOND341
Abb. 11–10 Bedingung »A_FERTIG« wurde in die Tabelle geschrieben.341
Abb. 11–11 Nach dem nächstem Lauf des Reports SWWCOND342
11.2.6 Aufruf von ZCL_COND in Ausdrücken343
Abb. 11–12 Direkter Aufruf der Klasse ZCL_COND343
11.3 Utility-Klasse ZCL_CONST: Datenbankkonstanten343
11.3.1 Konzept »variabler« Konstanten343
11.3.2 Tabelle der Konstanten ZCONST344
Abb. 11–13 DB-Tabelle für Konstanten344
Abb. 11–14 Werte in der Konstantentabelle344
11.3.3 Aufruf der Konstanten über ZCL_CONST344
Listing 11–7 Aufruf einer Datums- konstanten über Klasse ZCL_CONST345
11.3.4 Implementierung von ZCL_CONST345
Abb. 11–15 Konstanten als statische Read-only-Attribute mit Defaultwert345
Abb. 11–16 Methoden der Konstantenklasse345
Listing 11–8 Lesen der DB-Konstanten in Klasse ZCL_CONST346
Listing 11–9 CONSTRUCTOR ruft Methode REFRESH346
11.3.5 Einführen neuer Konstanten347
Abb. 11–17 Testen der statischen Konstantenklasse347
11.3.6 Verwendung der Konstanten im Workflow347
Abb. 11–18 Statischer Aufruf von Konstanten348
Listing 11–10 Pseudoinstanziierung der Klasse ZCL_CONST348
Abb. 11–19 Abstrakte Konstantenklasse im Workflow-Container zur Definitionszeit348
Abb. 11–20 Verwendung der Konstantenklasse in einer Containeroperation349
11.4 Utility-Klasse ZCL_SYSTEM: generische Systemmethoden349
11.4.1 Inhalt von ZCL_SYSTEM349
11.4.2 Erzeugen von Klassenreferenzen im Workflow350
Import via Datenfluss aus dem Ereigniscontainer350
Import aus Instanziierungsmethode einer Klasse350
Listing 11–11 Methode zur Instanziierung von Vertragsobjekten351
Abb. 11–21 Setzen einer Vertragsreferenz mit ZCL_VERTRAG=>GET_REF351
Import aus spezieller CREATE-Methode der Klasse351
Listing 11–12 Klassenmethode zum Neuanlegen eines Vertrages352
11.4.3 GENERICINSTANTIATE von CL- und BOR-Referenzen352
Listing 11–13 Methode zum Anlegen von BOR- und CL-Referenzen im Workflow352
11.4.4 MAKE_CL_REF für den Aufruf in Ausdrücken353
Listing 11–14 Funktionale Methode ZCL_SYSTEM.MAKE_ CL_REF354
Listing 11–15 Aufruf von MAKE_CL_REF in einer Zuweisung354
11.5 Kommunikation zwischen parallelen Subworkflows354
11.5.1 Kommunikation über Ereignisse355
Abb. 11–22 Parameter am Ereignis ANSWER_FOR_EVENT_ FLAGS355
Abb. 11–23 Mainworkflow mit zwei kommunizierenden parallelen Subworkflows355
Abb. 11–24 Kommunikation zwischen zwei parallelen Subworkflows über Ereignisse356
11.5.2 ZCL_SYSTEM: Lesen fremder Workflow-Container356
Listing 11–16 Lesen eines anderen Workflow-Containers357
Abb. 11–25 Binding Workflow à Auf- gabe für Leseschritt aus fremdem WF-Container359
11.6 Mails im Workflow-Umfeld359
11.6.1 Mail senden mit Schritttyp Mailversand359
Abb. 11–26 Mailinhalt mit Platzhaltern im Schritt Mail versenden360
Abb. 11–27 Erzeugte Mail in SAPconnect (TA SOST)360
11.6.2 ZCL_SYSTEM: Mail mit eigenem Absender360
Listing 11–17 Mail aus Workflow mit Absender <> WF-BATCH361
Abb. 11–28 Versendete Mail mit Absender <> WF-BATCH362
11.6.3 ZCL_SYSTEM: Mail mit SAP – Text und Containerbezug362
Listing 11–18 Mail aus SAP- Standardtext mit Platzhaltern363
Abb. 11–29 SAPScript-Text ZVERTRAG_GENEHMIGT für Mail bei Vertragsgenehmigung365
Abb. 11–30 Datenfluss zur Aufgabe für Mailversand365
Abb. 11–31 Gesendete Mail in der TA SOST366
Abb. 11–32 Mail mit ersetzten Werten aus dem Workflow-Container366
11.6.4 HTML-Mails mit Rückantwort367
Senden einer HTML-Mail367
Listing 11–19 Anlegen und versenden einer HTML-Mail367
Abb. 11–33 HTML-Mail mit Tasten für Rückantwort369
Abb. 11–34 Antwortmail des Genehmigers369
Verarbeitung der Antwortmails369
Listing 11–20 Implementierung des Interface IF_INBOUND_EXIT BCS369
Abb. 11–35 Eintragen der Klasse ZCL_VERTRAG_ MAILREPLY für Eingangsverarbeitung370
Reaktion auf Ereignisse aus der Mailverarbeitung im Workflow371
Abb. 11–36 Beendende Ereignisse an der Genehmigungs- aufgabe371
Abb. 11–37 Ausgänge am Genehmigungsschritt372
Abb. 11–38 Ablehnung/Genehmigung per Mail/GUI372
12 Business Workplace als Userinterface373
12.1 Allgemeines zum Business Workplace373
Abb. 12–1 Outlook-Arbeitsplatz mit dreigeteiltem Fenster373
Abb. 12–2 SAP Business Workplace mit Dreifelderaufteilung374
12.2 Fenster im Business Workplace375
Abb. 12–3 SAP Business Workplace, Workitems nicht gruppiert375
Abb. 12–4 SAP Business Workplace, Ansicht Workflow, gruppiert nach Aufgaben375
12.2.1 Das Mappenfenster (1)375
Tab. 12–1 Inhalt und Bedeutung des Mappenfensters376
Gruppierungen im Workplace377
12.2.2 Das Inboxfenster (2)378
Abb. 12–5 Inbox im Inboxfenster des Business Workplace378
Abb. 12–6 Drucktasten für Inbox378
12.2.3 Das Vorschaufenster (3)379
Anwenderspezifisches Vorschaufenster379
Abb. 12–7 Anwenderspezifische Vorschau379
12.3 Funktionen im Workplace380
Abb. 12–8 Funktionsbaustein für anwenderspezifische Vorschau380
12.3.1 Funktionen der Workflow-Inbox380
Statuswerte von Dialog-Workitems380
Refresh381
Abb. 12–9 Statusdiagramm für Dialog-Workitems381
Ausführen381
Anzeigen382
Annehmen382
Automatik: Weiterschalten mit Dialog382
Zurücklegen382
Weiterleiten382
Wiedervorlegen383
Workflow-Protokoll anzeigen383
Anlagen anlegen, ändern, löschen383
Anlagen per Upload am Frontend383
Weitere Funktionen383
Sortieren aufsteigend und absteigend384
Suchen384
Layout384
12.3.2 Persönliche Workflow-Einstellungen385
Abb. 12–10 Persönliche Workflow-Einstellungen385
Organisatorisches Umfeld auffrischen385
12.3.3 Workflow-Vertretungen385
Vertreterregelungen werden unterschätzt.386
Pflege von Vertretern386
Potenzielle Vertreter vorausschauend pflegen386
Aktivierung einer Vertretung durch den Vertretenen386
Aktivierung von Vertretern durch den Vertreter selbst387
Abb. 12–11 Vertretungen pflegen und übernehmen387
Probleme der Vertreterregelung in SAP Business Workflow387
Keine Kettenvertretung möglich387
12.3.4 Vertretungen in Tabelle HRUS_D2388
Abb. 12–12 Tabelle HRUS_D2 der Workflow-Vertretungen388
12.4 Die Anpassung der Inbox388
12.4.1 Layoutfunktionen des ALV-Grids388
Spaltenauswahl389
Abb. 12–13 Spaltenauswahl und Spaltenreihenfolge festlegen389
Sortierung389
Filterung390
Abb. 12–14 Sortiereinstellungen im Layout390
Abb. 12–15 Filtereinstellungen im Layout390
12.4.2 Verwendung dynamischer Anwenderspalten391
Abb. 12–16 Definition dynamischer Spalten für eine Standardaufgabe391
Abb. 12–17 Dynamische Spalten ins Layout einfügen392
Abb. 12–18 Sichern des Layouts als Voreinstellung392
Abb. 12–19 Layout der Workflow- Inbox für Vertragsgenehmigungen393
13 Webservices im Workflow395
13.1 Webservices im Workflow395
Transaktionen WF_EXTSRV und WFWS sind veraltet.395
13.2 Das Webservice-Framework396
Abb. 13–1 Architektur des Webservice-Frameworks396
13.2.1 Erstellen eigener Webservices397
13.2.2 Einbinden fremder Webservices398
Abb. 13–2 SAP-System als Webservice-Provider398
Abb. 13–3 Seite mit freien Webservices für Wetterdienste398
13.3 Beispiel: Einbinden eines Webservice399
Abb. 13–4 SAP-System als Webservice-Consumer399
13.3.1 SOAP-Webservice für Wetterdienste399
Abb. 13–5 Wetterdienst399
Abb. 13–6 WSDL-File des Webservice für Wetterdienste400
13.3.2 Einbinden eines Webservice in SAP400
Abb. 13–7 Auswahl des Objekttypen: Service-Consumer400
Abb. 13–8 Quelle des Service: Lokale Datei401
Abb. 13–9 WSDL-Datei vom Frontend verwenden401
Abb. 13–10 Paket und Präfix vergeben401
Abb. 13–11 Fertigstellen des Service402
Abb. 13–12 Übersicht über den neuen Webservice GlobalWeatherSoap402
Abb. 13–13 Methoden mit Parametern403
Abb. 13–14 Objekte des Webservice403
13.3.3 Generierte Klasse ZCO_GLOBAL_WEATHER_SOAP403
Abb. 13–15 Generierte Klasse zum GlobalWeather-Service404
Listing 13–1 Generierte Methode GET_CITIES_BY_COUNTRY404
13.3.4 Anlegen logischer Ports405
Abb. 13–16 Logischer Port: Laufzeit406
Abb. 13–17 Logischer Port: Aufrufparameter406
Abb. 13–18 Logischer Port: Operationen406
13.4 Aufruf des Webservice407
13.4.1 Aufruf des Service GlobalWeather in einem Programm407
Listing 13–2 Aufruf des Webservice GlobalWeather407
Abb. 13–19 XML-Resultatstring des Webservice GlobalWeather (gekürzt)408
Listing 13–3 Simple Transformation zur Deserialisierung des XML-Ergebnisses408
13.4.2 Einbinden des Webservice in den Workflow409
Abb. 13–20 Ausgabe Testprogramm Webservice GlobalWeather (gekürzt)409
Abb. 13–21 Aufruf Webservice in statischer Methode bei Containerzuweisung409
Abb. 13–22 Containerinhalt nach Datenfluss: Wetterstationen in Frankreich410
14 Das Workflow-Laufzeitsystem411
14.1 Konzept411
14.2 Die Tabellen des Laufzeitsystems411
Tab. 14–1 Einige wichtige Tabellen des Workflow- Laufzeitsystems412
14.2.1 Die Tabelle SWWWIHEAD der Workitem-Köpfe412
Workitem ist zentraler Begriff des Laufzeitsystems.412
Tab. 14–2 Wichtige Felder der Tabelle SWWWIHEAD412
Tab. 14–3 Typen von Workitems413
Tab. 14–4 Statuswerte der Workitems413
Abb. 14–1 Hierarchie von Workitems414
14.2.2 Die Tabelle SWW_WI2OBJ für Objektreferenzen414
14.2.3 Die Tabelle SWWORGTASK415
14.2.4 Die Tabelle SWWUSERWI der Benutzerzuordnung415
14.2.5 Views415
14.2.6 Programmierter Zugriff auf die Laufzeittabellen415
Lesender Zugriff auf Laufzeittabellen kann sinnvoll sein.415
Listing 14–1 Lesender Zugriff auf Laufzeittabellen416
Listing 14–2 FBS zum Prüfen einer Vertretung zwischen zwei Benutzern417
14.3 Wichtige Funktionsbausteine und Klassen418
14.3.1 SAP_WAPI-Bausteine418
Tab. 14–5 WAPI-Funktionsbausteine418
14.3.2 Klassen des Laufzeitsystems419
Tab. 14–6 Wichtige SAP-Klassen des Laufzeitsystems419
14.4 Die Arbeitsweise des Laufzeitsystems420
Abb. 14–2 Prinzipielle Arbeitsweise des Workflow- Laufzeitsystems421
Abb. 14–3 Aufrufhierarchie beim Ausführen eines Dialog-Workitems423
Abb. 14–4 Aufrufhierarchie beim Ausführen der Callback- Funktion des Dialog- Workitems424
14.4.1 Datenfluss über Container424
14.4.2 Aktionen auf Workitems424
14.4.3 Termin- und Fehlerüberwachung425
Report zur Terminüberwachung RSWWDHEX425
Report zur Fehlerüberwachung RSWWERRE425
14.4.4 Business Workplace als Sicht auf die Laufzeittabellen425
15 Tests und Fehlersuche427
15.1 Workflow-Instanzen suchen427
15.1.1 Workitem-Selektion mit ihren Anzeigemöglichkeiten427
SWI1 nicht geeignet für P-Systeme427
Abb. 15–1 Selektionsbild der Workitem-Selektion428
Abb. 15–2 Liste mit Workitems der Transaktion SWI1 (Entwicklungssystem)428
15.1.2 Workflow-Instanzen zu Objekttyp429
Abb. 15–3 Selektionsbild SWI14: Workflows zu Objekttyp429
Abb. 15–4 Ergebnisanzeige SWI14: Workflows zu Objekttyp429
15.1.3 Workflow-Instanzen zu Objektinstanz430
Abb. 15–5 Selektionsbild SWI6: Workflows zu Objektinstanz430
Abb. 15–6 SWI6: Eingabe des Schlüssels der Objektinstanz430
Abb. 15–7 Ergebnisanzeige SWI6: Workflows zu Objektinstanz431
15.2 Workflow-Protokoll mit seinen diversen Sichten431
15.2.1 ActiveX-Protokoll und seine Sichten432
Abb. 15–8 Auswahl der Einstiegssicht des Workflow-Protokolls432
Abb. 15–9 ActiveX-Workflow- Protokoll: Sicht Workflow-Chronik432
Abb. 15–10 Grafisches Workflow- Protokoll: Wahl der Hierarchieebene433
Abb. 15–11 ActiveX-Workflow- Protokoll: Sicht Workflow-Bearbeiter433
15.2.2 Technisches Workflow-Protokoll und seine Sichten434
Abb. 15–12 Technisches Workflow-Protokoll, Chronologische Sicht434
15.2.3 Grafisches Workflow-Protokoll435
Abb. 15–13 Grafisches Workflow-Protokoll435
15.2.4 Anzeigen, Ändern und Beenden von Workitems435
Abb. 15–14 Technische Workitem-Anzeige436
15.2.5 Testen der Fristverletzung an Ereignisempfängern436
Abb. 15–15 Ereignisempfänger mit Frist437
Abb. 15–16 Ereignisempfänger ändern437
Abb. 15–17 Ändern: Frist (LED = Latest End Date)438
15.3 Debug-Report für Batch-Workitems438
15.3.1 Notwendigkeit438
Fehlersuche in Batch- Workitems ist kompliziert.438
15.3.2 Anwendung439
Abb. 15–18 Debug-Report: Parametereingabe beim Starten439
Abb. 15–19 Debug-Report: Anzeigen bzw. Ändern von Containerwerten439
Abb. 15–20 Debug-Report: Breakpunkt in einer Hintergrundmethode440
15.3.3 Quelltext des Reports ZAO_DEBUGWI440
Listing 15–1 Report zum Debuggen eines Batch-Workitems441
15.4 Hintergrundschritte im Status STARTED442
15.4.1 Dump-Analyse442
Abb. 15–21 ST22: ABAP-Laufzeitfehler: Einstiegsbild442
Abb. 15–22 ST22: ABAP-Laufzeitfehler: Liste443
Abb. 15–23 ST22: ABAP-Laufzeitfehler: Langtext zu einem Laufzeitfehler443
Abb. 15–24 Ermitteln des verursachenden Workitems443
Abb. 15–25 Workitem in den ausgewählten Variablen444
15.4.2 Wiederanstarten nach Fehlerkorrektur444
15.5 Nützliche Hilfsprogramme444
15.5.1 Container-Update444
Listing 15–2 Programm zum Ändern des Containers eines Workitems444
15.5.2 SBE fortsetzen mit Simulation der Auswahl445
Listing 15–3 Beenden eines Dialog- Workitems mit Ergebniswert446
15.5.3 Benutzer an Dialog-Workitems ändern446
Listing 15–4 Ersetzen eines alten durch einen neuen Benutzer an einem Workitem447
15.5.4 Ultima Ratio nach 22 Uhr448
Listing 15–5 Programmieren auf geschlossenen Systemen449
Abb. 15–26 Dynamisches Programm erzeugen451
Abb. 15–27 Dynamisch erzeugtes Programm – Syntaxcheck451
Abb. 15–28 Dynamisch erzeugtes Programm liefert Output.452
Listing 15–6 Programm ändern mit dynamischem Programm452
15.6 Up- und Download von Workflow-Mustern452
15.6.1 Problematik452
Vollständiger XML-Download für Workflows fehlt.452
15.6.2 Noch kein SAPlink-Plug-in für Workflows453
Abb. 15–29 SAPlink-Seite im SAP Community Network453
15.6.3 Up- und Download von Klassen im XML-Format454
XML-Upload und Download für Klassen454
15.6.4 Up- und Download von Workflow-Mustern als XML454
Abb. 15–30 Ausschnitt aus einer XML-Datei für ein Workflow-Muster455
15.7 Workflow-Transporte456
Abb. 15–31 Fehler beim Workflow-Transport456
16 Workflow-Administration457
16.1 Aufgabe und Festlegung der Administratoren457
16.1.1 Allgemeine Aufgaben des Workflow-Administrators457
16.1.2 Customizing verifizieren458
Abb. 16–1 Workflow-Customizing458
16.1.3 Workflow-Administrator global einstellen459
Abb. 16–2 Globalen Workflow- Administrator pflegen459
16.1.4 Workflow-Administrator pro Workflow-Definition459
16.2 Batchjobs konfigurieren und einplanen460
Abb. 16–3 Workflow-Administrator pro Workflow pflegen460
16.2.1 Terminüberwachung460
Abb. 16–4 Hintergrundjob für Terminüberwachung konfigurieren und einplanen460
16.2.2 Workitem-Fehlerüberwachung461
Abb. 16–5 Hintergrundjob zum Anstarten fehlerhafter Workitems konfigurieren461
16.2.3 Bedingungsauswertung461
16.3 E-Mail-Notification für SAP-Gelegenheitsbenutzer462
16.3.1 Pflege der E-Mail-Adresse für das Weiterleiten462
Abb. 16–6 E-Mail-Adresse zum Weiterleiten einstellen462
16.3.2 Pflege der persönlichen E-Mail-Adresse in den Benutzerdaten462
16.3.3 Erzeugen von E-Mails zu neuen Workitems463
Abb. 16–7 Pflege der E-Mail-Adresse in den Benutzerstammdaten463
RSWUWFML für E-Mail-Notification463
16.3.4 Versenden der Internetmails über SAPconnect465
Mailversand mit SAPconnect465
Abb. 16–8 SAPconnect- Administration (TA SCOT)465
Abb. 16–9 Sendevorgänge SAPconnect (TA SOST)466
16.4 Reaktion auf Fehlermeldungen des Laufzeitsystems466
Abb. 16–10 Mail an den Administrator über einen Workflow-Fehler466
Abb. 16–11 Workflow-Protokoll zur Fehlermeldung467
16.5 Typische Workflow-Fehler und ihre Behebung467
16.5.1 Workitems ohne Bearbeiter467
16.5.2 Workitems mit Terminüberschreitungen468
16.5.3 Diagnose fehlerhafter Workitems468
Abb. 16–12 Diagnose fehlerhafter Workitems468
Abb. 16–13 Fehlermeldung zu einer Zeile des Diagnosereports469
16.5.4 Laufzeitpuffer synchronisieren469
WICHTIG: TA SWU_OBUF469
16.6 Restarten unterbrochener Workflows470
16.6.1 Restart fehlerhafter Workflows470
16.6.2 Restart nach Systemabsturz oder Schrittdump470
Abb. 16–14 Workflows fortsetzen nach Systemabsturz/ Kurzdump, Selektionsbild470
16.7 Analysen471
Abb. 16–15 Workflows fortsetzen nach Systemabsturz/ Kurzdump, Ergebnis471
16.7.1 Workitems pro Aufgabe471
Abb. 16–16 Aufgabenanalyse471
16.7.2 Workitems nach Bearbeitungsdauer472
Sicht Schwellenwerte472
Abb. 16–17 Bearbeitungsdauern von Aufgaben, Sicht Schwellenwerte472
Sicht Mittelwerte472
16.7.3 Workload-Analyse473
Abb. 16–18 Bearbeitungsdauern von Aufgaben, Sicht Mittelwerte473
Abb. 16–19 Workload-Analyse für einen Bearbeiter473
Workload für vergangene Arbeitsbelastung474
Abb. 16–20 Workload-Analyse: Arbeitsbelastung in der Vergangenheit (Übersicht über alle Aufgaben)474
Workload für zukünftige Arbeitsbelastung474
Abb. 16–21 Workload-Analyse: Arbeitsbelastung in der Zukunft474
16.8 Reorganisation der Laufzeitdaten475
16.8.1 Allgemeines475
Workitems werden selten archiviert.475
16.8.2 Auslastung der Workflow-Laufzeittabellen475
Tab. 16–1 Speicherplatzintensive Laufzeittabellen des Workflow-Systems475
XML ist extrem speicherintensiv.475
16.8.3 Gezieltes Löschen von einzelnen Workflows476
16.8.4 Löschen von Workflows im Batch476
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_30478
Abb. 16–24 Variantenvariablen V_100_30479
Abb. 16–25 Berechnungsalgorithmus wählen479
Abb. 16–26 Eingabe der Offsetwerte für SY-DATUM480
16.8.5 Archivieren von Workflows im Batch480
Abb. 16–27 Einstiegsbild der Transaktion SWW_SARA480
Abb. 16–28 Variante für Archivierungslauf festlegen481
Abb. 16–29 Jobübersicht WORKITEM- Archivierung482
16.9 Transportieren von Workflows483
A Die alte Welt – BOR-Objekte im Workflow485
A.1 Historisches485
A.2 Anlegen eines neuen Objekttyps486
Abb. A–1 Grunddaten des neuen Objekttyps486
A.2.1 Die Objektliste mit ihren Bestandteilen487
Abb. A–2 Liste des Objekttyps ZVERTRAG mit seinen Bestandteilen488
Tab. A–1 Liste des Objekttyps ZVERTRAG mit seinen Bestandteilen488
A.2.2 Programm des Objekttyps als Subroutinenpool489
Listing A–1 Generierter Programmkopf des BOR-OT ZVERTRAG489
A.2.3 Interface490
Abb. A–3 Interface IFSAP mit SubInterface IFEXIST und IFDISPL490
Listing A–2 Methode EXISTENCECHECK des BOR-OT ZVERTRAG491
A.2.4 Freigeben von Objekttyp und Komponenten491
A.3 Attribute492
A.3.1 Datenbankattribute mit GET_TABLE_PROPERTY492
Datenbankattribute entsprechen Tabellenspalten.492
Abb. A–4 Anlegen des Datenbankattributes STATUS492
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 Tabelleneigenschaften493
A.3.2 Objektreferenzen und Makros für den Objektzugriff495
Abb. A–6 Zweites DB-Attribut im Status modelliert495
Tab. A–2 Struktur für Laufzeitobjektreferenz SWC_OBJECT495
Makros für Objektzugriff496
SELF-Referenz497
Persistente Objektreferenzen497
Tab. A–3 Struktur für persistente Objektreferenz SWOTOBJID497
A.3.3 Implementierung und Aufruf virtueller Attribute497
Virtuelle Attribute enthalten Code.497
Listing A–4 Coderahmen für virtuelles Attribut498
Virtuelles Defaultattribut498
Abb. A–7 Virtuelles Defaultattribut498
Listing A–5 Generierte Defaultvariable im Programmcode499
Listing A–6 Defaultattribut mit SELF-Zugriff499
Liste von Vertragsreferenzen als virtuelles Attribut499
Abb. A–8 Virtuelles Attribut liefert Liste von Objektreferenzen.499
Listing A–7 Generierte Variable für mehrzeiliges, virtuelles Attribut500
Listing A–8 Generierter Code des virtuellen Attributes VERTRAGSLISTEPERSON500
Listing A–9 Makro GET_PROPERTY500
Listing A–10 Programmcode für mehrzeiliges, virtuelles Attribut501
Abb. A–9 Virtuelles Attribut VertragsListePerson501
A.4 Implementierung und Aufruf von Methoden502
Anwendungsfunktionen sind nur über Methoden aufrufbar.502
Abb. A–10 Definition einer neuen Methode502
Tab. A–4 Klassifizierung unterschiedlicher Methodentypen504
Listing A–11 Coderahmen für Methoden504
Generierung einer Methode504
A.4.1 Synchrone Anzeigemethode als Defaultmethode505
Listing A–12 Anzeigemethode für Verträge505
Abb. A–11 Grunddaten/Defaults des OT Z_VERTRAG506
A.4.2 Synchrone Dialogmethode mit Ergebnisparameter506
Festwerte am Ergebnisparameter steuern den Workflow.506
Abb. A–12 Methode GENEHMIGEN mit Rückgabewert STATUS507
Abb. A–13 Domänenfestwerte des Ergebnistyps ZVERTRAG-STATUS507
Listing A–13 Genehmigungsmethode mit Ergebnisparameter508
Abb. A–14 EXIT_CANCELLED löst Ausnahme 8017 aus508
A.4.3 Synchrone Hintergrundmethode mit Parametern509
Abb. A–15 Definition eines mehrzeiligen Importparameters509
Abb. A–16 Hintergrundmethode mit Import- und Exportparametern509
Hintergrundmethode mit Import- und Exportparametern509
Listing A–14 Methode mit mehreren Parametern510
A.4.4 Asynchrone Dialogmethode ohne alles510
Asynchrone Methoden müssen Endeereignisse haben.511
A.4.5 Methoden mit Ausnahmen511
Abb. A–17 Definition einer Ausnahme an einer Methode511
Listing A–15 Ausnahmen auslösen mit Makro EXIT_RETURN512
Abb. A–18 Pop-up zur Anzeige einer aufgetretenen Ausnahme im Methodentest512
Tab. A–5 Vordefinierte Ausnahmen512
Ausnahmen und Exportparameter512
A.4.6 Überdefinieren von Methoden513
A.5 Ereignisse513
Abb. A–19 Anlegen eines Ereignisses am Objekttyp513
A.6 Prüfen und Testen einer Objektimplementierung514
Abb. A–20 Testen eines Objekttyps515
Abb. A–21 Eingabe der Importparameter beim Test einer Dialogmethode515
Abb. A–22 Testergebnisse der Methode RP_PRO_INTERVALL516
A.7 Vererbung und Delegation516
A.7.1 Vererbung und Delegation im BOR516
Abb. A–23 Von ISUSWITCHD abgeleiteter Sub-OT ZVMKSWITCH518
Abb. A–24 Delegation von ISUSWITCHD nach ZVMKSWITCH518
A.7.2 Vererbung und keine Delegation für ABAP-Klassen519
A.7.3 Ereignisbehandlung bei Vererbung und Delegation519
A.8 Standardisierte Schnittstellen – Container520
A.8.1 Container in Programmen – Include 521
Containerstruktur SWCONT521
Tab. A–6 Struktur der internen Containertabelle521
Makros für Containerzugriff anlegen und freigeben521
Anlegen und Löschen von Elementen521
Setzen von Werten522
Setzen von Tabellen522
Lesen von Werten522
Lesen von Tabellen522
Listing A–16 Arbeiten mit BOR-Containern523
A.8.2 Persistente Instanzen von Containern525
Abb. A–25 Output des Programms ZAO_BOR_CONTAINER525
A.8.3 Container im Workflow526
A.9 Spezielle Objekttypen527
Tab. A–7 Spezielle Objekttypen527
Literatur529
Ginger Gatling et al. Workflow Management mit SAP (2. Auflage) Galileo Press, Bonn, 2010529
Ulrich Mende Workflow und Archive-Link mit SAP dpunkt.verlag, Heidelberg, 2004529
Ilja-Daniel Werner Workflow-Entwicklung mit ABAP Galileo Press, Bonn, 2011529
Horst Keller, Sascha Krüger ABAP Objects (3. Auflage) Galileo Press, Bonn, 2006529
Inhalt des Downloadbereiches531
Abkürzungsverzeichnis535
Index537

Weitere E-Books zum Thema: Programmiersprachen - Softwareentwicklung

Apps effektiv managen und vermarkten

E-Book Apps effektiv managen und vermarkten
Die eigene App erfolgreich veröffentlichen: Von der Konzeption bis zur Vermarktung Format: PDF

Lernen Sie Ihre App effektiv, strukturiert und begeisternd weltweit zu vermarkten. In diesem praxisorientierten Buch erhalten Sie einen prägnanten Überblick von der Idee und Konzeption einer App,…

Prozessübergreifendes Projektmanagement

E-Book Prozessübergreifendes Projektmanagement
Grundlagen erfolgreicher Projekte Format: PDF

Projektmanagement ist in Zeiten von enger werdenden Projektbudgets und Projektzeitplänen eine zunehmende Herausforderung geworden. Die Autoren geben wertvolle Hilfestellungen in Krisensituationen und…

Python 3 - Intensivkurs

E-Book Python 3 - Intensivkurs
Projekte erfolgreich realisieren Format: PDF

Python ist eine vollwertige Programmiersprache, mit der sich auch größere Anwendungen entwickeln lassen. In den letzten Jahren hat sie an Beliebtheit gewonnen, und mit Python 3 steht eine stark…

Management von IT-Projekten

E-Book Management von IT-Projekten
Von der Planung zur Realisierung Format: PDF

Kenntnisse des Projektmanagements und seine Anwendungsmöglichkeiten sind für IT-Manager und IT-Entwickler unentbehrlich. In diesem Buch werden die wichtigsten Verfahren und Methoden für das…

Informatik

E-Book Informatik
Anwendungsorientierte Einführung in die allgemeine Wirtschaftsinformatik Format: PDF

Das einführende Informatik-Lehrbuch wendet sich nicht nur an Informatik-Studenten, sondern sogar in erster Linie an Studierende und Praktiker solcher Disziplinen, in denen Informatik zur…

Prozessübergreifendes Projektmanagement

E-Book Prozessübergreifendes Projektmanagement
Grundlagen erfolgreicher Projekte Format: PDF

Projektmanagement ist in Zeiten von enger werdenden Projektbudgets und Projektzeitplänen eine zunehmende Herausforderung geworden. Die Autoren geben wertvolle Hilfestellungen in Krisensituationen und…

Profikurs ABAP®

E-Book Profikurs ABAP®
Konkrete, praxisorientierte Lösungen - Tipps, Tricks und jede Menge Erfahrung Format: PDF

Professionelle und sichere Anwendungsentwicklung unter SAP R/3® ist kein Zufall, sondern eine Sache der Erfahrung. Das Resultat: Tricks und Kniffe, von denen auch Sie als ABAP® Professional…

Wege aus der Softwarekrise

E-Book Wege aus der Softwarekrise
Verbesserungen bei der Softwareentwicklung Format: PDF

Seit Jahrzehnten steckt die Softwareentwicklung in der Krise. Laut aktuellen Statistiken gehen immer noch mehr als die Hälfte aller in der IT-Produktion eingesetzten Mittel verloren. Angekündigte…

Weitere Zeitschriften

AUTOCAD & Inventor Magazin

AUTOCAD & Inventor Magazin

FÜHREND - Das AUTOCAD & Inventor Magazin berichtet seinen Lesern seit 30 Jahren ausführlich über die Lösungsvielfalt der SoftwareLösungen des Herstellers Autodesk. Die Produkte gehören zu ...

Berufsstart Bewerbung

Berufsstart Bewerbung

»Berufsstart Bewerbung« erscheint jährlich zum Wintersemester im November mit einer Auflage von 50.000 Exemplaren und ermöglicht Unternehmen sich bei Studenten und Absolventen mit einer ...

BMW Magazin

BMW Magazin

Unter dem Motto „DRIVEN" steht das BMW Magazin für Antrieb, Leidenschaft und Energie − und die Haltung, im Leben niemals stehen zu bleiben.Das Kundenmagazin der BMW AG inszeniert die neuesten ...

DER PRAKTIKER

DER PRAKTIKER

Technische Fachzeitschrift aus der Praxis für die Praxis in allen Bereichen des Handwerks und der Industrie. “der praktiker“ ist die Fachzeitschrift für alle Bereiche der fügetechnischen ...

Deutsche Hockey Zeitung

Deutsche Hockey Zeitung

Informiert über das internationale, nationale und internationale Hockey. Die Deutsche Hockeyzeitung ist Ihr kompetenter Partner für Ihr Wirken im Hockeymarkt. Sie ist die einzige ...

Die Versicherungspraxis

Die Versicherungspraxis

Behandlung versicherungsrelevanter Themen. Erfahren Sie mehr über den DVS. Der DVS Deutscher Versicherungs-Schutzverband e.V, Bonn, ist der Interessenvertreter der versicherungsnehmenden Wirtschaft. ...

ea evangelische aspekte

ea evangelische aspekte

evangelische Beiträge zum Leben in Kirche und Gesellschaft Die Evangelische Akademikerschaft in Deutschland ist Herausgeberin der Zeitschrift evangelische aspekte Sie erscheint viermal im Jahr. In ...