Vorgänge auf IDOCs in SAP

IDOCs sind standardisierte EDI-ähnliche Dokumente, die SAP für die asynchrone Kommunikation mit SAP- und Nicht-SAP-Systemen unterstützt. IDOCs werden zum Senden und Empfangen von "Geschäfts"-Dokumenten wie z. B. Verkaufsaufträgen an oder aus dem SAP-System eines Handelspartners oder einem externen Programm verwendet.

Obwohl das SAP-System eine Reihe von Porttypen zum Senden und Empfangen von IDOCs unterstützt (z. B. Dateiport, CPIC-Port), unterstützt der SAP-Adapter das Senden und Empfangen von IDOCs über den tRFC-Port.

Vorgänge zum Senden eines IDOC

Alle IDOC-Aufrufe von SAP werden intern als tRFC-Aufrufe behandelt, bei denen der Adapter als tRFC-Client fungiert und einen RFC in SAP aufruft, um ein IDOC zu senden. Genau wie jeder andere tRFC-Clientaufruf übergibt der Adapterclient optional eine GUID an den Adapter, die ihn wiederum mit der Transaktions-ID (TID) verknüpft, die er für den Aufruf im SAP-System verwendet. (Wenn der Adapterclient keine GUID übergibt, generiert der Adapter eine eigene GUID.) Die GUID wird in der Antwortnachricht an den Adapterclient zurückgegeben. Der Adapterclient kann diese GUID verwenden, um die TID im SAP-System zu bestätigen. Die tatsächliche SAP-TID, die vom Adapter für den tRFC-Aufruf verwendet wird, kann durch Aufrufen einer speziellen statischen Methode in der SAP-Bindung , ConvertGuidToTid, abgerufen werden. Die tatsächliche TID kann hilfreich sein, um Probleme im SAP-System zu beheben.

Nach Abschluss des Aufrufs zum Senden des IDOC muss die TID im SAP-System bestätigt werden. Dadurch kann das SAP-System die TID aus seiner Datenbank löschen. Der Adapterclient kann die TID im SAP-System bestätigen.

  • Explizit durch Aufrufen des RfcConfirmTransID-Vorgangs für den Adapter. Dieser Vorgang verwendet eine GUID (die in der obigen Antwortmeldung zurückgegeben wird) und bewirkt, dass der Adapter die zugeordnete TID auf dem SAP-System bestätigt.

  • Implizit durch Festlegen der AutoConfirmSentIdocs-Bindungseigenschaft . Wenn diese Bindungseigenschaft true ist, committet der Adapter die TID automatisch, nachdem er das IDOC an das SAP-System gesendet hat. Weitere Informationen finden Sie unter Informationen zum BizTalk-Adapter für mySAP Business Suite-Bindungseigenschaften .

    Der SAP-Adapter verwendet die folgenden RFCs, um ein IDOC zu senden:

  • INBOUND_IDOC_PROCESS. Dieses Funktionsmodul wird für SAP-Releases vor 4.0 verwendet.

  • IDOC_INBOUND_ASYNCHRONOUS. Dieses Funktionsmodul wird für SAP Release 4.0 und höher verwendet.

Senden von IDOCs mit Segmentdaten über mehrere Zeilen hinweg

IDOCs bestehen aus Segmenten. Jeder Segmenteintrag in einer IDOC-Flatfile enthält die Segmentheaderinformationen (mit dem FELD DOCNUM) und die Segmentdaten. In einigen IDOCs können die Segmentdaten auf mehrere Zeilen aufgeteilt werden. Beispiel:

Segment header (DOCNUM is one of the fields here)  |  Segment data  
Segment header (DOCNUM is one of the fields here)  |  Segment data  
Segment data wrapped from the previous line  
Segment header (DOCNUM is one of the fields here)  |  Segment data  

Der WCF-basierte SAP-Adapter unterstützt das Senden solcher IDOCs an das SAP-System. Um das Senden solcher IDOCs zu unterstützen, bestimmt der SAP-Adapter, ob es sich bei den einzelnen Segmentdaten um eine Fortsetzung des vorherigen Segments handelt oder ob es sich um neue Segmentdaten handelt. Der SAP-Adapter entscheidet dies, indem er jeden Segmentheader analysiert und nach dem FELD DOCNUM sucht. Wenn die Segmentdaten auf zwei Zeilen aufgeteilt werden, verfügt die zweite Zeile über keinen Segmentheader, und daher findet der SAP-Adapter das FELD DOCNUM nicht. Daher kann der SAP-Adapter feststellen, dass es sich um eine Fortsetzung der vorherigen Segmentdaten handelt.

Beispielsweise findet der SAP-Adapter in der oben gezeigten Darstellung eines IDOC kein DOCNUM-Feld in "Segment data wrapped from the previous line" und kann entscheiden, dass die Zeile eine Fortsetzung der vorherigen Segmentdaten ist. In Anbetracht der Größe von IDOC-Flatfiles in Produktionsumgebungen kann die Durchführung solcher Überprüfungen für die einzelnen Segmentdaten zu einer erhöhten Verarbeitungszeit führen.

Hinweis

Der Adapter verwendet das DOCNUM-Feld anstelle eines Wagenrücklauf-Zeilenvorschubs (CRLF), um jeden Segmentdatensatz zu identifizieren und aus IDOC-Daten zu extrahieren. Wenn die DOCNUM-Felder im Steuerelement und den Datensätzen ungültig oder teilweise leer sind, kann der Adapter das IDOC nicht analysieren. Daher wird das IDOC nicht an das SAP-System gesendet.

Vorgänge zum Senden eines IDOC

Die folgenden Vorgänge werden für das Senden von IDOCs an ein SAP-System unterstützt:

  • Senden. Verwenden Sie diesen Vorgang, um ein IDOC mithilfe eines stark typisierten Schemas an das SAP-System zu senden. Das Schema für diesen Vorgang macht Steuerelementdatensatzfelder und Datensatzfelder verfügbar, einschließlich Segmentheadern und Segmentfeldern. Der Sendevorgang ist spezifisch für eine Kombination aus IDocType + CimType + ReleaseNumber + Version.

    Dieser Vorgang wird für jedes IDOC angezeigt und ist unter einem bestimmten IDOC-Knoten im Add Adapter Service Reference Plug-In oder Consume Adapter Service Add-In verfügbar.

    Hinweis

    Um einen Sendevorgang erfolgreich ausführen zu können, müssen Sie über eine entsprechende Autorisierung im SAP-System verfügen. Weitere Informationen.

  • SendIdoc. Verwenden Sie diesen Vorgang, um ein IDOC mithilfe eines schwach typisierten Schemas an das SAP-System zu senden. Das Schema für diesen Vorgang macht IDOCs als einzelnes Zeichenfolgenfeld verfügbar, das aus dem Steuerelementdatensatz und dem Datensatz besteht. Der SendIdoc-Vorgang verwendet eine IDOC-Zeichenfolge und eine GUID als Parameter.

    Dies ist ein einzelner Vorgang, der für alle vom SAP-System verfügbar gemachten IDOCs angezeigt wird und unter dem Stammknoten IDOC im Add Adapter Service Reference Plug-In oder Consume Adapter Service Add-In verfügbar ist.

    Weitere Informationen:

  • Senden eines IDOC an ein SAP-System mithilfe von BizTalk Server finden Sie unter Senden von IDOCs an SAP mithilfe von BizTalk Server.

  • Senden eines IDOC an ein SAP-System mithilfe des WCF-Dienstmodells finden Sie unter Senden von IDOCs an SAP mithilfe des WCF-Dienstmodells.

  • Nachrichtenstrukturen und SOAP-Aktion zum Senden eines IDOC finden Sie unter Nachrichtenschemas für IDOC-Vorgänge.

Vorgänge zum Empfangen eines IDOC

Um ein IDOC zu empfangen, kann sich der SAP-Adapter entweder als tRFC-Server oder als RFC-Server verhalten:

  • Damit sich der Adapter als tRFC-Server verhält, muss die Bindungseigenschaft TidDatabaseConnectionString auf den Verbindungszeichenfolge für die TID-Datenbank auf Ihrem Computer festgelegt werden. Bei einem tRFC-Serverszenario akzeptiert der Adapter einen tRFC-Clientaufruf vom SAP-System, um das IDOC zu empfangen.

  • Damit sich der Adapter als RFC-Server verhält, muss TidDatabaseConnectionString NULL (Standard) sein. Bei einem RFC-Serverszenario akzeptiert der Adapter einen RFC-Clientaufruf vom SAP-System, um das IDOC zu empfangen.

    Die folgenden RFCs werden zum Senden und Empfangen von IDOCs verwendet. beim Senden von IDOCs verwendet der Adapter diese RFCs, während beim Empfang von IDOCS das SAP-System diese verwendet.

  • INBOUND_IDOC_PROCESS. Dieses Funktionsmodul wird für SAP-Releases vor 4.0 verwendet.

  • IDOC_INBOUND_ASYNCHRONOUS. Dieses Funktionsmodul wird für SAP Release 4.0 und höher verwendet.

    Die folgenden Vorgänge werden für den Empfang von IDOCs von einem SAP-System unterstützt:

  • Empfangen. Verwenden Sie diesen Vorgang, um ein IDOC vom SAP-System mit einem stark typisierten Schema zu erhalten. Das Schema für diesen Vorgang macht Steuerelementdatensatzfelder und Datensatzfelder verfügbar, einschließlich Segmentheadern und Segmentfeldern.

    Dieser Vorgang wird für jedes IDOC angezeigt und ist unter einem bestimmten IDOC-Knoten im Add Adapter Service Reference Plug-In oder Consume Adapter Service Add-In verfügbar.

    Hinweis

    Um einen Empfangsvorgang erfolgreich ausführen zu können, müssen Sie über eine entsprechende Autorisierung im SAP-System verfügen. Weitere Informationen.

    Hinweis

    Mit dem Empfangsvorgang können Sie auch mehrere IDOCs empfangen.

  • ReceiveIdoc. Verwenden Sie diesen Vorgang, um ein IDOC vom SAP-System unter Verwendung eines schwach typisierten Schemas zu erhalten. Das Schema für diesen Vorgang macht IDOCs als einzelnes Zeichenfolgenfeld verfügbar, das aus dem Kontrolldatensatz und dem Datensatz besteht. Dieser Vorgang empfängt IDOCs als Zeichenfolge in einer XML-Nachricht unter dem <idocData-Tag> .

    Dies ist ein einzelner Vorgang, der für alle vom SAP-System verfügbar gemachten IDOCs angezeigt wird und unter dem Stammknoten IDOC im Add Adapter Service Reference Plug-In oder Consume Adapter Service Add-In verfügbar ist.

    Beim Empfang von IDOCs unterstützt der SAP-Adapter verschiedene Nachrichtenformate, die als Wert für die Bindungseigenschaft ReceiveIDocFormat angegeben werden können, die vom SAP-Adapter verfügbar gemacht wird.

  • Wenn auf "Typed" festgelegt ist, wird das XML-Schema stark in das spezifische IDOC eingegeben, das empfangen werden soll. (Das Schema für diese Nachricht kann aus den Empfangsvorgängen ersichtlich werden. Beachten Sie, dass sich das Schema für verschiedene IDOCs unterscheidet. Dies ergibt ein XML-IDOC.

  • Wenn sie auf "String" festgelegt ist, werden die eingehenden IDOC-Daten als String-Wert zurückgegeben. (Das Schema für diese Nachricht ist aus dem ReceiveIdoc-Vorgang ersichtlich.) Dies ergibt eine XML-Nachricht mit dem <idocData-Tag> .

  • Wenn "Rfc" festgelegt ist, entspricht das Nachrichtenschema dem RFC-Schema (oder tRFC) für die RFC-Vorgänge IDOC_INBOUND_ASYNCHRONOUS oder INBOUND_IDOC_PROCESS, abhängig von der eingehenden IDOC-Version. Wenn Sie diese Bindungseigenschaft angeben, sollten Sie die IDOC_INBOUND_ASYNCHRONOUS oder INBOUND_IDOC_PROCESS RFC verwenden, um das IDOC zu empfangen. In den ersten beiden Optionen verwendet der Adapter intern diesen RFC. In dieser Option verwenden Sie diesen RFC explizit, um ein IDOC zu erhalten.

    Der Vorgang, den Sie zum Empfangen eines IDOC verwenden, muss dem Format der vom Adapter ausgegebenen IDOC-Daten entsprechen. Die folgende Tabelle enthält eine Zusammenfassung der verschiedenen Kombinationen, in denen Sie ein IDOC von SAP erhalten können.

So erhalten Sie ein IDOC mit Legen Sie die Bindungseigenschaft ReceiveIDOCFormat auf fest.
Empfangsvorgang Typisiert
ReciveIdoc-Vorgang String
IDOC_INBOUND_ASYNCHRONOUS RFC Rfc
INBOUND_IDOC_PROCESS RFC Rfc

Eine weitere Bindungseigenschaft PadReceivedIdocsWithSpaces pads das empfangene IDOC mit Leerzeichen für optionale Felder, wenn das Empfangsformat "String" erwartet wird. Dies ermöglicht die Kompatibilität mit dem IDOC-Datenformat, das mit der vorherigen Version des Adapters empfangen wurde.

Weitere Informationen zu Bindungseigenschaften finden Sie unter Informationen zu Den Bindungseigenschaften des BizTalk-Adapters für mySAP Business Suite.

Weitere Informationen:

SAP-Autorisierung für die Verwendung von Sende- oder Empfangsvorgängen

Wenn Sie die Sende - oder Empfangsvorgänge verwenden, um IDOCs mit einem stark typisierten Schema zu senden oder zu empfangen, ruft der SAP-Adapter intern die IDOCTYPE_READ_COMPLETE RFC auf, um die Metadaten für das IDOC abzurufen. Für den Aufruf dieses RFC ist die folgende Autorisierung in SAP erforderlich:

Authorisation object S_IDOCDEFT, Fields:  
EDI_TCD, value 'WE30'  
ACTVT, value - 03 (display)  
EDI_DOC, value  *  
EDI_CIM, value *  

Sie können die SU01-Transaktion in SAP verwenden, um ein Autorisierungsobjekt hinzuzufügen. Weitere Informationen zur Transaktion erhalten Sie von Ihrem SAP-Administrator oder in der SAP-Dokumentation.

Weitere Informationen

Welche Vorgänge können mit dem Adapter ausgeführt werden?