SAP-Nachrichtenfindung – rette deinen Tag und erfahre Experten-Details.

Vor einiger Zeit hatte ich hier den Beitrag „10 Schritte, um die SAP-Nachrichtenfindung zu meistern“ veröffentlicht. Damals hatten ich die prinzipielle Logik der Nachrichtenfindung basierend auf der Konditionstechnik erklärt. In diesem Beitrag will ich einige Details darstellen, die im Rahmen der Nachrichtenfindung in SAP ERP relevant sind.

 

A. NACE – die zentrale Transaktion der Nachrichtenfindung in SAP ERP

Die NACE ist die zentrale Transaktion für die Nachrichtenfindung in SAP ERP. Mit dieser Transaktion kann man für alle Anwendungen (Verkauf, Versand, Bestellung, …), in denen die Nachrichtenfindung genutzt werden:

# Die Zugriffsfolgen definieren

# Nachrichtenarten aufsetzen

# Nachrichtenschemata einstellen

# Nachrichtenkonditionssätze pflegen

 

 

Neben diesen offensichtlichen Funktionen der NACE können mit dieser Transaktion auch weitere Funktionen aufgerufen werden (zu erreichen über die Menüleiste der NACE – Bearbeiten oder Springen):

# Bearbeiten ->

## Rollen/Nachrichten

## Konditionstabellen

## Feldkatalog

## Druckparameter

# Springen ->

## Bedingungen

## Partnerrollen

## Customizing-Check

 

Zusätzlich zur  NACE bietet SAP für die Nachrichtensteuerung eine abgespeckte Version dieser Transaktion an, mit den nur Teilaufgaben erfüllt werden können:

# NACU –  Nachrichtenarten pflegen

# NACQ – Konditionstabellen pflegen

# NACR – Nachrichtenkonditionen pflegen

 

B. Konditionssätze pflegen für Anwender

Da vielfach die Berechtigungen für die NACE oder NACR an die User nicht vergeben wird, kann man Nachrichtensätze für die jeweiligen Anwendungen mit unterschiedlichen Transaktionen pflegen:

Nachrichtenkonditionen (anlegen / ändern / anzeigen)

# VV11 / VV12 / VV13  – Verkauf

# VV21 / VV22 / VV23 – Versand

# VV31 / VV32 / VV33 – Faktura

# VV61 / VV62 / VV63 – Handling Units

# VV71 / VV72 / VV73 – Transport

# MN04 / MN05 / MN06 – Bestellungen

# MN24 / MN25 / MN26 – Anlieferung

# MN10 / MN11 / MN12 – Lieferplan

# MRM1 / MRM2 / MRM3 – Rechnungsprüfung

 

C. Was bedeutet eigentlich Versandzeitpunkt in den Nachrichtenkonditionen

Bei der Pflege von Nachrichtenkonditionen gibt es die Option des Versandzeitpunkts, das man verstanden haben sollte, wenn man die Nachrichtenfindung richtig einsetzen will:

 

# Versandzeitpunkt 1: Mit dieser Option wird die gefundene Nachricht nicht direkt verarbeitet; sie kann mittels des Programms RSNAST00, das normalerweise als Job eingeplant wird, verarbeitet werden.

# Versandzeitpunkt 2: Diese Option ist identisch zu 1 bis auf folgenden Unterschied; hierbei kannst du einen Zeitraum bestimmen, in der das Programm RSNAST00 die Nachricht ausführt. Die Bestimmung des Zeitraum erfolgt durch einen Report, der der Nachrichtenart (Customizing) zugeordnet werden muss:

SAP hat zur Zeitraumbestimmung das folgende Beispielprogramm vorgesehen: RSFNDTIM:

Sinngemäß steht in diesem Beispielreport:

# Die Nachrichtenart BA00 (Auftragsbestätigung):

## soll nach 3 Tagen nur zwischen 17 und 20 Uhr verarbeitet werden, wenn es sich um eine Drucknachricht (NACHA=1) handelt

## soll am gleichen Tag nur zwischen 21 und 24 Uhr verarbeitet werden, wenn es sich um eine Faxnachricht (NACHA=2) handelt.

# Versandzeitpunkt 3: Wenn dieser Versandzeitpunkt gewählt wurde, kann die Nachricht mit sogenannten anwendungseigenen Transaktionen verarbeitet werden – diese Transaktionen stelle weiter unten vor.

# Versandzeitpunkt 4: Bei dieser Option wird die Nachrichten, sofort nachdem sie gefunden und der Beleg gesichert wurde, verarbeitet.

 

D. Anwendungseigene Transaktionen

Wenn in den Nachrichtenkonditionen der Versandzeitpunkt 3 gewählt wurde, können die Nachrichten nur mit folgenden Transaktionen verarbeitet werden:

# VL70 – Nachrichten aus Kommissionierlisten

# VL71 – Nachrichten aus Auslieferungen

# VL72 – Nachrichten aus Gruppen von Lieferungen

# VL73 – Rückmeldung dezentraler Lieferungen

# VL74 – Nachrichten aus Handling Units

# VL75 – Lieferavisnachrichten

# VT70 – Nachrichten zu Transporten

# VF31 – Nachrichten zur Faktura

# ME9A – Nachrichtenausgabe Anfragen

# ME9E – Nachrichtenausgabe LP-Einteilungen

# ME9F – Nachrichtenausgabe Bestellungen

# ME9K – Nachrichtenausgabe Kontrakte

# ME9L – Nachrichtenausgabe Lieferpläne

# MR91 – Nachrichten zu Rechnungsbelegen

 

An dieser Liste ist auffällig, dass es für Nachrichten aus dem Kundenauftrag keine anwendungseigene Transaktion vorgesehen sind. Hier kann man sich aber mit dem Report SD70AV1A behelfen; mit diesem Report lassen sich Nachrichten aus dem Kundenauftrag mit Versandzeitpunkt 3 prozessieren. Nach Bedarf kann man zum Report per SE93 einfach eine eigene Transaktion erstellen.

 

E. Wichtige Tabellen zur Nachrichtenfindung

Zum Schluss eine kleine Liste interessanter Tabellen im Zusammenhang mit der Nachrichtenfindung:

 

# NACH – Detaildaten für Nachrichtenkonditionen

In dieser Tabelle sind die Detail zu allen Nachrichtenkonditionen abgelegt, die im System angelegt worden sind.

 

# NAST – Nachrichtenstatus

In der NAST sind alle Nachrichten, die zu einzelnen Belegen gefunden worden sind, gesperichert.

 

# T685B – Konditionsarten: Zusatzdaten Nachrichtenversendung

Hier findet man Detail zu den Nachrichtenkonditionsarten

 

# TNAPR – Verarbeitungsprogramme für Nachrichten

In der TNAPR kannst du die Zuordnung der Verarbeitungsprogramme zu den Nachrichtenarten finden.

 

# B… – Zugriffstabellen der Nachrichten – bspw. B010 – Versandstelle / Route

Die B-Tabellen (fangen immer mit B an und mit 3 folgenden Ziffern) stellen die Zugriffstabellen der SAP-Nachrichten dar.

 

cu, Isa.

 

SAP-Tabellen zur Unternehmensstruktur: Einfach und übersichtlich.

A. FI – Unternehmensstruktur-Tabellen

# T880 – Gesellschaftsdaten (für KONS-Ledger)

# T014 – Kreditkontrollbereiche

# T001 – Buchungskreise

# TGSB – Geschäftsbereiche

# TFKB – Funktionsbereiche

# TGSBK – Geschäftsbereiche für die Konsolidierung

# FM01 – Finanzkreise

# FAGL_SEGM – Stammdaten für Segmente

 

B. CO – Unternehmensstruktur-Tabellen

# TKA01 – Kostenrechnungskreise .

# TKEB – Verwaltung Ergebnisbereiche (mandantenabh.)

# TKA02 – Kostenrechnungskreisfindung

 

C. LO – Unternehmensstruktur-Tabellen

# T001W – Werke/Niederlassungen

# T499S – Standorte

# TSPA – Vertriebssparten

# T001K – Bewertungskreis

# T134G – Geschäftsbereichsfindung

 

D. SD – Unternehmensstruktur-Tabellen

# TVKO – Verkaufsorganisationen

# TVTW – Vertriebswege

# TVBUR – Verkaufsbüros

# TVKGR – Verkäufergruppen

# TVTA – Vertriebsbereiche

# TVKBZ – Verkaufsbüros: Zuordnung zu Org.-Einheiten

# TVBVK – Verkäufergruppen je Verkaufsbüro

# TVKWZ – Erlaubte Werke je Verkaufsorganisation

 

E. MM – Unternehmensstruktur-Tabellen

# T024E – Einkaufsorganisationen

# T001L – Lagerorte

# T024W – Zulässige Einkaufsorganisationen zum Werk

# T024Z – Einkaufsorganisationen

 

F. LES – Unternehmensstruktur-Tabellen

# T300 – LVS Lagernummern

# TVST – Defintion der Versandstellen

# TVLA – Ladestellen je Versandstelle

# TTDS – Transportdispostellen

# T320 – Zuordnung IM-Lagerort zu WM-Lagernummer

# TVSWZ – Versandstellen je Werk

 

cu, Isa.

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.

 

 

Was wirklich beim Projektplan zählt.

Im Sommer diesen Jahres hatte ich vorgestellt, wie man effektiv und ohne viel Mühe einen SAP-Projektplan erstellt: SAP-Projektplan erstellen – in 5 kurzen und einfachen Schritten. Damals schon ist mir aufgefallen, dass die Erstellung des Projektplans „nur“ ein erster Schritt ist. Über die Jahre habe ich die Erfahrung gemacht, dass vielfach Projektpläne in der Schublade verschwinden und nicht mehr aktiv „gelebt“ werden. Dabei sollte der Projektplan als zentrales Steuerungswerkzeug über den ganzen Projektzyklus gepflegt und gelebt werden. Im folgenden habe ich 5 Aspekte zusammengestellt, die neben der Erstellung des Projektplans zusätzlich beachtet werden sollten.

 

 

 

#1 Erstelle den Projektplan zusammen im Team

Auch wenn du alle anderen Tipps nicht berücksichtigst – diesen Aspekt solltest du unbedingt beachten: Erstellen einen Projektplan nie allein, sondern im Team. Dieses Vorgehen bietet folgende Vorteile: Zum einen bekommst du wertvollen Input vom Team, und zum anderen wird das Team einen Projekt, bei dem es mitgewirkt hat, eher akzeptieren und dahinterstehen.

 

#2 Hole dir Feedback von den Stakeholdern ein

Nachdem du eine erste Version des Projektplans fertiggestellt hast, verteile diesen an alle Stakeholder und bitte sie um ein Feedback. Frühes einbilden der Satkeholder ist essentiell für ein effektives Stakeholdermanagement; siehe hierzu auf folgenden Link: Ein schonungsloser Blick hinter die Kulissen: Effektives Stakeholder-Management für SAP-Berater.

Feedback, dass du von den Stakeholdern bekommen hast, solltest du kritisch bewerten und anschließend – falls es dir sinnvoll erscheint – in den Projektplan einarbeiten. Bitte vergesse hier nicht, auf jedes Feedback eine Antwort zu erstellen.

 

#3 Verteile den Projektplan an ALLE Teammitglieder

So … jetzt solltest du eine erste abgestimmte Version des Projektplans vorliegen haben. Nun ist es an der Zeit diesen Projektplan an alle Teammitglieder und Stakeholder zu verteilen – bitte mach nicht Fehler hier jemand zu vergessen. Scheue dich nicht, mit der Verteilung des Projektplans konkrete Aufgabenstellung mitzugeben.

 

#4 Passen den Projektplan zeitnah an

Ein großer Fehler, den ich immer wieder beobachte, ist, dass bei Änderungen des Projektablaufs die Anpassung des Projektplans vernachlässigt wird. Mach hier nicht den Fehler den Projektplan für die Schublade zu erstellen. Mache es dir zur wöchentlichen Routine den Projektplan zu aktualisieren und jede noch so kleine Änderung im Projektplan anzupassen.

 

#5 Kommuniziere jede Änderung an alle Teammitglieder

Letztlich solltest du nicht vergessen die Änderungen des Projektplan an alle Teammitglieder und die Stakeholder zu kommunizieren. Am besten machst das auch routinemäßig einmal die Woche, so stellst du eine Verbindlichkeit her und alle Beteiligten werden sich eingebunden fühlen.

 

cu, Isa.