SAP Batch Jobs – diese Details werden dich beeindrucken.

Wenn man es auf den Punkt bringt, sind Batch Jobs in SAP einfach ABAP-Programme, die im Hintergrund ausgeführt werden. Über die Jahre habe ich die Möglichkeiten der Batch Jobs  zu schätzen gelernt, da man mit ihnen einfach und effektiv Prozesse automatisieren, Performance-Engpässe umgehen und das System monitoren kann. Im Folgendem einige Anwendungsbeispiele für Batchjobs:

# Kundenaufträge einmal am Tag per Job beliefern

# Periodenverschieber automatisch ausführen

# Fehlerhafte IDocs erneut verbuchen

# Fehlerhafte Stammdaten prüfen und Mail an eine Verteilerliste senden

# Umfangreiche SE16N-Selektionen im Hintergrund laufen lassen, damit man nicht in den Timeout gerät

 

A. Wie legt man einen SAP Batch Job an

A.1 Beispielszenario

In unserem Beispiel sollen Status des Transportbelegs vom Spediteur per IDocs aktualisiert werden. Zu diesem Zwecke sendet der Spediteur SHPMNT-IDocs, die das Transportende Datum des Transportbelegs setzen. Doch durch Sperrsituation im Transportbeleg passiert es immer wieder, dass die IDocs nicht verarbeitet werden können und hängen bleiben. Um die fehlerhaften IDocs doch noch zu verbuchen, sollen alle 2 Stunden diese IDocs nochmal verbucht werden. Um diese Anforderung zu erfüllen, werden wir ein Batch Job aufsetzen.

 

A.2 SAP Batch Job Grundlagen

Um in SAP einen Batch Job aufzusetzen brauchst du im Grunde nur folgende 3 Zutaten:

#1 Du musst die Berechtigung haben um Jobs anzulegen

#2 Du musst das Programm kennen, für das ein Batch Job laufen soll

#3 Du musst zum Programm eine Selektionsvariante anlegen, mit der das Programm im Batch laufen soll.

Für unser Beispiel verwenden wir das Programm RBDMANIN (Verbuchen fehlerhafter IDocs) mit der Selektionsvariante „SHPMNT ERR„. Um die Selektionsvariante anzulegen, musst du das Programm per SE38 ausführen und die Selektiosmaske wie angefordert ausfüllen und schließlich die Selektion als Variante sichern:

* Wichtig: Die Angaben für Uhrzeitsintervall, logische Nachrichtentyp und „Dunkle abspielen“ kannst du als Fixwert eingeben. Hingegen musst du das Intervall für das Erstellungsdatum dynamisch angeben, d.h. hier muss man immer das Datum „Gestern“ bis „Heute“ angegeben werden – wie diese Felder dynamisch belegt werden, hatte ich im folgendem Beitrag beschrieben: Das SAP-Selektionsbild – 19 Wege das Datum dynamisch zu selektieren

 

A.3 SAP Batch Job anlegen in 4 einfachen Schritten

So … nachdem wir das Programm bestimmt und die Selektionsvariante angelegt haben, können wir den Batch Job anlegen. Dabei wollen wir erreichen, dass das Programm mit der Selektionsvariante alle 2 Stunden ausgeführt, um fehlerhafte SHPMNT-IDocs erneut zu verarbeiten.

 

#1 Ruf die Transaktion SM36 auf und gib einen entsprechenden Jobnamen an – in unserem Beispiel: SHPMNT ERR – und klicke auf den Button Startbedingung

 

#2 Im folgenden Pop-Up-Fenster klickst du dich folgendermaßen durch

## Button „Sofort“

## Button „Periodenwerte“

## auf „Andere Periodenwerte“

## gib in das Feld „Stunde(n)“ eine 2 ein

## Abschließend sicherst du alle Pop-Up-Fenster einzeln nacheinander

 

#3 Im nächsten Schritt müssen wir angeben, was der Job tun soll: Hier musst du auf den Button „Steps“ klicken und im Pop-Up-Fenster die dargestellten Eingaben machen und das Fenstern sichern – damit haben wir den Step für den Job definiert, der in der Stepübersicht zu sehen ist:

 

 

#4 Zum Schluss musst du jetzt noch per F3 zurück zum Übersichtsbild der Jobdefinition springen und diese Sichern – damit ist der Batch Job angelegt und beginnt in regelmäßigen Abständen zu laufen.

 

B. Was du sonst noch über SAP Batch Jobs wissen solltest

 

B.1 Mehrere Steps zu einem Job

Im oberen Beispiel haben wir zum Job nur einen Step (Programm) definiert. Hier ist es natürlich möglich in der mehr Steps zu definieren, die in einem Joblauf nacheinander abgearbeitet werden.

 

B.2 Job Monitor – SM37

Eigentlich ist die SM37 die zentrale Jobtransaktion. Hier kannst du die Jobs überwachen, die Laufzeiten ermitteln und Job-Logs lesen. Mit der SM37 kannst du die Jobs nach unterschiedlichen Kriterien selektieren. Die wichtigste Option ist die Selektion nach dem Programmnamen, da man sich vielfach an den Jobnamen nicht mehr erinnert, aber das Programm ist häufig bekannt.

 

B.3 User – Einplaner vs Ausführender

Beim Thema SAP Batch Job solltest du dir klar machen, dass es immer mindestens 2 User gibt.

# User1 hat den Batch Job eingeplant

# User2 führt die Steps des Jobs aus. Diesen User bestimmst du bei der Stepdefinition (direkt im ersten Feld). Hintergrund dieses Users ist, dass er umfangreichere Berechtigungen besitzen kann.

 

B.4 Der Job soll nur bis zu einem bestimmten Datum laufen

Mit der normalen Jobeinplanung per SM36 ist es nicht möglich einen Job so einzuplanen, so dass er nur bis zu einem bestimmten Datum/Uhrzeit laufen soll. Die Anforderung kannst du mit Hilfe des Programms BTCAUX10 (per SE38 aufrufen) erfüllen. Hier definierst du den gewünschten Job und gibst in den Feldern letztes Auführungsdatum/-uhrzeit die gewünschten Daten ein.

 

B.5 Weitere Hilfsprogramme zu Jobs

Neben der BTCAUX10  gibt es folgende Hilfsprogramme zum Thema Jobs, die man per SE38 aufrufen kann

 

# BTCAUX01 – Jobs mit fehlenden Druckparametern anzeigen und reparieren

# BTCAUX02 – Jobs mit gelöschtem Drucker anzeigen

# BTCAUX03 – Hilfsprogramm zum Archivieren von Joblogs

# BTCAUX04 – Mehrfach eingeplante periodische Jobs identifizieren

# BTCAUX05 – Jobs zu Spoolaufträgen selektieren

# BTCAUX06 – Protokollierung für Joblöschung einschalten

# BTCAUX07 – Status von aktiven Jobs überprüfen

# BTCAUX08 – Anfang oder Ende eines Joblogs anzeigen

# BTCAUX09 – Jobs mit gelöschten Benutzern identifizieren

# BTCAUX10 – Job mit letztem Ausführungstermin bzw. mit Zeitfenster einplanen

# BTCAUX11 – Beispielprogramm zum Erzeugen eines Jobs mit Spoollistenempfänger

# BTCAUX14 – Hintergrund-Jobs nach ihrer Häufigkeit auflisten

# BTCAUX18 – verschiedene Überprüfungen von Jobs und ihren Protokollen

# BTCAUX20 – Löschen obsoluter Einträge aus BTCOPTIONS

 

B.6 Hilfreiche Job-Tabellen

 

# TBTCO –  Job-Zustandsübersichtstabelle

# TBTCP – Step-Übersicht eines Batch-Jobs

# TBTCY – Tabelle für Jobs im Status ‚bereit‘

# TBTCA – Nachfolger-Relation bei Batch-Job Einplanungen

# TBTCB – Vorgänger-Relation bei Batch-Job Einplanungen

 

B.7 Zwischen den Job-Steps eine Wartezeit vorsehen

Manchmal ist es nötig zwischen 2 Steps eines Jobs eine Wartezeit einzuplanen – dies kann bspw. dann erforderlich sein, wenn man sicher gehen will, dass die Verbuchung des ersten Steps durch ist, bevor der nächste Step startet. Diese Wartezeit kannst du wie folgt umsetzen:

#1 Führe per SE38 das Programm RSWAITSEC aus und gib in Sekunden die gewünschte Wartezeit an

#2 Dann speicherst du deine Eingabe als Selektionsvariante – bspw. 20 Sekunden

#3 Nun fügst du das Programm RSWAITSEC mit deiner Variante (20 Sekunden) als Step zwischen die beiden ursprünglichen Steps ein

 

B.8 Job-Debuggen – so geht es

Um einen aktiven Job zu debuggen kannst du JDBG nutzen:

#1 Zu debuggenden Job, der aktive sein muss, per SM37 aufrufen und markieren

#2 Jetzt einfach in die Transaktionsleiste JDBG eingeben und Enter drücken- jetzt springt der Joblauf in den Debugger-Modus

 

B.9 RSPC – Man kann mit Process Chain auch Batch Jobs aufsetzen

Normalerweise habe ich die Transaktion RSPC – Prozesskettenpflege in Rahmen von BI-Projekten kennengelernt – hier wurde sie bspw. für die regelmäßige Cube-Befüllung eingesetzt. Doch im letzten Projekt habe ich von einem Kollegen gelernt, dass man mit Prozessketten auch Batch Jobs aufsetzen kann. Batch Job mit Prozessketten haben bspw. den Vorteil, dass mehrere parallele Steps aufgesetzt werden können und anschließend der nächste Step nur beginnt, wenn alle parallelen Steps beendet sind.

 

B.10 Job per Variante auf „inaktiv“ setzen

Eine sehr elegante Möglichkeit einen regelmäßigen Batch Job kurzfristig auf „inaktiv“ zu setzen ist es, die Variante der Steps zu verändern. Im obigen Beispiel hatten wir SHPMNT-IDocs in einem bestimmten Zeitraum als Selektionsvariante (SHPMNT ERR) verwendet. Wenn du in diese Variante in die Zeile IDoc eine 1 einträgst und die Variante speicherst, wird der Job nie irgendwas tun, da es höchstwahrscheinlich keine SHPMNT-IDocs mit der Nummer 1 im gewünschten Zeitraum gibt – also ist der Job inaktiv 😉

 

cu, Isa.

 

 

2 Kommentare

  1. Hallo lsa,
    danke für deinen informativen Artikel 🙂

    Auch wir sollen bei uns einen Job über die Methode unter B.4 erstellen, da die Zeitausnahme 14:15 p.m. bis 05:00 a.m. (nächster Tag) ist.
    Zwar läuft der Job ab 14:15 nicht mehr, jedoch fängt er nach 05:00 auch nicht wieder an zu laufen (periodisch alle 15 Min).

    Ist dieses Ausnahmeintervall (Nachmittags bis morgens) so in diesem Report nicht vorgesehen ?
    Wenn die Zeitausnahme innerhalb eines Tages liegt, greift die Einstellung.

    Danke und LG aus Flensburg,
    Falko

Bitte hinterlasse ein kurzes Feedback, Isa.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.