Antwortweg SAP ALE

Dieser Antwortweg realisiert die ausgangsseitige Anbindung eines SAP-Systems über die SAP-ALE-Schnittstelle. Zur passenden Zielstruktur siehe Abschnitte Laden einer IDoc-Struktur aus einem internen Template und Laden einer IDoc-Struktur aus SAP-Repository.

Einstellungen


(1) SAP Alias: Der SAP-Alias des angebundenen Systems (siehe Abschnitt SAP).

(2) Zusätzliche Parameter: Folgende zusätzliche Parameter werden akzeptiert.

<Leeres Feld>

Alle Segmente werden an SAP gesendet. Das ist der Standardfall.

mode=default

Nur Segmente, die mit E, Y oder Z beginnen werden an SAP gesendet.

mode=uppercase

Nur Segmente, die nicht mit einem Kleinbuchstaben beginnen werden an SAP gesendet.

mode=regex;regex=...

Nur Segmente, die auf den regulären Ausdruck zutreffen, werden an SAP gesendet.

<Beliebiger anderer, nicht leerer Inhalt>

Nur Segmente, die nicht mit Kleinbuchstabe r bzw. p beginnen werden an SAP gesendet.

Als zusätzlicher Parameter kann auch der Pfad zu einer Textdatei angegeben werden, die dann den Parameter enthält. Der Zweck dieses Parameters ist es, nur einen Teil des Zielbaums an SAP zu senden und den Zielbaum für einen weiteren Antwortweg weiterverwenden zu können. Beispielsweise kann man vor oder nach dem Senden an SAP ein Folgeprofil starten, dass dann zusätzlich zu den IDoc-Segmenten noch zusätzliche Daten (den Rest des Zielbaums) erhält. Um ein weiteres Beispiel zu nennen, könnte man das Profil als Webservice-Eingang implementieren und an den Webservice-Client eine Response mit Daten zurücksenden.

(3) DOCNUMs prüfen: Vor Absendung wird die Integrität der DOCNUMs geprüft.

(4) Gesamten Job als gescheitert melden, wenn dieser Antwortweg fehlgeschlagen ist: Normalerweise gilt ein Job nicht notwendigerweise als fehlerhaft, wenn ein einzelner Antwortweg fehlschlägt (siehe Abschnitt Verhalten im Fehlerfall). Das kann hier aber mit dieser Option erzwungen werden.

(5) Zusätzlicher Text bei Fehler: Hier kann ein zusätzlicher Log-Text für den Fehlerfall angegeben werden.

SAP TID


Jeder Aufruf des Antwortwegs SAP ALE erzeugt eine Transaktion, in der ein oder mehrere IDocs gesendet werden. Die Transaktion wird innerhalb des SAP-Systems durch eine Transaction ID (TID) identifiziert.

Intern erzeugte TID


Im Normalfall wird diese TID im Antwortweg SAP ALE intern aus vier Bestandteilen bestimmt (der IP-Adresse des SAP-Systems, dem Startzeitpunkt des Jobs, den letzten vier Stellen der Jobnummer und einem Counter). Falls innerhalb eines Jobs, infolge der Profil-Checkbox Pro Datenblatt Antwortwege ausführen, der Antwortweg mehrmals ausgeführt wird, wird als Counter die Datenblatt-Nummer verwendet.

Bei Sendewiederholungen im Antwortweg SAP ALE (innerhalb des gleichen Jobs) wird garantiert, dass diese mit der gleichen TID erfolgt, wie beim ersten Sendeversuch (weil die TID aus den gleichen Komponenten erzeugt wird). Das ist notwendig, um ungewollte mehrfache Verarbeitung im Zielsystem zu vermeiden.

Beim Neudurchlauf eines Fehlerjobs wird allerdings infolge der neuen Jobnummer eine andere TID verwendet. Um das zu vermeiden, kann man die Erzeugung der IDocs und das Versenden der IDocs an das SAP-System in zwei Profile aufteilen (ein Erzeuge-Profil, dass das IDoc erzeugt und eine manuelle TID und ein Sendeprofil, das beides verwendet und an das SAP-System schickt). Siehe folgende Abschnitte dazu.

Manuell erzeugte TID


Wenn Sie nicht die intern gesetzte TID verwenden möchten, ist es möglich manuell eine zu erzeugen mit der Funktion create-sap-tid([sapAlias a], [myIP b], [Timestamp c], [JobNr d], [Counter e]). Damit diese manuelle TID im Antwortweg SAP ALE verwendet wird, muss die System-Variable VAR_SYS_SAP_TID (Typ String) definiert werden und dieser die TID zugewiesen werden (ansonsten wird die intern erzeugte TID verwendet). Wichtiger Hinweis: Der Anwender hat dann die Verantwortung, dass jede IDoc-Sendung mit einer einmaligen (unique) TID erfolgt, aber Wiederholungen einer Sendung mit der gleichen TID.

Trennen von IDoc-Erzeugung und IDoc-Sendung


Wenn es beim Senden von IDocs an ein SAP-System häufig zu Abbrüchen kommt, oder das SAP-System manchmal nicht verfügbar ist, ist es vorteilhaft, die IDoc-Erzeugung von der IDoc-Versendung zu trennen.

Erzeugungs-Profil


Das Profil, das die IDocs erzeugt, sendet diese als FixRecord-Daten per Message an ein Folgeprofil (das Sende-Profil), das die IDocs dann an das SAP-System versendet. Wir empfehlen persistente Messages, weil dann bei Sendefehlern kein Fehler im Erzeugungs-Profil entsteht.

Zudem wird mit der Funktion create-sap-tid([sapAlias a], [myIP b], [Timestamp c], [JobNr d], [Counter e]) eine manuelle TID erzeugt. Diese kann im IDoc in einem zusätzlichen Datensatz/Segment untergebracht werden, dessen Datensatzkennung mit einem Kleinbuchstaben beginnt (vorzugsweise r oder p). In diesem Zusatz-Segment lassen sich weitere Parameter unterbringen, z. B. der SAP-Alias, an den gesendet werden soll. Mehr dazu beim Sende-Profil.

Sende-Profil


Das Sende-Profil kann die empfangenen FixRecord-IDocs wie empfangen mit dem Antwortweg SAP ALE versenden. Hinweis: Wenn das Sende-Profil die Checkbox Profil darf nur in einer Instanz laufen (strikte serielle Verarbeitung) gesetzt hat, kann vermieden werden, dass Blockierungen innerhalb des SAP-Systems die Performance für andere Ihrer Prozesse stark beeinträchtigen. Wenn die Datenmenge für diese seriell Verarbeitung zu groß ist, sollte wenigstens das Sende-Profil mit einer höheren Priorität laufen.

Das Sende-Profil wertet dann nur das Zusatzsegment im IDoc aus (und eventuell EDI_DC40, wenn auch daraus Werte gebraucht werden) und kann dann mit den Parameterwerten des Zusatzsegments den Sendevorgang steuern. Wenn beispielsweise die TID aus dem Zusatzsegment jedes IDocs, bzw. jeder IDoc-Gruppe, der Variablen VAR_SYS_SAP_TID zugewiesen wird, ist damit gesichert, dass auch Neudurchläufe des Sende-Profils die gleiche TID verwenden, wie der erste Sendeversuch (da ja der Neudurchlauf die Backupdatei verwendet, also das IDoc, das die TID im Zusatzsegment enthält und ein Wert in der Variable VAR_SYS_SAP_TID bewirkt, dass nicht die intern erzeugte TID im Antwortweg verwendet wird).

Um nun abschließend zu verhindern, dass das Zusatzsegment an das SAP-System gesendet wird, wird der Zusatzparameter mode=uppercase (siehe oben) verwendet.