IDOC-UMSETZUNG: EINFACHE ÄNDERUNG VON FELDINHALTEN
Wer oft mit ein- oder ausgehenden IDOCs arbeitet oder mit dem Monitoring von IDOCs betraut ist, weiß wie oft IDOCs wegen falschen oder fehlenden Informationen in der IDOC-Struktur auf einen Fehler laufen und dann unverarbeitet bleiben. Dieser Umstand ist z.B. bei Unternehmen fatal, bei denen täglich viele tausende Kundenaufträge und Stammdaten über IDOCs zwischen Systemen versendet und die Daten möglichst schnell im Tagesgeschäft benötigt werden. In solchen Fällen wird dann die schnelle Abarbeitung der fehlerhaften IDOCs und rasches Fixing der fehlerhaften IDOC-Verarbeitung zur absoluten Priorität. Fehler in der Verarbeitung können schnell entstehen und häufige Ursachen sind Änderungen am Programmcode oder Änderungen von Customizing-Einstellungen im Ziel- oder Empfängersystem, so das auf einmal Ungereimtheiten zwischen den festgelegten Daten im IDOC und den für die Verarbeitung benötigten Daten im SAP-System entstehen. Ist ein solcher Fehler im Produktivsystem entstanden, kann man nicht immer bis zur Analyse und Reparatur des Programmcodes oder Klärung der Fehlerentstehung und -behebung warten. Oft ist nach Feststellung der Fehlerursache ein möglichst schnelles Reagieren erforderlich um zum einen das Anhäufen weiterer fehlerhafter IDOCs zu verhindern und zum anderen das Tagesgeschäft erst einmal bis zum Fehlerfixing fortzusetzen. Hierzu gibt es einen einfachen Weg, wie man bei fehlerhafter IDOC-Verarbeitung erst einmal reagieren kann. Ich möchte hier eine Möglichkeit zeigen, wie man falsche oder fehlende Inhalte in IDOCs in wenigen Schritten so verändern kann, dass diese im Rahmen der IDOC-Verarbeitung nicht mehr auf einen Fehler laufen und das Tagesgeschäft bis zur Behebung des Fehlers fortgesetzt werden kann. Die Methode, mit der dieses erste Eingreifen möglich ist, nennt sich IDOC-Umsetzung. Dies ist eine SAP-Funktionalität, die es erlaubt falsche oder fehlende Inhalte in IDOC-Feldern nach Bedarf zu verändern. Hierzu werden werden Verarbeitungsregeln (Umsetzungsregel) angelegt und den Feldern in den IDOCs zugeordnet. Sofern dann ein festgelegter Nachrichtentyp im System ankommt, erfolgt eine Prüfung, ob im entsprechenden Segment und Feld ein für die Umsetzungsregel relevanter Wert vorhanden ist. Man geht beim Einrichten einer Umsetzungsregel folgendermaßen vor:
1. Transaktion BD62: Umsetzungsregel anlegen
Als erstes ist via Transaktion BD62 eine Umsetzungsregel anzulegen. Man geht hierzu in der Transaktion in den Änderungsmodus und trägt in einer leeren Zeile in das Feld „Umsetzungsregel“ eine Bezeichnung ein für die anzulegende Regel. Rechts davon in der Spalte „Bedeutung“ muss man dann eine Beschreibung der Umsetzungsregel vornehmen. Als letztes trägt man dann den Namen des IDOC-Segments ein, in der sich das zu verändernde Feld und Wert befindet (siehe Abbildung 01).
2. Transaktion BD55: Umsetzungsregel einem Nachrichtentyp zuordnen
Im zweiten Schritt wird die zuvor angelegte Umsetzungsregel einem Nachrichtentyp zugewiesen. Mit dem Aufruf der Transaktion BD55 wird man aufgefordert einen Nachrichtentyp für die Bearbeitung zu bestimmen. Man wählt hier den Nachrichtentyp, mit dem das IDOC in das System kommt und bestätigt die Auswahl. In unserem Fall ist es der Nachrichtentyp „ORDERS“ (siehe Abbildung 02).
Im Folgefenster muss man dann noch Angaben zum sendenden und empfangenden System vornehmen. Man trägt hierfür in die entsprechenden Felder die Partnerart und Partnernummer des IDOC-sendenden und des empfangenden Systems ein. Darüber hinaus werden in die Felder „Segmenttyp“ und „Umsetzungsregel“ die entsprechenden Informationen aus Schritt 1 eingetragen (siehe Abbildung 03). Nach dem Sichern ist der Nachrichtentyp mit dem Segment und der Umsetzungsregel verknüpft, so dass dieser beim Eintreffen eines entsprechenden IDOCs zur Anwendung kommt.
3. Transaktion BD79: Umsetzungsregel pflegen
In diesem Schritt geht es um den Inhalt und die Konfiguration der Umsetzungsregel. Hier wird festgelegt welches Feld im Segment geprüft und auch welche Art der Inhalt des Feldes entsprechend verändert werden soll. Man geht hierfür via Transaktionscode BD79 in die Transaktion „Umsetzungsregel pflegen“ und wählt die im Schritt 1 angelegte Umsetzungsregel aus. Dann geht man in den Änderungsmodus (siehe Abbildung 04).
Es erfolgt ein Absprung auf ein Fenster, in dem alle Felder des angegebenen Segments aus Schritt 1 aufgelistet sind (Abbildung 05).
Man sucht sich hier nach dem Feld, dessen Inhalt verändert werden soll und gelangt mit einem Doppelklick auf den Feldnamen zu der eigentlichen Stelle, an der die Umsetzungsregel konfiguriert wird (siehe Abbildung 06).
Auf dieser Konfigurationsoberfläche (Abbildung 06) hat man dann die Möglichkeit Inhalte und Werte in den ankommenden IDOCs auf verschiedenste Weise zu bearbeiten. Man hat hierzu auf der linken Seite verschiedene Regeltypen zur Auswahl aus und kann entsprechend auf der rechten Seite Angaben zur Regel machen. In meinem folgenden Beispiel möchte ich den Inhalt des Feldes „Empfangsstelle“ je nach ankommendem Wert verändern. Hierfür ist der Regeltyp „Senderfelder umschlüsseln“ nötig.
Beispielszenario für eine solche Fehlerursache:
Nehmen wir an, dass man im versendenden System die Bezeichnungen der Empfangsstellen verändert hatte, weil man in Zukunft nur noch Nummern oder IDs für Empfangsstellen verwenden möchte anstatt der Bezeichnungen (Nummer anstatt Bezeichnungen). Die neuen Bezeichnungen werden aber, sofern eine Werteprüfung im empfangenden System erfolgen sollte, zu einem Fehler in der IDOC-Verarbeitung führen, da das empfangende System mit den neuen Werten (Nummern) erst einmal nichts anfangen kann und nur die ursprüngliche Bezeichnungen kennt und erwartet. Um eine fehlerhafte Verarbeitung bei den ankommenden IDOCs vorerst zu unterbinden könnte man nun mittels der IDOC-Umsetzung die neuen Bezeichnungen der Empfangsstelle in die ursprünglichen Werte zurück umschlüsseln. Für eine solche Veränderung wählt man links den Regeltyp „Senderfeld umschlüsseln“ und trägt rechts im Bereich „Angaben zur Regel“ in das entsprechende Feld als umzuschlüsselndes Senderfeld „EMPST“ für Empfangsstelle ein. Dies ist das Feld, auf dessen Inhalt geprüft wird. Danach geht man auf den Button „Bedingung“ (siehe Abbildung 07).
Im Folgefenster legt man dann die umzuschlüsselnden Werte fest. Auf der rechten Seite trägt man die aus dem versendenden System ankommenden und zu verändernden Werte ein (Blau). Und auf die linke Seite den Wert, den dieses Feld erhalten soll für die IDOC-Verarbeitung (Grün) (siehe Abbildung 08).
In unserem Fall haben wir z.B. eingestellt, dass wenn im ankommenden IDOC im Feld „Empfangsstelle“ eine „03“ ankommt, dieser Wert verändert wird in „Tor 1“. Dieses würde dann dem ursprünglich versendeten Wert entsprechen, welche im empfangenden System auch entsprechend erwartet und fehlerfrei verarbeitet werden würde. Man geht danach noch einmal zurück auf die Konfigurationsübersicht und sichert (siehe Abbildung 09). Die Umsetzungsregel ist angelegt.
In diesem Beispiel haben wir die Umsetzungsregel so eingestellt das je nach ankommendem Feldinhalt, dieser in einen anderen Wert umgeschlüsselt wird. Hierfür haben wir den Regeltyp „Senderfelder umschlüsseln“ genutzt. Es sind aber auch andere Ausprägungsformen für Umsetzungsregeln möglich. Ebenso kann man Umsetzungsregeln auch so konfigurieren, dass für ein bestimmtes Feld immer ein „Festwert“ mitgegeben wird. Dieses wäre z.B. immer dann nützlich, wenn ein für die Verarbeitung erforderlicher Wert in einem IDOC-Feld aus irgendeinem Grund nicht mehr mitversendet wird. Man wählt hierfür dann einfach den Regeltyp „Konstante setzen“ und trägt auf der rechten Seite in das Feld „Konstante“ den mitzugebenden Wert ein. Entsprechend wird dieses Feld im Rahmen der IDOC-Verarbeitung immer mit dem festgelegten Wert befüllt. In unserem Beispiel haben wir den Fall abgebildet, das im ankommendem IDOC in das Feld „Abteilung“ immer als Festwert „77“ mitgegeben wird (siehe Abbildung 10).
Neben diesen beiden Ausprägungsformen kann man mit Hilfe von Umsetzungsregeln noch mehr Dinge steuern, die im Rahmen der IDOC-Verarbeitung geschehen sollen. Man kann zum Beispiel festlegen was mit initialen Feldern geschehen soll. Ob bestimmte Werte in den Feldern auf Initial gesetzt werden sollen, oder was mit initial ankommenden Feldinhalten gemacht werden soll. Ebenso wie man in einer Umsetzungsregel festlegen kann, was mit bestimmten festgelegten Werten erfolgen soll, kann man in diesen auch bestimmen, was mit den Werten im ankommendem IDOC gemacht werden soll, die nicht in der Umsetzungsregel definiert sind. Sollen diese übernommen werden oder sollen diese mit einem bestimmten Festwert im Empfängerfeld versehen oder auf Initial gesetzt werden. Man könnte an dieser Stelle auch die Entscheidung treffen IDOCs mit nicht definiertem Inhalt im Senderfeld auch nicht zu verarbeiten und als Fehler einzuordnen. Man hat hierzu ein paar Auswahlmöglichkeiten (siehe Abbildung 11).
Fazit
Natürlich wird es nicht immer möglich sein, bei einer fehlerhaften IDOC-Verarbeitung schnell einzugreifen, da Fehler in der Verarbeitung von IDOCs komplexe Ursachen haben können. In diesen Fällen wird man keine andere Wahl haben, als auf die Analyse und Fehlerbehebung, sei es durch Entwicklung, Customizing oder sonstigem, zu warten. Doch wer oft mit IDOCs arbeitet, weiß, dass in den allermeisten Fällen die Ursache für fehlerhafte IDOC-Verarbeitung falsche oder fehlende Inhalte in den IDOCs sind. Dieses ist mit Abstand die häufigste Ursache für nicht oder -fehlerhaft verarbeitete IDOCs. Und genau in diesen Fällen bietet einem dann die Methode der IDOC-Umsetzung eine Möglichkeit schnell und flexibel einzugreifen und die Inhalte in den IDOC-Feldern für die Verarbeitung zu verändern.