IDOC 操作のメッセージ スキーマ

中間ドキュメント (IDOCS) は、SAP システムと非 SAP システムの両方と非同期通信するために SAP でサポートされる標準化された EDI のようなドキュメントです。 IDOCS は、取引先の SAP システムまたは外部プログラムとの間で販売注文などのビジネス ドキュメントを送受信するために使用されます。

SAP システムでは、IDOCS を送受信するためのさまざまなポートの種類 (ファイル ポートや CPIC ポートなど) がサポートされていますが、microsoft BizTalk Adapter for mySAP Business Suite では tRFC ポートを使用した IDOCS の送受信がサポートされています。

  • 送信 IDOC の場合、SAP アダプターは tRFC クライアントとして機能し、RFC を呼び出して IDOC を SAP に送信します。

  • 受信 IDOC の場合、SAP アダプターは tRFC サーバーとして機能し、SAP からの tRFC クライアント呼び出しを受け入れて IDOC を受信します。

    SAP アダプターは、SAP システムで IDOCS を送受信するために使用できる 4 つの操作を IDOC ノードの下に表示します。

  • SendIdoc。 IDOC を文字列データとしてアダプターに送信します。 この操作は、IDOC ルート ノードのすぐ下に表示されます。 すべての IDOC に対して同じ操作が使用されます。

  • 送信。 厳密に型指定されたデータとして IDOC をアダプターに送信します。 この操作は、各 IDOC に固有のノードの下に表示されます。

  • ReceiveIdoc。 アダプターから IDOC を文字列データとして受信します。 この操作は、IDOC ルート ノードのすぐ下に表示されます。 すべての IDOC に対して同じ操作が使用されます。

  • 受信します。 アダプターから、厳密に型指定されたデータとして IDOC を受信します。 この操作は、各 IDOC に固有のノードの下に表示されます。

Note

これらの 4 つの操作により、プログラムと SAP アダプターの間で IDOC を交換するさまざまな方法が提供されます。 アダプターは常に RFC を使用して (次のセクションで説明するように)、SAP システムで IDOC を送受信します。

4 つの IDOC 操作の 1 つを使用するだけでなく、SAP アダプターによって内部的に使用される RFC のいずれかを使用して IDOC を送受信し、IDOC を SAP システムと交換することもできます。 SAP アダプターが IDOC をサポートする方法の概要については、「SAP での IDOC に対する操作」を参照してください。

このトピックには、IDOC 操作に使用されるメッセージ スキーマとメッセージ アクションに関する情報が含まれています。

IDOC の送受信に SAP アダプターで使用される RFC

SAP アダプターは、次のリモート関数呼び出し (RFC) を内部的に使用して、IDOCS を SAP システムと交換します。 送信側 (SAP システムへのアダプター) では、アダプターは RFC を呼び出すための tRFC クライアントとして機能します。 受信側 (SAP からアダプター) では、SAP はアダプターで RFC を呼び出します。これは tRFC サーバーとして機能します。

RFC 説明
IDOC_INBOUND_ASYNCHRONOUS この関数モジュールは、リリース 4.0 以降で使用されています。 4.x リリースで有効なレコードタイプで IDOCS を処理します。 これにより、長い IDOC セグメント名がサポートされるようになります。

この RFC のパラメーターは次のとおりです。

- idoc_control_rec_40 (SAP 構造がEDI_DC40)

- idoc_data_rec_40 (SAP 構造がEDI_DD40)

IDOC 制御レコードは、次のフィールドで構成されます。

- Mestyp。 論理メッセージの種類。 メッセージのビジネス上の意味を伝える。 これは必須フィールドです。

- Idoctyp。 IDOC の基本構造。 このフィールドは、このメッセージを使用するレイアウト セットを識別します。 これは必須フィールドです。

- Cimtyp。 顧客拡張機能の構造。 SAP 基本構造が拡張された場合、お客様は拡張機能の構造に名前を付ける必要があります。 これは、顧客が拡張機能を行った場合は必須フィールドです。それ以外の場合は初期。

- パートナー フィールド。 これらは、送信側であり、パートナーの種類、パートナー番号、パートナー機能などの受信側パートナー パラメーターを受け取ります。

IDOC データ レコードは、次のフィールドで構成されます。

- ヘッダー フィールド。 テーブル名、セグメント番号、セグメントの種類などのセグメント ヘッダー フィールド。 これらは必須フィールドです。

- Sdata。 IDOC で使用されるデータの 1000 バイト文字フィールド。これは必須フィールドです。
INBOUND_IDOC_PROCESS この関数モジュールは、最大 4.0 のリリースに使用されます。 3.x リリースで有効なレコードタイプで IDOCS を処理します。 この関数モジュールを 4.x で使用することもできます。

この RFC のパラメーターは次のとおりです。

- idoc_control (SAP 構造がEDI_DC)

- idoc_data (SAP 構造がEDI_DD)

IDOC を送信する操作

SAP アダプターは、クライアントが IDOC を SAP システムに送信するための Send および SendIdoc 操作を公開します。 送信操作の場合、IDOC は厳密に型指定されたデータとして表されます。SendIdoc 操作の場合、IDOC は文字列データとして表されます。 これらの操作によって、アダプターとアプリケーションの間での IDOC データの表現方法が決まります。 アダプターは常に、IDOC_INBOUND_ASYNCHRONOUSまたはIDOC_INBOUND_PROCESS (t)RFC を使用して IDOC を SAP に送信します。 IDOC を SAP システムに送信するには、Send または SendIdoc 操作を使用するか、適切な RFC を直接呼び出すことができます。

IDOC クライアント操作のメッセージ構造

次の表は、Send 操作と SendIdoc 操作のメッセージ構造を示しています。

操作 XML 構造体 説明
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> 厳密に型指定された IDOC を SAP に送信する

- IDOC スキーマは厳密に型指定されています。

- コントロール レコード フィールドを公開します。

- セグメント ヘッダーやセグメント フィールドを含むデータ レコード フィールドを公開します。

SAP アダプターは、GUID を IDOC の送信に使用する SAP トランザクション ID (TID) に関連付けます。 要求メッセージで GUID を指定するかどうかを選択できます。 要求メッセージに GUID が含まれていない場合、SAP アダプターによって生成されます。 GUID は応答メッセージで返されます。
応答の送信 <SendResponse xmlns="[MSG_VERSION]/Idoc/[VERSION]/ [IDOCTYP]/[CIMTYP]/[RELNO]/Send"> <guid>guid</guid> </SendResponse> IDOC が SAP システムに送信されたことを示します。

AutoConfirmSentIdocs バインド プロパティが true の場合、SAP アダプターは SAP システムでトランザクションを自動的に確認し、応答で返される GUID を無視できます。 AutoConfirmSentIdocs バインド プロパティが false の場合、SAP システムでトランザクションを完了するには、SAP アダプターから返された GUID を使用して RfcConfirmTransID 操作を呼び出す必要があります。

SapAdapterUtilities.ConvertGuidToTid メソッドを呼び出して、作業論理単位 (LUW) に関連付けられている TID を取得できます。
SendIdoc <SendIdoc xmlns="[MSG_VERSION]/Idoc"> <idocData>docDataString</idocData> <guid>guid</guid> </SendIdoc> 弱く型指定された IDOC を SAP に送信します。

- IDOC スキーマは弱く型指定されています。

- コントロール レコードとデータ レコードで構成される単一の文字列フィールドとして IDOC を公開します。

SAP アダプターは、GUID を IDOC の送信に使用する SAP TID に関連付けます。 要求メッセージで GUID を指定するかどうかを選択できます。 要求メッセージに GUID が含まれていない場合、SAP アダプターによって生成されます。 GUID は応答メッセージで返されます
SendIdoc 応答 <SendIdocResponse xmlns="[MSG_VERSION]/Idoc"> <guid>guid</guid> </SendIdocResponse> IDOC が SAP システムに送信されたことを示します。

AutoConfirmSentIdocs バインド プロパティが true の場合、SAP アダプターは SAP システムでトランザクションを自動的に確認し、応答で返される GUID を無視できます。 AutoConfirmSentIdocs バインド プロパティが false の場合は、SAP システムでトランザクションを完了するには、SAP アダプターから返された GUID を使用して RfcConfirmTransID 操作を呼び出す必要があります。

SapAdapterUtilities.ConvertGuidToTid メソッドを呼び出して、LUW に関連付けられている TID を取得できます。

[MSG_VERSION] = メッセージのバージョン文字列。たとえば、 http://Microsoft.LobServices.Sap/2007/03です。

[VERSION] = IDOC リリース バージョン (2 または 3)。

[IDOCTYP] = IDOC 型;たとえば、ORDERS05。

[CIMTYP] = カスタマイズされた IDOC の Cimtype。

[RELNO] = リリース番号。たとえば、620 です。

[EDI_DC40/EDI_DC] = リリース バージョン 3 の IDOC の場合はEDI_DC40、リリース バージョン 2 の IDOC の場合はEDI_DC。

[EDIDC_FIELD] = EDI_DC40/EDI_DC制御レコード構造を構成するフィールド。

[SEGMENT_DEFN] = セグメント定義名 (NOT セグメント型名);たとえば、E2EDK01005。 セグメント定義ノードは、IDOC の構造に基づいてセグメント グループ ノードの下に表示される場合もあります。

[DATAHEADERCOLUMN_(SEGHDR_FLD)] = 各セグメントには、ヘッダー フィールドの標準セットとそれに続くセグメント データで構成されるセグメント ヘッダーがあります。 セグメント データは、すべてのセグメント フィールドとデータで構成されます。 このノードはセグメント ヘッダー フィールドを表します。たとえば、DATAHEADERCOLUMN_SEGNAM。

[SEG_FIELD] = 特定のセグメント定義を構成するセグメント フィールド名 [SEGMENT_DEFN]。

[guid] = GUID パラメーター。

IDOC クライアント操作のメッセージ アクション

次の表は、Send 操作と SendIdoc 操作のメッセージ アクションを示しています。

Operation アクション
Send [MESSAGE_VERSION]/Idoc/[VERSION] /[IDOCTYP]/[CIMTYP]/[RELNO]/Send http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS05//620/Send
応答の送信 [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 応答 [MESSAGE_VERSION]/Idoc/SendIdoc/response http://Microsoft.LobServices.Sap/2007/03/Idoc/SendIdoc/response

[MESSAGE_VERSION] = メッセージのバージョン文字列。たとえば、 http://Microsoft.LobServices.Sap/2007/03です。

[VERSION] = IDOC リリース バージョン (2 または 3)。

[IDOCTYP] = IDOC 型;たとえば、ORDERS05。

[CIMTYP] = カスタマイズされた IDOC の Cimtype。

[RELNO] = リリース番号。たとえば、620 です。

IDOC を受信する操作

SAP アダプターは、アプリケーションが SAP システムから IDOC を受信するための Receive および ReceiveIdoc 操作を公開します。 Receive 操作の場合、IDOC は厳密に型指定されたデータとして表されます。ReceiveIdoc 操作の場合、IDOC は文字列データとして表されます。

これらの操作により、アダプターによってアプリケーションに IDOC データがどのように出力されるかが決まります。 アダプターは常に SAP システムから IDOC をIDOC_INBOUND_ASYNCHRONOUSまたはIDOC_INBOUND_PROCESS tRFC として受け取ります。 Receive または ReceiveIdoc 操作を使用することも、RFC 形式で IDOC データを受信することもできます。 ReceiveIdocFormat バインド プロパティを設定して、アダプターが IDOC データをアプリケーションに出力する形式を指定します。 SAP アダプターのバインド プロパティの詳細については、「 BizTalk Adapter for mySAP Business Suite のバインド プロパティについて」を参照してください。

IDOC 受信操作のメッセージ構造

次の表は、Receive および ReceiveIdoc 操作のメッセージ構造を示しています。

操作 XML 構造体 説明
受信 <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> SAP から厳密に型指定された IDOC を受け取ります

- IDOC スキーマは厳密に型指定されています。

- コントロール レコード フィールドを公開します。

- セグメント ヘッダーやセグメント フィールドを含むデータ レコード フィールドを公開します。
応答の受信 <ReceiveResponse xmlns="[MSG_VERSION]/Idoc/[VERSION]/[IDOCTYP]/ [CIMTYP]/[RELNO]/Receive"> </ReceiveResponse> IDOC が SAP システムから受信されたことを示します。
ReceiveIdoc <ReceiveIdoc xmlns="[MSG_VERSION]/Idoc"> <idocData>docDataString</idocData> </ReceiveIdoc> 弱く型指定された IDOC を SAP から受け取ります。

- IDOC スキーマは弱く型指定されています。

- コントロール レコードとデータ レコードで構成される単一の文字列フィールドとして IDOC を公開します。
ReceiveIdoc 応答 <ReceiveIdocResponse xmlns="[MSG_VERSION]/Idoc"> </ReceiveIdocResponse> IDOC が SAP システムから受信されたことを示します。

[MSG_VERSION] = メッセージのバージョン文字列。たとえば、 http://Microsoft.LobServices.Sap/2007/03です。

[VERSION] = IDOC リリース バージョン (2 または 3)。

[IDOCTYP] = IDOC 型;たとえば、ORDERS05。

[CIMTYP] = カスタマイズされた IDOC の Cimtype。

[RELNO] = リリース番号。たとえば、620 です。

[EDI_DC40/EDI_DC] = リリース バージョン 3 の IDOC の場合はEDI_DC40、リリース バージョン 2 の IDOC の場合はEDI_DC。

[EDIDC_FIELD] = EDI_DC40/EDI_DC制御レコード構造を構成するフィールド。

[SEGMENT_DEFN] = セグメント定義名 (NOT セグメント型名);たとえば、E2EDK01005。 セグメント定義ノードは、IDOC の構造に基づいてセグメント グループ ノードの下に表示することもできます。

[DATAHEADERCOLUMN_(SEGHDR_FLD)] = 各セグメントには、ヘッダー フィールドの標準セットとそれに続くセグメント データで構成されるセグメント ヘッダーがあります。 セグメント データは、すべてのセグメント フィールドとデータで構成されます。 このノードはセグメント ヘッダー フィールドを表します。たとえば、DATAHEADERCOLUMN_SEGNAM。

[SEG_FIELD] = 特定のセグメント定義を構成するセグメント フィールド名 [SEGMENT_DEFN]。

RFC 形式での IDOC の受信

RFC 形式で IDoc を受け取ることもできます。 SAP から IDOC を受信するために使用される RFC は次のとおりです。

  • バージョン 3 の IDOC のIDOC_INBOUND_ASYNCHRONOUS。

  • バージョン 2 の IDOC のINBOUND_IDOC_PROCESS。

    次のコードは、IDOC_INBOUND_ASYNCHRONOUS操作として受信した IDOC の構造を示しています。

<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] = EDI_DC40/EDI_DC制御レコード構造を構成するフィールド

[SEG_HEADER_FIELD] = 各セグメントには、ヘッダー フィールドの標準セットとそれに続くセグメント データで構成されるセグメント ヘッダーがあります。 セグメント データは、すべてのセグメント フィールドとデータで構成されます。 このノードはセグメント ヘッダー フィールドを表します。たとえば、SEGNAM、MANDT、DOCNUM などです。

tRFC 操作の形式の詳細については、「tRFC 操作 のメッセージ スキーマ」を参照してください。

IDOC 受信操作のメッセージ アクション

次の表は、Receive 操作と ReceiveIdoc 操作のメッセージ アクションを示しています。

Operation アクション
受信 [MESSAGE_VERSION]/Idoc/[VERSION] /[IDOCTYP]/[CIMTYP]/[RELNO]/Receive http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS05//620/Receive
応答の受信 [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 応答 [MESSAGE_VERSION]/Idoc/ReceiveIdoc/response http://Microsoft.LobServices.Sap/2007/03/Idoc/ReceiveIdoc/response