Nachrichtenschemas für IDOC-Vorgänge

Zwischendokumente (IDOCS) sind standardisierte EDI-ähnliche Dokumente, die von SAP für die asynchrone Kommunikation mit SAP- und Nicht-SAP-Systemen unterstützt werden. IDOCS dienen zum Senden und Empfangen von Geschäftsdokumenten wie Verkaufsaufträgen an oder aus dem SAP-System eines Handelspartners oder eines externen Programms.

Obwohl das SAP-System eine Reihe von Porttypen zum Senden und Empfangen von IDOCS unterstützt (z. B. einen Dateiport oder einen CPIC-Port), unterstützt der Microsoft BizTalk-Adapter für mySAP Business Suite das Senden und Empfangen von IDOCS mithilfe eines tRFC-Ports.

  • Für ein ausgehendes IDOC fungiert der SAP-Adapter als tRFC-Client und ruft einen RFC auf, um das IDOC an SAP zu senden.

  • Für ein eingehendes IDOC fungiert der SAP-Adapter als tRFC-Server und akzeptiert einen tRFC-Clientaufruf von SAP, um das IDOC zu empfangen.

    Der SAP-Adapter zeigt vier Vorgänge unter dem IDOC-Knoten an, die Sie zum Senden und Empfangen von IDOCS mit einem SAP-System verwenden können.

  • SendIdoc. Sendet ein IDOC als Zeichenfolgendaten an den Adapter. Dieser Vorgang wird direkt unter dem IDOC-Stammknoten angezeigt. Der gleiche Vorgang wird für alle IDOCs verwendet.

  • Senden. Sendet ein IDOC als stark typisierte Daten an den Adapter. Dieser Vorgang wird unter einem Knoten angezeigt, der für jedes IDOC spezifisch ist.

  • ReceiveIdoc. Empfängt ein IDOC vom Adapter als Zeichenfolgendaten. Dieser Vorgang wird direkt unter dem IDOC-Stammknoten angezeigt. Der gleiche Vorgang wird für alle IDOCs verwendet.

  • Empfangen. Empfängt ein IDOC vom Adapter als stark typisierte Daten. Dieser Vorgang wird unter einem Knoten angezeigt, der für jedes IDOC spezifisch ist.

Hinweis

Diese vier Vorgänge bieten verschiedene Möglichkeiten, IDOCs zwischen Ihrem Programm und dem SAP-Adapter auszutauschen. Der Adapter verwendet immer einen RFC (wie im nächsten Abschnitt erläutert), um IDOCs mit dem SAP-System zu senden oder zu empfangen.

Zusätzlich zur Verwendung eines der vier IDOC-Vorgänge können Sie auch ein IDOC senden oder empfangen, indem Sie eines der RFCs verwenden, die intern vom SAP-Adapter zum Austauschen von IDOCs mit dem SAP-System verwendet werden. Eine Übersicht darüber, wie der SAP-Adapter IDOCs unterstützt, finden Sie unter Vorgänge auf IDOCs in SAP.

Dieses Thema enthält Informationen zu den Nachrichtenschemas und Nachrichtenaktionen, die für IDOC-Vorgänge verwendet werden.

RFCs, die vom SAP-Adapter zum Senden und Empfangen von IDOCs verwendet werden

Der SAP-Adapter verwendet intern die folgenden Remotefunktionsaufrufe (RFCs), um IDOCS mit dem SAP-System auszutauschen. Auf der ausgehenden Seite (Adapter für das SAP-System) fungiert der Adapter als tRFC-Client, um den RFC aufzurufen. Auf der eingehenden Seite (SAP zu Adapter) ruft SAP den RFC auf dem Adapter auf, der als tRFC-Server fungiert.

RFC BESCHREIBUNG
IDOC_INBOUND_ASYNCHRONOUS Dieses Funktionsmodul wird ab Release 4.0 und höher verwendet. Es verarbeitet IDOCS in Datensatztypen, die für 4.x-Releases gültig sind. Dadurch wird sichergestellt, dass längere IDOC-Segmentnamen unterstützt werden.

Zu den Parametern für diesen RFC gehören:

– idoc_control_rec_40 (SAP-Struktur ist EDI_DC40)

– idoc_data_rec_40 (SAP-Struktur ist EDI_DD40)

Der IDOC-Steuerelementdatensatz besteht aus den folgenden Feldern:

- Mestyp. Der logische Nachrichtentyp. Vermittelt die geschäftliche Bedeutung der Nachricht. Dieses Feld ist erforderlich.

- Idoctyp. Die Grundstruktur des IDOC. Dieses Feld identifiziert den Layoutsatz, der diese Nachricht verwendet. Dieses Feld ist erforderlich.

- Cimtyp. Die Struktur der Kundenerweiterung. Wenn eine SAP-Basisstruktur erweitert wird, muss der Kunde der Struktur der Erweiterung einen Namen geben. Dies ist ein Pflichtfeld, wenn ein Kunde eine Erweiterung vorgenommen hat. andernfalls initial.

- Partnerfelder. Dabei handelt es sich um parameter für den sendeseitigen und empfangenen Partner, z. B. Partnertyp, Partnernummer, Partnerfunktion.

Der IDOC-Datensatz besteht aus den folgenden Feldern:

- Headerfelder. Segmentheaderfelder wie Tabellenname, Segmentnummer, Segmenttyp. Dies sind obligatorische Felder.

- Sdata. 1000-Byte-Zeichenfeld für die daten, die vom IDOC verwendet werden. Dies ist ein Pflichtfeld.
INBOUND_IDOC_PROCESS Dieses Funktionsmodul wird für Releases bis 4.0 verwendet. Es verarbeitet IDOCS in Datensatztypen, die für 3.x-Releases gültig sind. Es ist auch möglich, dieses Funktionsmodul in 4.x zu verwenden.

Zu den Parametern für diesen RFC gehören:

– idoc_control (SAP-Struktur ist EDI_DC)

- idoc_data (SAP-Struktur ist EDI_DD)

Vorgänge zum Senden von IDOCs

Der SAP-Adapter macht die Send- und SendIdoc-Vorgänge für Clients verfügbar, um IDOCs an ein SAP-System zu senden. Für den Sendevorgang wird das IDOC als stark typisierte Daten dargestellt. für den SendIdoc-Vorgang wird das IDOC als Zeichenfolgendaten dargestellt. Diese Vorgänge bestimmen, wie die IDOC-Daten zwischen dem Adapter und Ihrer Anwendung dargestellt werden. Der Adapter sendet IDOCs immer mithilfe des IDOC_INBOUND_ASYNCHRONOUS oder des IDOC_INBOUND_PROCESS (t)RFC an SAP. Um ein IDOC an Ihr SAP-System zu senden, können Sie entweder den Send- oder SendIdoc-Vorgang verwenden oder direkt den entsprechenden RFC aufrufen.

Nachrichtenstrukturen für IDOC-Clientvorgänge

Die folgende Tabelle zeigt die Nachrichtenstrukturen für die Vorgänge Send und SendIdoc.

Vorgang XML-Struktur Beschreibung
Send <Send xmlns="[MSG_VERSION]/Idoc/[VERSION]/[IDOCTYP]/ [CIMTYP]/[RELNO]/Send"> <idocData> <[EDI_DC40/EDI_DC] xmlns="/Types/Idoc/ [VERSION]/[IDOCTYP]/[CIMTYP]/[RELNO]"> <EDIDC_FIELD1>value1</ EDIDC_FIELD1> <EDIDC_FIELD2>value2</ EDIDC_FIELD2> … </EDI_DC40> <[SEGMENT_DEFN]_1> <[DATAHEADERCOLUMN_[SEGHDR_FLD1]> header_value_1 </[DATAHEADERCOLUMN_[SEGHDR_FLD1]> <[DATAHEADERCOLUMN_[SEGHDR_FLD2]> header_value_2 </[DATAHEADERCOLUMN_[SEGHDR_FLD2]> … <SEG_FIELD1>value1</SEG_FIELD1> <SEG_FIELD2>value2</SEG_FIELD2> … </[SEGMENT_DEFN]_1> <[SEGMENT_DEFN]_2> <[DATAHEADERCOLUMN_[SEGHDR_FLD1]> header_value_1 </[DATAHEADERCOLUMN_[SEGHDR_FLD1]> <[DATAHEADERCOLUMN_[SEGHDR_FLD2]> header_value_2 </[DATAHEADERCOLUMN_[SEGHDR_FLD2]> … <SEG_FIELD1>value1</SEG_FIELD1> <SEG_FIELD2>value2</SEG_FIELD2> … </[SEGMENT_DEFN]_2> … </[EDI_DC40/EDI_DC]> </idocData> <guid>guid</guid> </Send> Sendet ein stark typisiertes IDOC an SAP

- Das IDOC-Schema ist stark typisiert.

– Macht Steuerelementdatensatzfelder verfügbar.

– Macht Datensatzfelder verfügbar, einschließlich Segmentheadern und Segmentfeldern.

Der SAP-Adapter ordnet eine GUID der SAP-Transaktions-ID (TID) zu, die zum Senden des IDOC verwendet wird. Sie können auswählen, ob in der Anforderungsnachricht eine GUID angegeben werden soll. Wenn keine GUID in der Anforderungsnachricht enthalten ist, generiert der SAP-Adapter eine. Die GUID wird in der Antwortnachricht zurückgegeben.
Antwort senden <SendResponse xmlns="[MSG_VERSION]/Idoc/[VERSION]/ [IDOCTYP]/[CIMTYP]/[RELNO]/Send"> <guid>guid</guid> </SendResponse> Gibt an, dass das IDOC an das SAP-System gesendet wurde.

Wenn die AutoConfirmSentIdocs-Bindungseigenschafttrue ist, bestätigt der SAP-Adapter automatisch die Transaktion im SAP-System, und Sie können die in der Antwort zurückgegebene GUID ignorieren. Wenn die AutoConfirmSentIdocs-Bindungseigenschaftfalse ist, müssen Sie den RfcConfirmTransID-Vorgang mit der vom SAP-Adapter zurückgegebenen GUID aufrufen, um die Transaktion im SAP-System abzuschließen.

Sie können die SapAdapterUtilities.ConvertGuidToTid-Methode aufrufen, um die TID abzurufen, die der logischen Arbeitseinheit (LUW) zugeordnet ist.
SendIdoc <SendIdoc xmlns="[MSG_VERSION]/Idoc"> <idocData>docDataString</idocData> <guid>guid</guid> </SendIdoc> Sendet ein schwach typisiertes IDOC an SAP.

- Das IDOC-Schema ist schwach typisiert.

– Macht das IDOC als einzelnes Zeichenfolgenfeld verfügbar, das aus dem Steuerelementdatensatz und dem Datensatz besteht.

Der SAP-Adapter ordnet eine GUID der SAP-TID zu, die er zum Senden des IDOC verwendet. Sie können auswählen, ob eine GUID in der Anforderungsnachricht angegeben werden soll. Wenn in der Anforderungsnachricht keine GUID enthalten ist, generiert der SAP-Adapter eine. Die GUID wird in der Antwortnachricht zurückgegeben.
SendIdoc-Antwort <SendIdocResponse xmlns="[MSG_VERSION]/Idoc"> <guid>guid</guid> </SendIdocResponse> Gibt an, dass das IDOC an das SAP-System gesendet wurde.

Wenn die AutoConfirmSentIdocs-Bindungseigenschafttrue ist, bestätigt der SAP-Adapter automatisch die Transaktion auf dem SAP-System, und Sie können die in der Antwort zurückgegebene GUID ignorieren. Wenn die AutoConfirmSentIdocs-Bindungseigenschaftfalse ist, müssen Sie den RfcConfirmTransID-Vorgang mit der vom SAP-Adapter zurückgegebenen GUID aufrufen, um die Transaktion auf dem SAP-System abzuschließen.

Sie können die SapAdapterUtilities.ConvertGuidToTid-Methode aufrufen, um die der LUW zugeordnete TID abzurufen.

[MSG_VERSION] = Die Nachrichtenversionszeichenfolge; Beispiel http://Microsoft.LobServices.Sap/2007/03: .

[VERSION] = IDOC-Releaseversion (2 oder 3).

[IDOCTYP] = IDOC-Typ; beispielsweise ORDERS05.

[CIMTYP] = Cimtype des angepassten IDOC.

[RELNO] = Releasenummer; Beispiel: 620.

[EDI_DC40/EDI_DC] = EDI_DC40 für IDOCs der Version 3 und EDI_DC für Releaseversion2-IDOCs.

[EDIDC_FIELD] = Feld, das die EDI_DC40/EDI_DC-Steuerelementdatensatzstruktur darstellt.

[SEGMENT_DEFN] = Segmentdefinitionsname (NOT segment type name); beispielsweise E2EDK01005. Beachten Sie, dass der Segmentdefinitionsknoten basierend auf der Struktur des IDOC auch unter einem Segmentgruppenknoten angezeigt werden kann.

[DATAHEADERCOLUMN_(SEGHDR_FLD)] = Jedes Segment verfügt über einen Segmentheader, der aus einem Standardsatz von Headerfeldern besteht, gefolgt von den Segmentdaten. Die Segmentdaten bestehen aus allen Segmentfeldern und -daten. Dieser Knoten stellt die Segmentheaderfelder dar. beispielsweise DATAHEADERCOLUMN_SEGNAM.

[SEG_FIELD] = Segmentfeldname, der eine bestimmte Segmentdefinition [SEGMENT_DEFN] darstellt.

[guid] = GUID-Parameter.

Nachrichtenaktionen für IDOC-Clientvorgänge

Die folgende Tabelle zeigt die Nachrichtenaktionen für die Vorgänge Send und SendIdoc.

Vorgang Aktion Beispiel
Send [MESSAGE_VERSION]/Idoc/[VERSION] /[IDOCTYP]/[CIMTYP]/[RELNO]/Senden http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS05//620/Send
Antwort senden [MESSAGE_VERSION]/Idoc/[VERSION] /[IDOCTYP]/[CIMTYP]/[RELNO]/Send/response http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS05//620/Send/response
SendIdoc [MESSAGE_VERSION]/Idoc/SendIdoc http://Microsoft.LobServices.Sap/2007/03/Idoc/SendIdoc
SendIdoc-Antwort [MESSAGE_VERSION]/Idoc/SendIdoc/response http://Microsoft.LobServices.Sap/2007/03/Idoc/SendIdoc/response

[MESSAGE_VERSION] = Die Nachrichtenversionszeichenfolge; Beispiel http://Microsoft.LobServices.Sap/2007/03: .

[VERSION] = IDOC-Releaseversion (2 oder 3).

[IDOCTYP] = IDOC-Typ; beispielsweise ORDERS05.

[CIMTYP] = Cimtype des angepassten IDOC.

[RELNO] = Releasenummer; Beispiel: 620.

Vorgänge zum Empfangen von IDOCs

Der SAP-Adapter macht die Receive- und ReceiveIdoc-Vorgänge für Anwendungen verfügbar, um IDOCs von einem SAP-System zu empfangen. Für den Empfangsvorgang wird das IDOC als stark typisierte Daten dargestellt. für den ReceiveIdoc-Vorgang wird das IDOC als Zeichenfolgendaten dargestellt.

Diese Vorgänge bestimmen, wie die IDOC-Daten vom Adapter an Ihre Anwendung ausgegeben werden. Der Adapter empfängt IDOCs vom SAP-System immer entweder als IDOC_INBOUND_ASYNCHRONOUS oder IDOC_INBOUND_PROCESS tRFC. Sie können entweder den Receive- oder ReceiveIdoc-Vorgang verwenden oder IDOC-Daten im RFC-Format empfangen. Sie legen die ReceiveIdocFormat-Bindungseigenschaft fest, um das Format anzugeben, in dem der Adapter die IDOC-Daten an Ihre Anwendung ausgibt. Weitere Informationen zu den Eigenschaften der SAP-Adapterbindung finden Sie unter Informationen zu Den Bindungseigenschaften des BizTalk-Adapters für mySAP Business Suite.

Nachrichtenstrukturen für IDOC-Empfangsvorgänge

Die folgende Tabelle zeigt die Nachrichtenstrukturen für die Vorgänge Receive und ReceiveIdoc.

Vorgang XML-Struktur BESCHREIBUNG
Empfangen <Receive xmlns="[MSG_VERSION]/Idoc/[VERSION]/[IDOCTYP]/ [CIMTYP]/[RELNO]/Receive"> <idocData> <[EDI_DC40/EDI_DC] xmlns="/Types/Idoc/ [VERSION]/[IDOCTYP]/[CIMTYP]/[RELNO]"> <EDIDC_FIELD1>value1</ EDIDC_FIELD1> <EDIDC_FIELD2>value2</ EDIDC_FIELD2> … </EDI_DC40> <[SEGMENT_DEFN]_1> <[DATAHEADERCOLUMN_[SEGHDR_FLD1]> header_value_1 </[DATAHEADERCOLUMN_[SEGHDR_FLD1]> <[DATAHEADERCOLUMN_[SEGHDR_FLD2]> header_value_2 </[DATAHEADERCOLUMN_[SEGHDR_FLD2]> … <SEG_FIELD1>value1</SEG_FIELD1> <SEG_FIELD2>value2</SEG_FIELD2> … </[SEGMENT_DEFN]_1> <[SEGMENT_DEFN]_2> <[DATAHEADERCOLUMN_[SEGHDR_FLD1]> header_value_1 </[DATAHEADERCOLUMN_[SEGHDR_FLD1]> <[DATAHEADERCOLUMN_[SEGHDR_FLD2]> header_value_2 </[DATAHEADERCOLUMN_[SEGHDR_FLD2]> … <SEG_FIELD1>value1</SEG_FIELD1> <SEG_FIELD2>value2</SEG_FIELD2> … </[SEGMENT_DEFN]_2> … </[EDI_DC40/EDI_DC]> </idocData> </Receive> Empfängt ein stark typisiertes IDOC von SAP

- Das IDOC-Schema ist stark typisiert.

– Macht Steuerelementdatensatzfelder verfügbar.

– Macht Datensatzfelder verfügbar, einschließlich Segmentheadern und Segmentfeldern.
Antwort empfangen <ReceiveResponse xmlns="[MSG_VERSION]/Idoc/[VERSION]/[IDOCTYP]/ [CIMTYP]/[RELNO]/Receive"> </ReceiveResponse> Gibt an, dass das IDOC vom SAP-System empfangen wurde.
ReceiveIdoc <ReceiveIdoc xmlns="[MSG_VERSION]/Idoc"> <idocData>docDataString</idocData> </ReceiveIdoc> Empfängt ein schwach typisiertes IDOC von SAP.

– Das IDOC-Schema ist schwach typisiert.

– Macht das IDOC als einzelnes Zeichenfolgenfeld verfügbar, das aus dem Steuerelementdatensatz und dem Datensatz besteht.
ReceiveIdoc-Antwort <ReceiveIdocResponse xmlns="[MSG_VERSION]/Idoc"> </ReceiveIdocResponse> Gibt an, dass das IDOC vom SAP-System empfangen wurde.

[MSG_VERSION] = Die Nachrichtenversionszeichenfolge; Beispiel http://Microsoft.LobServices.Sap/2007/03: .

[VERSION] = IDOC-Releaseversion (2 oder 3).

[IDOCTYP] = IDOC-Typ; beispielsweise ORDERS05.

[CIMTYP] = Cimtype des angepassten IDOC.

[RELNO] = Releasenummer; Beispiel: 620.

[EDI_DC40/EDI_DC] = EDI_DC40 für IDOCs der Version 3 und EDI_DC für IDOCs der Version 2.

[EDIDC_FIELD] = Feld, das die EDI_DC40/EDI_DC-Steuerelementdatensatzstruktur darstellt.

[SEGMENT_DEFN] = Segmentdefinitionsname (NOT segment type name); beispielsweise E2EDK01005. Der Segmentdefinitionsknoten kann basierend auf der Struktur des IDOC auch unter einem Segmentgruppenknoten angezeigt werden.

[DATAHEADERCOLUMN_(SEGHDR_FLD)] = Jedes Segment verfügt über einen Segmentheader, der aus einem Standardsatz von Headerfeldern besteht, gefolgt von den Segmentdaten. Die Segmentdaten bestehen aus allen Segmentfeldern und -daten. Dieser Knoten stellt die Segmentheaderfelder dar. beispielsweise DATAHEADERCOLUMN_SEGNAM.

[SEG_FIELD] = Segmentfeldname, der eine bestimmte Segmentdefinition [SEGMENT_DEFN] darstellt.

Empfangen eines IDOC im RFC-Format

Sie können auch IDocs im RFC-Format empfangen. Die RFCs, die zum Empfangen von IDOCs von SAP verwendet werden, sind:

  • IDOC_INBOUND_ASYNCHRONOUS für IDOCs der Version 3.

  • INBOUND_IDOC_PROCESS für Version 2-IDOCs.

    Der folgende Code zeigt die Struktur eines IDOC, das als IDOC_INBOUND_ASYNCHRONOUS-Vorgang empfangen wird.

<IDOC_INBOUND_ASYNCHRONOUS xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">  
  <IDOC_CONTROL_REC_40>  
    <EDI_DC40 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">  
      <EDIDC_FIELD1>field1</EDIDC_FIELD1>  
      <EDIDC_FIELD2>field2</EDIDC_FIELD2>  
      …  
    </EDI_DC40>  
  <IDOC_DATA_REC_40>  
    <EDI_DD40 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">  
      <[SEG_HEADER_FIELD1]>value1</[SEG_HEADER_FIELD1]>  
      <[SEG_HEADER_FIELD2]>value2</[SEG_HEADER_FIELD2]>  
      …  
      <SDATA>segment value</SDATA>  
    </EDI_DD40>  
    …  
  </IDOC_DATA_REC_40>  
</IDOC_INBOUND_ASYNCHRONOUS>  

[EDIDC_FIELD] = Feld, das die EDI_DC40/EDI_DC-Steuerelementdatensatzstruktur darstellt

[SEG_HEADER_FIELD] = Jedes Segment verfügt über einen Segmentheader, der aus einem Standardsatz von Headerfeldern besteht, gefolgt von den Segmentdaten. Die Segmentdaten bestehen aus allen Segmentfeldern und -daten. Dieser Knoten stellt die Segmentheaderfelder dar. beispielsweise SEGNAM, MANDT und DOCNUM.

Weitere Informationen zum Format von tRFC-Vorgängen finden Sie unter Nachrichtenschemas für tRFC-Vorgänge.

Nachrichtenaktionen für IDOC-Empfangsvorgänge

Die folgende Tabelle zeigt die Nachrichtenaktionen für die Vorgänge Receive und ReceiveIdoc.

Vorgang Aktion Beispiel
Empfangen [MESSAGE_VERSION]/Idoc/[VERSION] /[IDOCTYP]/[CIMTYP]/[RELNO]/Receive http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS05//620/Receive
Antwort empfangen [MESSAGE_VERSION]/Idoc/[VERSION] /[IDOCTYP]/[CIMTYP]/[RELNO]/Receive/response http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS05//620/Receive/response
ReceiveIdoc [MESSAGE_VERSION]/Idoc/ReceiveIdoc http://Microsoft.LobServices.Sap/2007/03/Idoc/ReceiveIdoc
ReceiveIdoc-Antwort [MESSAGE_VERSION]/Idoc/ReceiveIdoc/response http://Microsoft.LobServices.Sap/2007/03/Idoc/ReceiveIdoc/response