SAP での IDOC に対する操作

IDOC は、SAP および SAP 以外のシステムと非同期通信するために SAP がサポートする標準化された EDI に似たドキュメントです。 IDOC は、取引先の SAP システムや外部プログラムとの間など、販売注文などの "ビジネス" ドキュメントの送受信に使用されます。

SAP システムでは、IDOC を送受信するためのさまざまなポートの種類 (ファイル ポート、CPIC ポートなど) がサポートされていますが、SAP アダプターは tRFC ポートを介した IDOC の送受信をサポートしています。

IDOC を送信する操作

SAP に対するすべての IDOC 呼び出しは内部的に tRFC 呼び出しとして扱われ、アダプターは tRFC クライアントとして機能し、SAP で RFC を呼び出して IDOC を送信します。 他の tRFC クライアント呼び出しと同様に、アダプター クライアントは必要に応じて GUID をアダプターに渡し、その GUID を SAP システムでの呼び出しに使用するトランザクション ID (TID) に関連付けます。 (アダプター クライアントが GUID を渡さない場合、アダプターは独自の GUID を生成します)。GUID は、応答メッセージでアダプター クライアントに返されます。 アダプター クライアントは、この GUID を使用して、SAP システム上の TID を確認できます。 アダプターによって tRFC 呼び出しに使用される実際の SAP TID は、SAP バインディング ConvertGuidToTid で特別な静的メソッドを呼び出すことによって取得できます。 実際の TID を使用すると、SAP システムの問題のトラブルシューティングに役立つ場合があります。

IDOC を送信する呼び出しが完了したら、SAP システムで TID を確認する必要があります。 これにより、SAP システムはそのデータベースから TID を削除できます。 アダプター クライアントは、SAP システム上の TID を確認できます。

  • 明示的に、アダプターで RfcConfirmTransID 操作を呼び出します。 この操作は GUID (上記の応答メッセージで返されます) を受け取り、アダプターで SAP システム上の関連付けられている TID を確認します。

  • AutoConfirmSentIdocs バインド プロパティを設定して暗黙的に指定します。 このバインディング プロパティが true の場合、アダプターは IDOC を SAP システムに送信した後、TID を自動的にコミットします。 詳細については、「 BizTalk Adapter for mySAP Business Suite のバインド プロパティ 」を参照してください。

    SAP アダプターは、次の RFC を使用して IDOC を送信します。

  • INBOUND_IDOC_PROCESS。 この関数モジュールは、4.0 より前の SAP リリースで使用されます。

  • IDOC_INBOUND_ASYNCHRONOUS。 この関数モジュールは、SAP リリース 4.0 以降に使用されます。

セグメント データを含む IDOC を複数行にわたって送信する

IDOC はセグメントで構成されます。 IDOC フラット・ファイルの各セグメント項目には、セグメント・ヘッダー情報 (DOCNUM フィールドを含む) とセグメント・データが含まれます。 一部の IDOC では、セグメント データを複数の行に分割できます。 次に例を示します。

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  

WCF ベースの SAP アダプターは、このような IDOC を SAP システムに送信することをサポートしています。 このような IDOC の送信をサポートするために、SAP アダプターは、各セグメント データが前のセグメント データの継続であるかどうか、または新しいセグメント データであるかどうかを判断します。 SAP アダプターは、各セグメント ヘッダーを解析し、DOCNUM フィールドを探してこれを決定します。 セグメント データが 2 行に分割されている場合、2 行目にはセグメント ヘッダーがないため、SAP アダプターは DOCNUM フィールドを見つけることができません。 そのため、SAP アダプターは、それが前のセグメント データの継続であると判断できます。

たとえば、上に示した IDOC の表現では、SAP アダプターでは "Segment data wrapped from the previous line" に DOCNUM フィールドが見つからないので、行が前のセグメント データの継続であると判断できます。 運用環境での IDOC フラット ファイルのサイズを考慮すると、各セグメント データに対してこのようなチェックを実行すると、処理時間が長くなる可能性があります。

Note

アダプターは、復帰ライン フィード (CRLF) ではなく DOCNUM フィールドを使用して、IDOC データから各セグメント レコードを識別および抽出します。 コントロールおよびデータ レコードの DOCNUM フィールドが無効な場合、または一部が空白の場合、アダプターは IDOC の解析に失敗します。 そのため、IDOC は SAP システムに送信されません。

IDOC を送信する操作

SAP システムへの IDOC の送信では、次の操作がサポートされています。

  • 送信。 この操作を使用して、厳密に型指定されたスキーマを使用して IDOC を SAP システムに送信します。 この操作のスキーマでは、制御レコード フィールドとデータ レコード フィールド (セグメント ヘッダーやセグメント フィールドを含む) が公開されます。 Send 操作は、IDocType + CimType + ReleaseNumber + Version の組み合わせに固有です。

    この操作は IDOC ごとに表示され、アダプター サービス参照プラグインの追加またはアダプター サービス アドインの特定の IDOC ノードで使用できます。

    Note

    送信操作を正常に実行するには、SAP システムで関連する権限が必要です。 詳しくは、

  • SendIdoc。 この操作を使用して、弱く型指定されたスキーマを使用して IDOC を SAP システムに送信します。 この操作のスキーマは、IDOC を制御レコードとデータ レコードで構成される単一の文字列フィールドとして公開します。 SendIdoc 操作は、IDOC 文字列と GUID をパラメーターとして受け取ります。

    これは、SAP システムによって公開されるすべての IDOC に対して 1 回の操作であり、アダプター サービス参照プラグインの追加またはアダプター サービス アドインのルート IDOC ノードで使用できます。

    詳細情報は、次のとおりです。

  • BizTalk Serverを使用して SAP システムに IDOC を送信する方法については、「BizTalk Serverを使用して SAP に IDOC を送信する」を参照してください。

  • WCF サービス モデルを使用して SAP システムに IDOC を送信する方法については、「 WCF サービス モデルを使用して SAP に IDOC を送信する」を参照してください。

  • IDOC を送信するためのメッセージ構造と SOAP アクションについては、「 IDOC 操作のメッセージ スキーマ」を参照してください。

IDOC を受信する操作

IDOC を受け取るために、SAP アダプターは tRFC サーバーまたは RFC サーバーとして動作できます。

  • アダプターを tRFC サーバーとして動作させるには、コンピューター上の TID データベースのバインド プロパティ TidDatabaseConnectionString を接続文字列に設定する必要があります。 tRFC サーバー シナリオの場合、アダプターは SAP システムからの tRFC クライアント呼び出しを受け入れて IDOC を受信します。

  • アダプターが RFC サーバーとして動作するには、 TidDatabaseConnectionString を null (既定値) にする必要があります。 RFC サーバーのシナリオでは、アダプターは SAP システムからの RFC クライアント呼び出しを受け入れて IDOC を受信します。

    IDOC の送受信には、次の RFC が使用されます。IDOC を送信する場合、アダプターはこれらの RFC を使用しますが、IDOCS を受信する場合は SAP システムで使用されます。

  • INBOUND_IDOC_PROCESS。 この関数モジュールは、4.0 より前の SAP リリースで使用されます。

  • IDOC_INBOUND_ASYNCHRONOUS。 この関数モジュールは、SAP リリース 4.0 以降に使用されます。

    SAP システムから IDOC を受信するには、次の操作がサポートされています。

  • 受信します。 この操作を使用して、厳密に型指定されたスキーマを使用して SAP システムから IDOC を受信します。 この操作のスキーマは、制御レコード・フィールドと、セグメント・ヘッダーおよびセグメント・フィールドを含むデータ・レコード・フィールドを公開します。

    この操作は IDOC ごとに表示され、アダプター サービス参照プラグインの追加またはアダプター サービス アドインの特定の IDOC ノードで使用できます。

    Note

    受信操作を正常に実行するには、SAP システムで関連する権限が必要です。 詳しくは、

    Note

    Receive 操作を使用すると、複数の IDOC を受信することもできます。

  • ReceiveIdoc。 弱く型指定されたスキーマを使用して SAP システムから IDOC を受信するには、この操作を使用します。 この操作のスキーマは、IDOC を制御レコードとデータ レコードで構成される単一の文字列フィールドとして公開します。 この操作は、idocData> タグの下にある XML メッセージ内の文字列として IDOC を<受け取ります。

    これは、SAP システムによって公開されるすべての IDOC に対して 1 回の操作であり、アダプター サービス参照プラグインの追加またはアダプター サービス アドインのルート IDOC ノードで使用できます。

    IDOC を受信する場合、SAP アダプターはさまざまなメッセージ形式をサポートします。これは、SAP アダプターによって公開されるバインド プロパティ ReceiveIDocFormat の値として指定できます。

  • "Typed" に設定されている場合、XML スキーマは、受信する特定の IDOC に厳密に型指定されます。 (このメッセージのスキーマは、受信操作から確認できます。スキーマは IDOC によって異なります)。 これにより、XML IDOC が生成されます。

  • "String" に設定すると、受信 IDOC データは String 値として返されます。 (このメッセージのスキーマは、ReceiveIdoc 操作から確認できます)。 これにより、idocData> タグを含む XML メッセージが<生成されます。

  • "Rfc" に設定されている場合、メッセージ スキーマは、受信 IDOC のバージョンに応じて、RFC 操作IDOC_INBOUND_ASYNCHRONOUSまたはINBOUND_IDOC_PROCESSの RFC (または tRFC) スキーマと一致します。 このバインディング プロパティを指定する場合は、IDOC_INBOUND_ASYNCHRONOUSまたは INBOUND_IDOC_PROCESS RFC を使用して IDOC を受信する必要があります。 最初の 2 つのオプションでは、アダプターはこの RFC を内部的に使用します。 このオプションでは、この RFC を明示的に使用して IDOC を受信します。

    IDOC の受信に使用する操作は、アダプターによって出力される IDOC データの形式と一致している必要があります。 次の表に、SAP から IDOC を受信できるさまざまな組み合わせの概要を示します。

を使用して IDOC を受信するには バインド プロパティ ReceiveIDOCFormat を に設定します。
受信 操作 型指定あり
ReciveIdoc 操作 String
RFC のIDOC_INBOUND_ASYNCHRONOUS Rfc
RFC のINBOUND_IDOC_PROCESS Rfc

別のバインド プロパティ PadReceivedIdocsWithSpaces は、受信形式が "String" である場合に、受信した IDOC を省略可能なフィールドに空白で埋め込みます。 これにより、以前のバージョンのアダプターを使用して受信した IDOC データ形式との互換性が確保されます。

バインド プロパティの詳細については、「 BizTalk Adapter for mySAP Business Suite Binding Properties」を参照してください。

詳細情報は、次のとおりです。

送信操作または受信操作を使用するための SAP 承認

送受信操作を使用して厳密に型指定されたスキーマを使用して IDOC を送受信すると、SAP アダプターは内部的に IDOCTYPE_READ_COMPLETE RFC を呼び出して IDOC のメタデータを取得します。 この RFC を呼び出す場合は、SAP で次の承認が必要です。

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

SAP の SU01 トランザクションを使用して、権限オブジェクトを追加できます。 トランザクションの詳細については、SAP 管理者に問い合わせるか、SAP ドキュメントを参照してください。

参照

アダプターを使用して実行できる操作