dummies
 

Suchen und Finden

Titel

Autor/Verlag

Inhaltsverzeichnis

Nur ebooks mit Firmenlizenz anzeigen:

 

Moderne Workflow-Programmierung mit ABAP® Objects - Handbuch für Entwickler

Ulrich Mende

 

Verlag dpunkt, 2012

ISBN 9783864912139 , 544 Seiten

Format PDF, OL

Kopierschutz Wasserzeichen

Geräte

51,99 EUR

Für Firmen: Nutzung über Internet und Intranet (ab 2 Exemplaren) freigegeben

Derzeit können über den Shop maximal 500 Exemplare bestellt werden. Benötigen Sie mehr Exemplare, nehmen Sie bitte Kontakt mit uns auf.


 

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