Reinhold Plota, Waldemar Fix SAP Der technische Einstieg Zusatzkapitel»Prozessketten«
Zusatzkapitel Prozessketten anlegen Prozessketten stellen eine andere Möglichkeit der Hintergrundverarbeitung dar. SAP hat Prozessketten vorrangig für das im SAP NetWeaver integrierte SAP Business Warehouse (BW) vorgesehen, es lassen sich darüber aber auch herkömmliche ABAP-Verarbeitungsprogramme starten. Prozessketten werden über die Transaktion RSPC verwaltet. In älteren Versionen von SAP NetWeaver ist dies eine eigenständige Transaktion. In SAP Net- Weaver 7.5 ist diese Transaktion in die Transaktion RSA1 (Data Warehouse Workbench) integriert worden. Eine Prozesskette wird nun auch als ein BW- Objekt betrachtet. Sie können zwar die Transaktion RSPC noch über das Kommandofeld aufrufen, allerdings wird dann in die Transaktion RSA1 verzweigt (siehe Abbildung 1). Abbildung 1 Transaktion RSPC in Transaktion RSA1 in SAP NetWeaver 7.5 SAP definiert einen Prozess als»einen Vorgang innerhalb oder außerhalb eines SAP-Systems mit definiertem Anfang und Ende«(https://help.sap. com/saphelp_nw73ehp1/helpdata/de/7b/d4313b38bea774e10000000a114084/ content.htm?frameset=/de/67/13843b74f7be0fe10000000a114084/frameset. Prozess 1
htm¤t_toc=/de/c5/f1c99abdd3fb4aa7febe103b5d77e5/plain.htm&node_ id=5). Ein ABAP-Programm wird in diesem Sinne auch als ein Prozess verstanden. Prozesse werden unterschieden nach Prozessarten Startprozess Anwendungsprozess Sammelprozess Ein Startprozess definiert den Start einer Prozesskette. Der Startprozess enthält keine weitere Funktionalität, sondern er ist lediglich als ein Auslöser zu betrachten. Er darf in einer Kette nur einmal vorkommen und darf keinen Vorgänger-Prozess haben. Anwendungsprozesse enthalten Arbeitsprozesse, die automatisiert ablaufen sollen. Dies können ABAP-Programme sein, müssen es aber nicht. Tabelle 1 enthält eine Übersicht, welche Prozesstypen SAP unterscheidet. Sammelprozesse fassen mehrere Kettenstränge zu einem Kettenstrang zusammen. Die einzelnen Prozesse sind durch Events (Ereignisse) miteinander verbunden. Für einen Prozess gibt es einen Vorgänger- und einen Nachfolgerprozess, sofern er kein Startprozess und nicht der letzte Prozess einer Kette ist. Ein Prozess enthält folgende charakterisierende Merkmale: Prozessmerkmale Prozesstyp Der Prozesstyp beschreibt die Art des Prozesses. Darüber wird die Aufgabe eines Prozesses bestimmt. Prozesstypen werden in der View RSPROCESSTYPES verwaltet. Prozessvariante Der Name einer Prozessvariante ist gleichzeitig der Name des Prozesses in der Prozesskette. Dieser Typ von Variante ist nicht gleichzusetzen mit dem der Variante eines Selektionsbildes. Über eine Prozessvariante wird ein Prozess konfiguriert. Erst zusammen mit dem Prozesstyp ist eine Prozessvariante eindeutig. Prozessinstanz Eine Prozessinstanz bestimmt die Ausprägung eines Prozesses. Sie enthält u. a. Informationen, die einem Folgeprozess übergeben werden können. Die Prozessinstanz wird von der Prozesskettenverwaltung gesichert. Protokolle werden unter der Prozessinstanz angelegt. Ein Prozess ermittelt die Prozessinstanz zur Laufzeit. 2
Prozesskategorie Allgemeine Services Prozesstyp Startprozess Interrupt-Prozess AND (Letzter) OR (Jeder) EXOR (Erster) ABAP-Programm Betriebssystemkommando Prozesskette lokal Prozesskette remote Workflow (auch remote) Entscheidung zwischen mehreren Alternativen Ist vorheriger Lauf der Kette noch aktiv? Starte Job in SAP Business Objects Data Services Ladeprozess und Nachverarbeitung InfoPackage ausführen PSA lesen und Datenziel verbuchen Hierarchie sichern (3.x) DataStore Objektdaten fortschreiben (Weiterverbuchung) Datenexport in Fremdsysteme (obsolet) Überlappende Requests aus dem InfoCube löschen Datentransferprozess Request eines InfoPackages (RDA/Push) schließen Quality-Status/Datenfreigabe setzen Delta-Merge auslösen Real-time Data Acquisition (RDA) Ladeprozess stoppen Event Datenänderung auslösen (für Broadcaster) Tabelle 1 Mögliche Prozesstypen zur Bestimmung eines Prozesses in einer Prozesskette 3
Prozesskategorie Datenziel Administration Prozesstyp Index löschen Index aufbauen Datenbankstatistik aufbauen Initiales Füllen neuer Aggregate Hochrollen gefüllter Aggregate/BWA-Indizes Initiales Aktivieren und Füllen von SAP HANA/BWA- Indizes Komprimieren des InfoCubes DataStore Objektdaten aktivieren Vollständiges Löschen des Datenzielinhalts Daten aus einem InfoProvider archivieren Report Agent Exception Reporting Drucken im Hintergrund Vorberechnung von Web Templates Vorberechnung von Wertemengen Sonstige BW-Prozesse Attributsänderungslauf Anpassen zeitabhängiger Aggregate Löschen von Requests aus dem PSA Löschen von Requests aus dem Change Log Löschen von Requests aus dem schreiboptimierten DSO Planungssequenz ausführen Real-time InfoCube in Planmodus umschalten Real-time InfoCube in Lademodus umschalten Stammdatenattribute und -texte reorganisieren Analyseprozesse ausführen Explorer-Eigenschaften von BW-Objekten aktualisieren Tabelle 1 Mögliche Prozesstypen zur Bestimmung eines Prozesses in einer Prozesskette (Forts.) 4
Prozesskategorie Sonstiges Prozesstyp Job in SAP CPS Ereignis in SAP CPS SAP IQ Partition Monitor Tabelle 1 Mögliche Prozesstypen zur Bestimmung eines Prozesses in einer Prozesskette (Forts.) Die Begriffe InfoPackage, DataStore Object, Datentransfer und InfoCube in Tabelle 1 stammen aus der Terminologie von SAP Business Warehouse. Die Abkürzungen in der Tabelle bedeuten folgendes: DSO: DataStore Object PSA: Persistent Staging Area RDA: Real-time Data Acquisition CPS: Central Process Scheduling SAP IQ: spaltenorientiertes relationales Datenbank-Managementsystem Aus den Bezeichnungen der einzelnen Prozesstypen können Sie die enge Verbindung zwischen Prozessketten und SAP Business Warehouse erkennen. Als Einführung in dieses Thema empfehlen wir das Buch von Klostermann et al: Praxishandbuch SAP BW. SAP PRESS Bonn 2015. Prozessketten können in anderen Prozessketten integriert und darüber gestartet werden. Die Prozesskette, die andere Prozesskette integriert, wird als Metakette bezeichnet. Wir möchten ihnen anhand eines einfachen Beispiels zeigen, wie Prozessketten angelegt und eingeplant werden. Dazu nutzen wir für die Anwendungsprozesse einfache ABAP-Programme. Sie können dieses Beispiel nachvollziehen, indem Sie eigene ABAP-Programme verwenden. Rufen Sie die Transaktion RSPC auf. Wenn Sie mit einer älteren Version von SAP Net- Weaver arbeiten, so wird die Transaktion direkt gestartet und ist noch nicht in der Data Warehouse Workbench (Transaktion RSA1) eingebettet. Klicken Sie mit der rechten Maustaste im Einstiegsbild auf den Knoten Nicht Zugeordnete Knoten. Es erscheint ein Kontextmenü. Klicken Sie dort auf den Punkt Prozesskette anlegen (siehe Abbildung 2). In älteren Versionen von SAP NetWeaver finden Sie noch das Icon für die Neuanlage. Metakette Prozesskettenbeispiel Prozesskette anlegen 5
Abbildung 2 Transaktion RSPC: Prozesskette anlegen Im folgenden Dialog geben Sie der Prozesskette einen Namen und tragen eine Kurzbeschreibung ein (siehe Abbildung 3). Abbildung 3 Transaktion RSPC: Namen vergeben Bestätigen Sie Ihre Eingaben durch das Klicken auf. Gleich danach erscheint ein weiterer Dialog, in dem Sie einen Startprozess einfügen können. Dazu klicken Sie auf das weiße Blatt, rechts neben dem Eingabefeld (siehe Abbildung 4). Abbildung 4 Transaktion RSPC: Startprozess einfügen 6
Es erscheint nochmals ein Dialog, in dem Sie den Variantennamen des Startprozesses eintragen (Abbildung 5). Abbildung 5 RSPC- dem Startprozess einen Namen vergeben Bestätigen Sie Ihre Eingaben in der gewohnten Weise. Es erscheint das Bild zur Variantenpflege (siehe Abbildung 6). Bei einem Startprozess müssen Sie dem System lediglich die Startbedingung mitteilen. Dies sollten Sie aber erst machen, wenn die Prozesskette fertig ist. Für den Moment sichern Sie den Startprozess und verlassen dieses Bild mit (F3) oder. Variantenpflege Abbildung 6 Transaktion RSPC: Variantenpflege für den Startprozess Es erscheint wieder der Dialog aus Abbildung 4, allerdings nun mit dem Namen und der Beschreibung des Startprozesses. Bestätigen Sie den neuen Startprozess mit. Die neue Prozesskette mit ihrem Startprozess erscheint als eine im System vorhandene Prozesskette in Transaktion RSPC (siehe Abbildung 7). Machen Sie einen Doppelklick auf die neue Prozesskette (oder klicken Sie auf ; siehe Abbildung 8). Auf der rechten Seite erscheint der Startprozess in einer grafischen Darstellung. Links davon werden bereits die vorhandenen Prozesskategorien mit ihren jeweiligen Prozesstypen angezeigt. 7
Abbildung 7 Transaktion RSPC: Auflistung der neuen Prozesskette Abbildung 8 Transaktion RSPC: Prozesstypen Die Auflistung der Prozesstypen in den einzelnen Prozesskategorien entspricht dem Inhalt der Tabelle 1. Als nächstes fügen Sie einen Prozess ein. Für dieses Beispiel soll ein Anwendungsprozess einem ABAP-Programm Prozess einfügen 8
entsprechen. Dazu machen Sie in Abbildung 8 einen Doppelklick auf den Prozesstyp ABAP-Programm ausführen. Es erscheint wieder ein Dialog zum Einfügen eines ABAP-Programms. Klicken Sie dort zunächst auf das weiße Blatt, um dem neuen Prozess einen Namen zu geben. Es erscheint ein weiterer Dialog wie in Abbildung 5 gezeigt, in der Sie der Prozessvariante einen Namen und eine Kurzbeschreibung geben. Wenn Sie die Eingabe bestätigt haben, erscheint die Pflege für die Prozessvariante für ABAP-Programme. Hier geben Sie den Namen des Programms an, das über diesen Prozess gestartet werden soll. Falls für dieses Programm Varianten für ein Selektionsbild hinterlegt sind, müssen Sie eine von diesen Varianten hier ebenfalls benennen (siehe Abbildung 9). Abbildung 9 Transaktion RSPC: Prozessvariante für ein ABAP-Programm Speichern Sie die Eingaben und kehren Sie mit (F3) oder mit Dialog in Abbildung 10 bestätigen Sie die Einträge. zurück. Im Abbildung 10 Transaktion RSPC: Fertige Prozessvariante für ein ABAP-Programm Beide Prozesse, der Startprozess und der Prozess für ein ABAP-Programm erscheinen nun auf der rechten Seite des Grundbildes (siehe Abbildung 11). 9
Abbildung 11 Transaktion RSPC: Startprozess und Arbeitsprozess ohne Verbindung Was noch fehlt, ist die Verbindung zwischen beiden Prozessen. Klicken Sie mit der rechten Maustaste auf den Startprozess als den Vorgängerprozess zu unserem ersten Anwendungsprozess. Es erscheint ein Kontextmenü. Klicken Sie auf den ersten Punkt Verbinden Mit. Danach wird Ihnen Programmausführung angeboten und wenn Sie dort wiederum darauf klicken, bleibt Ihnen nur noch die Auswahl des ABAP-Programms (Abbildung 12). Prozesse verbinden Abbildung 12 Transaktion RSPC: Startprozess mit Folgeprozess verbinden Wenn Sie auf die angebotene Auswahl geklickt haben, wird die Verbindung zwischen dem Startprozess und dem Folgeprozess grafisch angezeigt (siehe Abbildung 13). 10
Abbildung 13 Transaktion RSPC: Verbindung zwischen zwei Prozessen Machen Sie einen Doppelklick auf den Pfeil, der die Prozesse verbindet. Ihnen wird dann der Event angezeigt, der durch den Startprozess ausgelöst wird und den Folgeprozess aktiviert (siehe Abbildung 14). Abbildung 14 Transaktion RSPC: den Startprozess auslösendes Event 11
Um die Prozesskette etwas umfangreicher zu machen, fügen Sie auf die gleiche Weise ein zweites ABAP-Programm hinzu. Für den zweiten Prozess mit dem ABAP-Programm ist der Prozess mit dem ersten ABAP-Programm der Vorgängerprozess. Um zwischen beiden Prozessen eine Verbindung herzustellen, gehen Sie wieder vom Vorgängerprozess aus. D.h., Sie öffnen beim Prozess mit dem ersten ABAP-Programm mit der rechte Maustaste das Kontextmenü und stellen zu dem zweiten ABAP-Programm, wie oben beschreiben, eine Verbindung her. Wenn Sie sich den Event zur zweiten Verbindung anschauen, dann sehen Sie, dass das gleiche Ereignis ausgelöst wird. Allerdings ist der generierte Parameter zu diesem Ereignis ein anderer, als bei der ersten Verbindung (Abbildung 15). Abbildung 15 Transaktion RSPC: Event zur zweiten Verbindung Speichern Sie Ihre neue Prozesskette. Wir belassen es bei diesen Prozessen. Als letztes fehlt nun noch die Startbedingung dieser Prozesskette. Gestartet wird eine Prozesskette immer über den Startprozess. Daher wird bei diesem Prozess auch die Startbedingung festgelegt. Machen Sie dazu auf dem Startprozess einen Doppelklick. Es wird Ihnen die Variantenpflege dieses Prozesses angezeigt. Im Bereich Einplanungsoptionen ist der Radiobutton Direkte Einplanung aktiviert. Daneben gibt es einen Button mit der etwas irreführenden Bezeichnung Selektion ändern (siehe Abbildung 16). Startbedingung 12
Abbildung 16 Startprozess-Variantenpflege Klicken Sie auf diesen Button und Sie gelangen zu der Auswahl der möglichen Startbedingungen, die wir sie Ihnen bereits in Abschnitt 9.2 zur Definition eines Jobs in Transaktion SM36 gezeigt haben (siehe Abbildung 17). Wählen Sie z. B. Sofort aus. Abbildung 17 Startbedingung für die Prozesskette festlegen Diese Einstellung bleibt solange erhalten, bis Sie sie wieder ändern. Zum Schluss speichern Sie die Prozessvariante zum Startprozess und kehren zur Transaktion RSPC zurück. Dort speichern Sie die gesamte Prozesskette und aktivieren sie über das Icon. Die Prozesskette ist damit aktiviert und eingeplant. Um die Prozesskette auszuführen, klicken Sie in Transaktion RSPC in der anwendungsbezogenen Iconleiste auf das Icon. Wenn die Prozesskette ausgeführt werden soll, werden im Hintergrund Jobs generiert. Nach einem Durchlauf der Prozesskette, werden die einzelnen fehlerfreien Prozesse grün markiert (Abbildung 18). Bei Warnungen wird ein Prozess gelb markiert und bei einem Abbruch rot. Prozesskette aktivieren Job für Prozesskette 13
Abbildung 18 Erfolgreicher Durchlauf einer Prozesskette Wechseln Sie nun zur Transaktion SM37 zur Jobauswahl (siehe Abschnitt 9.2). Als Jobnamen benutzen Sie '*' als Wildcard. Im Feld Benutzername sollte die Benutzerkennung desjenigen eingetragen sein, der die Prozesskette gestartet hat, in diesem Beispiel wären Sie das. Im Bereich Jobstartbedingung wählen Sie den Zeitpunkt aus, an dem Ihre Prozesskette gelaufen ist. Geben Sie bei Tag und Uhrzeit im Zweifel einen Intervall (von/bis) an. Wählen Sie den Bereich dabei aber nicht allzu groß, weil Ihnen sonst unter Umständen zu viele Jobs angezeigt werden. Danach klicken Sie auf den Button. Ihnen werden anschließend gemäß Ihrer getroffenen Auswahl die passenden Jobs angezeigt. In unserem Beispiel beginnen die Jobnamen der Beispielprozesskette mit BI_PROCESS_* (siehe Abbildung 19). Die Prozesskette besteht mit dem Startprozess aus drei einzelnen Prozessen. Jeder Prozess wurde über einen Job ausgeführt. Der Startprozess gehört zu dem Job BI_PROCESS_TRIGGER. Wenn Sie hierzu das Joblog aufrufen, so finden Sie dies dort dokumentiert (Abbildung 20). 14
Abbildung 19 Jobs zur beispielhaften Prozesskette Abbildung 20 Joblog zum Startprozess Die anderen beiden Jobs mit der Bezeichnung BI_PROCESS_ABAP haben jeweils eines der ABAP-Programme gestartet. Rufen Sie beispielhaft bei einem dieser beiden Jobs das Joblog auf. Dort sehen Sie, welches Programm 15
gestartet wurde und das der Auslöser für den Start der Event RSPROCESS gewesen ist (Abbildung 21). Abbildung 21 Joblog zum Start eines Prozesses mit einem ABAP-Programm Sie können dies auch noch auf eine andere Weise einsehen. Machen Sie auf den Job einen Doppelklick. Sie gelangen danach zur Jobdefinition in Transaktion SM36 (siehe Abbildung 22). Abbildung 22 Transaktion SM36: Jobdefinition des Jobs BI_PROCESS_ABAP Der Starttermin wird Ihnen im Bereich Starttermin angezeigt. Sie können dies auch sehen, wenn Sie auf den Button klicken. Ihnen wird danach die Startbedingung dieses Jobs angezeigt. Sie sehen, dass die Startbedingung von dem Eintreten des Ereignisses RSPROCESS abhängig ist 16
(siehe Abbildung 23). Dieses Ereignis wird von dem Vorgängerprozess ausgelöst. Abbildung 23 Startbedingung für den Job BI_PROCESS_ABAP In Transaktion RSPCM haben Sie die Möglichkeit, Prozessketten zu überwachen und sich deren Status anzuschauen. Der Status einer Prozesskette wird farblich angezeigt. Die farblichen Symbole bedeuten folgendes (siehe auch Abbildung 24): RSPCM die Kette wurde erfolgreich abgeschlossen die Kette ist aktiv die Kette wurde fehlerhaft beendet oder ist abgebrochen unbekannter Status, z. B. wenn die Kette noch nicht angelaufen ist Abbildung 24 Transaktion RSPCM: Überwachung von Prozessketten Sie können zu einer Prozesskette genauere Informationen einholen, indem Sie auf die Prozesskette einen Doppelklick machen. Sie verzweigen dann in die Transaktion RSPC, wo der einzelne Status zum jeweiligen Prozess farblich markiert ist (siehe Abbildung 25). 17
Abbildung 25 Transaktion RSPC: Protokollierung der Prozesskette Auf der linken Seite sehen Sie, wann welches Ereignis protokolliert wurde. Wenn Sie mit der rechten Maustaste auf einen Prozess klicken, können Sie mit der Menüoption Meldungen anzeigen vorhandene Meldungen zu dem Prozess anschauen. Es erscheint ein Fenster zum Anzeigen der Meldungen. Im Tab Batch sehen Sie wieder das Job-Log zu dem Prozess, wie Sie ihn auch über die Transaktion SM37 einsehen können (siehe Abbildung 26). Prozessmeldungen Abbildung 26 Protokollfenster zum selektierten Prozess Klicken Sie unten in Abbildung 26 auf den Button. Sie wechseln dann in die Transaktion SM37, wobei der generierte Job zu dem Prozess vorselektiert ist (siehe Abbildung 27). 18
Sammelprozesse anlegen Abbildung 27 Anzeige des generierten Jobs in Transaktion SM37 Hier haben Sie nun die Möglichkeit, wie oben bereits gezeigt, den Job genauer auszuwerten. Sammelprozesse anlegen Ein Sammelprozess fasst mehrere Kettenstränge zu einem Kettenstrang zusammen. Beim Anlegen eines Sammelprozesses müssen Sie lediglich eine Kurzbeschreibung eingeben. Die Prozessvariante mit dem Namen generiert das System automatisch. Es gibt drei Typen von Sammelprozessen (1 in Abbildung 28): Sammelprozess AND (Letzter) Alle Vorgängerprozesse, die mit dem Sammelprozess verbunden sind, müssen beendet sein, bevor die Kette fortgeführt wird. OR (Jeder) Die Prozesskette wird jedesmal vom Sammelprozess aus fortgeführt, wenn jeweils ein Vorgängerprozess den entsprechenden Event ausgelöst hat. XOR (Erster) Die Prozesskette wird komplett fortgeführt, wenn der erste Event von einem der Vorgängerprozesse erfolgreich ausgelöst wurde. Alle Vorgängerprozesse zu einem Sammelprozess lösen den gleichen Event aus. Abbildung 28 zeigt ein einfaches Beispiel für einen Sammelprozess mit einer AND-Verknüpfung. So eine Verknüpfung könnte sich z. B. bei einer Verbuchung anbieten. Die Verbuchung (Update auf der Datenbank) soll erst dann starten, wenn alle notwendigen vorherigen Prozesse beendet sind. 19
Sammelprozesse anlegen Abbildung 28 Transaktion RSPC: Beispiel für einen Sammelprozess In diesem Beispiel startet der Startprozess zwei Anwendungsprozesse, abhängig davon, wann im Applikationsserver entsprechende Workprozesse frei sind. Beide Anwendungsprozesse sind mit dem Sammelprozess für eine AND-Verknüpfung verbunden. Dieser Sammelprozess wartet solange, bis beide Vorgängerprozesse erfolgreich den Event für den Sammelprozess ausgelöst haben. Erst dann löst der Sammelprozess selbst den Event für den letzten Anwendungsprozess aus. Prozessketten werden in der Praxis häufig angewendet. Nicht selten sind sie sehr komplex und oftmals reicht für deren grafische Darstellung der Platz auf dem Monitor nicht aus. 20