How-to: SAP IDoc über HTTP versenden
Die gängigste Variante der Übertragung von IDocs von einem auf ein anderes System ist der Weg über das Dateisystem. Eine weitere Möglichkeit der Übertragung von IDocs ist das direkte Senden per http. Die Voraussetzungen dafür bringt SAP bereits mit, sodass lediglich die Konfiguration an entsprechenden Stellen notwendig ist jedoch keine weitere Software oder ähnliches benötigt wird.
Damit IDocs per http aus einem SAP-System gesendet werden können, müssen zunächst eine RFC-Verbindung und ein entsprechender Port konfiguriert werden. Wie diese beiden Schritte vollzogen werden und die Verbindung getestet wird kann wird im Folgenden dargestellt.
Schritt 1: Konfiguration RFC-Verbindung
Der erste Schritt ist die Konfiguration einer RFC-Verbindung. Dazu öffnet man die Transaktion SM59 (Konfiguration der RFC-Verbindungen). Hier gibt es mehrere Typen von RFC-verbindungen aus denen einer ausgewählt wird. Im vorliegenden Beispiel, soll das IDoc an einen externen Server versendet werden, daher wird “http-Verbindungen zu ext. Server” markiert und über die Schaltfläche “Anlegen” öffnet sich die Konfigurationsmaske.
Hier wird der Verbindung zunächst ein Name gegeben sowie eine Beschreibung gepflegt. Im vorliegenden Beispiel heisst die RFC-Verbindung “ZTEST”. Im Reiter “Technische Einstellungen” können Zielmaschine, Servicenummer und Pfadpräfix gepflegt werden. Im Beispiel ist der externe Server ein online Tool, welches den http-Request entgegennimmt und die übermittelten Daten anzeigt. Daher ist die Zielmaschine “mockbin.org”, die Servicenummer (oder Port) bleibt leer und das Pfadpräfix ist der Pfad zu unserem sogenannten “bin”, den wir angelegt haben also “/bin/4502cf8b-b2b8-4ee8-8ff8-f30ab60022ee”. Der “bin” ist der “Behälter” in dem die gesendeten Anfragen gesammelt werden. Also gibt der Pfad den Ablageort der Anfragen an. Die übrigen Reiter bleiben unbeachtet.
Tipp: Unter mockbin.org kann mit einem Klick auf “Create Bin” ganz einfach ein “bin” angelegt werden. Im Konfigurationsfenster als Vorlage XML auswählen und “bin” erstellen. Die zugehörige URL kann dann aus der Adressleiste des Browsers übernommen werden.
Schritt 2: Port einrichten
Der zweite Schritt ist die Einrichtung des Ports. Dies geschieht in der Transaktion WE21. Hier ist das Vorgehen zunächst ähnlich zu Schritt 1. Es gibt erneut mehrere Typen und es wird einer ausgewählt um dann mit der Schaltfläche “Anlegen (F7)” fortzusetzen. Im Beispiel wird der Port Typ “XML-http” verwendet. Dieser ist für die Übertragung per http gedacht. Nach dem Klick auf die Schaltfläche “Anlegen” öffnet sich im rechten Teil des Fensters eine Maske zur Konfiguration des neuen Ports. Zunächst werden ein Name und eine Beschreibung gepflegt. Hinter RFC-Destination wird die in Schritt 1 konfigurierte RFC-Verbindung eingetragen. Im verwendeten Beispiel “ZTEST”. Beim “Content type” wird text/xml ausgewählt. Die Checkbox “SOAP-Protokoll” kann wahlweise aktiviert oder deaktiviert werden. SOAP ist ein Netzwerkprotokoll für den Datenaustausch, welches verwendet werden kann, aber nicht muss. Bei der Verwendung von SOAP muss sichergestellt sein, dass das empfangende System das entsprechende Format unterstützt. Im Beispiel bleibt die Checkbox deaktiviert, sodass SOAP nicht verwendet wird.
Schritt 3: IDoc-Verarbeitung Testen
Mit diesen beiden Schritten ist die Konfiguration in SAP bereits abgeschlossen und die Verbindung kann getestet werden. Dazu beinhaltet SAP die Transaktion WE19. Mit dieser Transaktion kann ein IDoc zu Testzwecken versendet werden. Unter anderem gibt es dort die Möglichkeit ein bestehendes IDoc als Vorlage zunehmen und eine Kopie davon zu versenden. Dies ermöglicht einen praxisnahen Test. Diese Variante ist auch diejenige, die im Beispiel verwendet wird. Dazu wird über die Wertehilfe eine passende Vorlage gesucht und verwendet.
Tipp: Am besten verwendet man, falls vorhanden, ein IDoc welches an den Partner gerichtet war, welcher zukünftig per http erreicht werden soll. So kann mit echten Daten getestet werden und eine manuelle Eingabe von Testdaten wird umgangen.
Im darauffolgenden Fenster, wird das IDoc in einer Baumstruktur dargestellt und die Daten können angepasst werden. Da ein neuer Port angelegt wurde müssen auf jeden Fall die Felder des Kontrollsatzes angepasst werden. Zum Öffnen der entsprechenden Maske genügt ein Doppelklick auf die Daten hinter “EDIDC”.
Im Beispiel wird für den Empfänger der Port “ZTEST_PORT” und “Partnernummer MI7CLNT800” verwendet. Der Port wurde im zweiten Schritt konfiguriert und die Partnernummer ist die ID des Geschäftspartners, an den das IDoc “adressiert” sein soll. Für den Absender wird der Port des SAP Systems verwendet und die entsprechende Partnernummer angegeben. Im Beispiel sind sendender und empfangender Partner identisch. Der Nachrichtentyp ist der aus der Vorlage übernommene.
Achtung: Der Port muss in der Partnervereinbarung als Ausgangsparameter vorhanden sein!
Der Versand wird mit einem Klick auf die Schaltfläche “Standard Ausgabe” gestartet.
Wenn der Versand erfolgreich war erscheint folgende Meldung:
Ergebnis:
Das Ergebnis ist in SAP in der Transaktion WE02 sichtbar. Das versendete IDoc hat den Status 03 “Datenübergabe an Port OK”.
Im online Tool findet man das Ergebnis unter mockbin.org/bin/4502cf8b-b2b8-4ee8-8ff8-f30ab60022ee.
Im nächsten Blogbeitrag wird die Konfiguration zum Empfangen eines IDoc beschrieben.
4 Kommentare zu "How-to: SAP IDoc über HTTP versenden"
Vielen Dank – sehr informativ.
Wir haben einen externen webshop, welcher mit einer file-Schnittstelle beliefert wird und auch Aufträge aus dem webshop per file zurückmeldet.
Es werden also im batch Stammdaten und Buchungen per xml-file exportiert und importiert.
Man könnte nun also alle relevanten Stammdatenänderungen, Aufträge, Faktura, etc. per idoc über http versenden und das real time?
Und alle idoc Schnittstellen (hier SD) und ports etc sind vorhanden? So daß man das Ganze in ein paar Wochen umstellen könnte?
Hallo Herr Mann,
die XML-HTTP Schnittstelle kann den Weg über die XML-Datei Schnittstelle ersetzen. SAP-seitig muss der entsprechende Port eingerichtet werden. Analog zu dem, den es für die XML-Datei Schnittstelle gibt. Hinzu kommt die RFC-Verbindung und die Partnervereinbarung.
Eine weitere wichtige Voraussetzung ist, dass der Webshop mit den HTTP-Anfragen umgehen kann.
Sind diese Voraussetzungen gegeben, ist eine Umstellung möglich.
Viele Grüße
Felix Tissen
Hallo Herr Tissen,
wie kann ich mir anzeigen lassen, ob ein IDoc tatsächlich an das externe System des Partnerunternehmens versendet wurde?
Denn beim Partnerunternehmen kommt nichts an, obwohl im IDoc-Status “Datenübergabe an Port OK” und “IDoc wurde an ein SAP-System oder ein externes Programm gesendet” steht.
Es handelt sich dabei nicht um eine RFC-Verbindung.
Unser Port ist in dem Fall die SAP-POT (T für Test). Eine Partnervereinbarung ist ebenfalls vorhanden.
Danke im Voraus.
Viele Grüße
Yusuf Araz
Hallo Herr Araz,
leider ist im IDoc Monitoring nicht sichtbar, ob die Nachricht auch wirklich beim Empfänger angekommen ist.
Dies liegt daran, dass sich das IDoc Monitoring auf die Sendersicht beschränkt.
Es könnte zum Beispiel an einer Firewall liegen, dass die Nachricht den Empfänger nicht erreicht.
Ob die Verbindung zum Empfänger generell funktioniert, können Sie über einen Verbindungstest in der SM59 prüfen.
Bei weiteren Fragen wenden Sie sich gerne per Mail an info@erlebe-software.de .
Viele Grüße
Felix Tissen