BizTalk Serverを使用して SAP から IDOC を受信する

IDOC を受信するには、SAP アダプターが RFC サーバーとして機能し、SAP から特別な RFC 呼び出しを受信する必要があります。 SAP アダプターは、RFC サーバーまたは tRFC サーバーとして機能する IDOC を受信できます。 アダプターが tRFC サーバーとして動作する IDOC を受信する方法の詳細については、「BizTalk Serverを使用してトランザクション コンテキストで SAP から IDOC を受信する」を参照してください。

SAP アダプターは、IDOC を受け取る 2 つの異なる操作を表示します。

  • 受信 操作により、アダプターは厳密に型指定されたスキーマを持つ IDOC を受信できます。

  • ReceiveIdoc 操作を使用すると、アダプターは、弱く型指定されたスキーマを持つ IDOC を受信できます。 この操作は、idocData> タグの下にある XML メッセージ内の文字列として IDOC を<受け取ります。

    アダプター側では、 ReceiveIDocFormat バインディング プロパティの値を指定して、アダプターが受け取る IDOC の形式を指定できます。

  • Typed は、アダプターが厳密に型指定されたスキーマを持つ IDOC を受信することを指定します。 これにより、XML IDOC が生成されます。

  • String は、アダプターが弱く型指定されたスキーマを持つ IDOC を受信することを指定します。 これにより、idocData> タグを含む XML メッセージが<生成されます。

  • Rfc は、アダプターが任意の形式で IDOC を受信することを指定します。

    IDOC を受信する場合、SAP アダプターは、アダプター クライアントがオーケストレーションで使用できるメッセージ コンテキスト プロパティのセットもサポートしています。 プロパティの一覧については、「 IDOC を受信するためのメッセージ コンテキスト プロパティ」を参照してください。

    SAP アダプターが SAP システムからの IDOC の受信をサポートする方法の詳細については、「SAP の IDOC に対する操作」を参照してください。 IDOC を受信するための SOAP メッセージの構造の詳細については、「IDOC 操作のメッセージ スキーマ」を参照してください。

SAP システムから IDOC を受信するための BizTalk シナリオ

次の表に、SAP システムから IDOC を受信するための BizTalk の主要なシナリオを示します。

SAP からのアダプターへの入力 BizTalk 処理 出力
IDOC (tRFC インターフェイス経由) メタデータのデザイン時間

1. バインド プロパティ GenerateFlatFileCompatibleIdocSchema を True に設定 します
2. アダプター サービス アドインを使用して、特定の IDOC の 受信 操作のスキーマを生成します。
3. Binding プロパティ ReceiveIdocFormat を Typed に設定します。

オーケストレーションのデザイン時間

1. XML IDOC を受信します。
2. フラット ファイル アセンブラーを使用して、XML IDOC をフラット ファイルに変換します。
フラット ファイル IDOC
IDOC (tRFC インターフェイス経由) メタデータのデザイン時間

1. バインド プロパティ GenerateFlatFileCompatibleIdocSchema を True に設定 します
2. アダプター サービス アドインを使用して、特定の IDOC の 受信 操作のスキーマを生成します。
3. Binding プロパティ ReceiveIdocFormat を Typed に設定します。

オーケストレーションのデザイン時

- XML IDOC を受信します。
XML IDOC
IDOC (tRFC インターフェイス経由) メタデータのデザイン時間

1. バインド プロパティ GenerateFlatFileCompatibleIdocSchema を True に設定 します
2. アダプター サービス アドインを使用して、特定の IDOC の 受信 操作のスキーマを生成します。
3. バインド プロパティ ReceiveIdocFormat を String に設定 します

オーケストレーションのデザイン時間

1. idocData タグでフラット ファイル IDOC を <含む XML メッセージを> 受信します。
2. 受信ポート構成で WCF アダプターの XPath サポートを使用して、XML メッセージからフラット ファイル IDoc を抽出します。 次に例を示します。
/*[local-name()='ReceiveIdoc']/*[local-name()='idocData']
3. フラット ファイル逆アセンブラーを使用して、フラット ファイル IDOC を XML IDOC に変換します。

大事な この方法を使用すると、新しい WCF ベースの SAP アダプターを使用して IDOC を受信し、既存の BizTalk SAP アダプターから IDOC を受信するために作成された既存の BizTalk プロジェクトに直接適用できます。 これは、バージョン番号がリリース番号 (SYSREL) より小さい IDOC を受信する場合にも推奨される方法です。
XML IDOC
IDOC (tRFC インターフェイス経由) メタデータのデザイン時間

1. アダプター サービス アドインを使用して、IDOC ノードから ReceiveIdoc 操作のスキーマを生成します。
2. バインド プロパティ ReceiveIdocFormat を String に設定 します

オーケストレーションのデザイン時間

- idocData> タグの文字列として表される IDOC を含む XML メッセージを<受信します。
XML メッセージ内のフラット ファイル IDOC

SAP システムから IDOC を受信する方法

BizTalk Serverを使用して SAP システムで操作を実行するには、「SAP アプリケーションを作成するための構成要素」で説明されている手続き型タスクが含まれます。 SAP システムから IDOC を受信するには、次のタスクを実行します。

  1. BizTalk プロジェクトを作成し、SAP システムで呼び出す IDOC のスキーマを生成します。 スキーマの生成中に、前の表に示すように、必要なバインド プロパティを設定してください。 バインド プロパティを設定する方法については、「 SAP アダプターのバインド プロパティを構成する」を参照してください。

  2. SAP システムからメッセージを送受信するためのメッセージを BizTalk プロジェクトに作成します。

  3. SAP システムから IDOC を受信するオーケストレーションを作成します。

  4. BizTalk プロジェクトをビルドして展開します。

  5. 物理送受信ポートを作成して BizTalk アプリケーションを構成します。

  6. BizTalk アプリケーションを起動します。

    このトピックでは、これらのタスクを実行する手順について説明します。

このトピックに基づくサンプル

このトピックに基づくサンプル ReceiveIDOC とReceiveIDOC_SYSRELは、BizTalk アダプター パックでも提供されています。 詳細については、「 SAP アダプターのサンプル」を参照してください。

スキーマの生成

ORDERS03の Receive 操作のスキーマを生成する必要があります /IDOC /ORDERS/ORDERS03 ノードの V3.620 IDOC。 特定の IDOC のスキーマを生成する方法については 、「SAP での IDOC 操作のメタデータの参照、検索、取得 」を参照してください。 スキーマの生成中に、次のプロパティも設定できます。

  • GenerateFlatFileCompatibleIDoc – BizTalk フラット ファイル パーサーを BizTalk シナリオで使用してフラット ファイル IDOC をサポートできるように、appinfo> タグを生成<します。

  • FlatFileSegmentIndicator – IDOC スキーマ <appinfo> タグにセグメント定義名またはセグメント型名を含める必要があるかどうかを示します。 これは、使用するユーザーが SAP と間でフラット ファイル IDOC を送受信する場合に適用されます。 GenerateFlatFileCompatibleIDoc が false に設定されている場合、FlatFileSegmentIndicator バインド プロパティは無視されます。

重要

受信 IDOC 呼び出しのスキーマを生成するため、アダプター サービス BizTalk プロジェクト アドインの [コントラクトの種類の選択] ドロップダウン リストから [サービス (受信操作)] を選択してください。

メッセージとメッセージの種類の定義

前に生成したスキーマでは、オーケストレーション内のメッセージに必要な "型" について説明します。 通常、メッセージは変数であり、対応するスキーマによって定義される型です。 最初の手順で生成したスキーマを、BizTalk プロジェクトのオーケストレーション ビューからメッセージにリンクする必要があります。

このトピックでは、2 つのメッセージを作成する必要があります。1 つは SAP システムから IDOC を受信し、もう 1 つは応答を送信するメッセージです。

メッセージを作成し、スキーマにリンクするには、次の手順を実行します。

  1. BizTalk プロジェクトに新しいオーケストレーションを追加します。

  2. まだ開いていない場合は、BizTalk プロジェクトをオーケストレーション ビューで開きます。 [ 表示] をクリックし、[ その他のウィンドウ] をポイントして、[ オーケストレーション ビュー] をクリックします。

  3. オーケストレーション ビューで、[メッセージ] を右クリックし、[新しいメッセージ] をクリックします。

  4. 新しく作成したメッセージを右クリックし、[ プロパティ ウィンドウ] を選択します。

  5. Message_1[プロパティ] ウィンドウで、次の操作を行います。

    プロパティ 目的
    識別子 Request」と入力します
    メッセージ型 ドロップダウン リストから [ スキーマ] を展開し、[ ReceiveIDOC.SAPBindingSchema2] を選択します。 ここで、ReceiveIDOC は BizTalk プロジェクトの名前です。 SAPBindingSchema2 は、Receive 操作用に生成されたスキーマです。
  6. 手順 2 を繰り返して、新しいメッセージを作成します。 新しいメッセージの [プロパティ ] ウィンドウで、次の操作を行います。

    プロパティ 目的
    識別子 Response」と入力します
    メッセージ型 ドロップダウン リストから [ スキーマ] を展開し、[ ReceiveIDOC.SAPBindingSchema3] を選択します。

オーケストレーションの設定

SAP システムから IDOC を受信するためにBizTalk Serverを使用するには、BizTalk オーケストレーションを作成する必要があります。 一般的なシナリオでは、SAP アダプターは SAP システムから IDOC 呼び出しを受け取り、要求を処理して、SAP システムに応答を渡します。 これをオーケストレーションの一部として実現するには、オーケストレーションに次のものが含まれている必要があります。

  • SAP システムから IDOC を受信し、応答を送信する双方向受信ポート。

  • 図形の送受信。

  • メッセージ図形を構築し、その中にメッセージ割り当て図形を作成して、SAP システムに送信される応答を生成します。

    Note

    オーケストレーションに SAP システムから IDOC を受信するための双方向受信ポート (要求応答) が含まれている場合、オーケストレーションは SAP システムに応答を送信する必要があります。 そうでない場合、SAP システムは次の IDOC を送信しません。 ただし、一方向の受信ポートの場合、オーケストレーションは SAP システムに応答を送信する必要はありません。

  • SAP システムから受信した IDOC をフォルダーに送信する一方向送信ポート。

    SAP システムから IDOC を受信するためのサンプル オーケストレーションは次のようになります。

    IDOC を受信するオーケストレーション

メッセージ図形の追加

メッセージ図形ごとに次のプロパティを指定してください。 [図形] 列に表示される名前は、上記のオーケストレーションに表示されるメッセージ図形の名前です。

図形 図形の種類 プロパティ
ListenToSAP 受信 - 名前ListenToSAP に設定する

- アクティブ化True に設定する
SaveIDOC Send - 名前SaveIDOC に設定する
SendResponse Send - 名前SendResponse に設定する

メッセージの構築図形の追加

オーケストレーション内で、応答を生成して SAP システムに送信する必要があります。 これを行うには、メッセージの構築図形を追加し、その中にメッセージ割り当て図形をオーケストレーションに追加する必要があります。 メッセージ割り当て図形は、SAP システムに送信される応答メッセージを生成するコードを呼び出します。 [メッセージの割り当て] 図形では、SAP システムに送信される応答のアクションも設定されます。

重要

オーケストレーションに SAP システムから IDOC を受信するための双方向受信ポート (要求応答) が含まれている場合、オーケストレーションは SAP システムに応答を送信する必要があります。 そうでない場合、SAP システムは次の IDOC を送信しません。 ただし、一方向の受信ポートの場合、オーケストレーションは SAP システムに応答を送信する必要はありません。

メッセージの構築図形の場合は、 Message Constructed プロパティを Response に設定します。

応答を生成するコードは、BizTalk プロジェクトと同じ Visual Studio ソリューションの一部である可能性があります。 応答メッセージを生成するためのサンプル コードは次のようになります。

namespace IdocReceiveResponseMessageCreator  
{  
    public class IdocReceiveResponseMessageCreator  
    {  
        private static XmlDocument Message;  
        private static string XmlFileLocation;  
        private static string ResponseDoc;  

        public static XmlDocument XMLMessageCreator()  
        {  
            XmlFileLocation = "C:\\test\\in";  
            try  
            {  
                ResponseDoc = (Directory.GetFiles(XmlFileLocation, "*.xml", SearchOption.TopDirectoryOnly))[0];  
            }  
            catch (Exception ex)  
            {  
                Console.WriteLine("Trying to get XML from: " + XmlFileLocation);  
                Console.WriteLine("EXCEPTION: " + ex.ToString());  
                throw ex;  
            }  
            //Create Message From XML  
            Message = new XmlDocument();  
            Message.PreserveWhitespace = true;  
            Message.Load(ResponseDoc);  
            return Message;  
        }   
    }  
}  

Note

プロジェクトをビルドすると、プロジェクト ディレクトリに IdocReceiveResponseMessageCreator.dll が作成されます。 この DLL をグローバル アセンブリ キャッシュ (GAC) に追加する必要があります。

次の式を追加して、メッセージ割り当て図形からこのコードを呼び出し、SAP システムに送信される応答のアクションを設定します。 式を追加するには、[メッセージの割り当て] 図形をダブルクリックして式エディターを開きます。

Response = IdocReceiveResponseMessageCreator.IdocReceiveResponseMessageCreator.XMLMessageCreator();  
Response(WCF.Action)= "http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS03//620/Receive/response";  

重要

応答メッセージに対してアクションを明示的に設定する必要があります。 アクションを設定しない場合、WCF-Custom アダプターは要求アクションに "Response" を追加してアクション メッセージに到着します。 そのため、応答メッセージのアクションは http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS03//620/ReceiveResponseになります。 ただし、sapBinding では、要求アクションに "/response" を追加することによって、応答アクションが想定されます (例: http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS03//620/Receive/response)。

ポートの追加

論理ポートには、次のプロパティを指定してください。 [ ポート ] 列に表示される名前は、オーケストレーションに表示されるポートの名前です。

Port プロパティ
ReceiveIDOCPort - 識別子ReceiveIDOCPort に設定する

- ReceiveIDOCPortType に設定する

- 通信パターンRequest-Response に設定する

- 通信方向Receive-Send に設定する
GetIDOCPort - 識別子GetIDOCPort に設定する

- GetIDOCPortType に設定する

- 通信パターン一方向に設定する

- [通信の方向] を [送信] に設定する

重要

オーケストレーションに SAP システムから IDOC を受信するための双方向受信ポート (要求応答) が含まれている場合、オーケストレーションは SAP システムに応答を送信する必要があります。 そうでない場合、SAP システムは次の IDOC を送信しません。

フラット ファイル アセンブラーの追加

受信 IDOC メッセージをフラット ファイルに変換するには、アセンブラーを追加する必要があります。

フラット ファイル アセンブラーを追加するには
  1. BizTalk プロジェクトを右クリックし、[ 追加] をポイントして、[ 新しい項目] を選択します。

  2. ダイアログ ボックスから、次の操作を行います。

    プロパティ 目的
    Categories パイプライン ファイル
    Visual Studio のインストール済みテンプレート 送信パイプライン
    名前 SendIDOC
  3. これにより、パイプライン Designerが開きます。 BizTalk パイプライン コンポーネント ツールボックスから、フラット ファイル アセンブラー パイプライン コンポーネントを送信パイプラインの Assembl ステージにドラッグします。

  4. [ パイプライン コンポーネントのプロパティ] ビューで、 [ドキュメント スキーマ] プロパティの値を指定します。 ドロップダウンから、IDOC 受信操作に対応するスキーマを選択してください。

アクション図形のメッセージを指定し、ポートに接続する

次の表では、アクション図形のメッセージを指定し、ポートにリンクするために設定するプロパティとその値を指定します。 [図形] 列に表示される名前は、上記のオーケストレーションに表示されるメッセージ図形の名前です。

図形 プロパティ
ListenToSAP - メッセージ要求に設定する

- 操作ReceiveIDOCPort.ReceiveIDOC.Request に設定する
SaveIDOC - メッセージ要求に設定する

- 操作GetIDOCPort.ReceiveIDOC.Request に設定する
SendResponse - [メッセージ][応答] に設定する

- 操作ReceiveIDOCPort.ReceiveIDOC.Response に設定する

これらのプロパティを指定すると、メッセージの図形とポートが接続され、オーケストレーションが完了します。

BizTalk ソリューションをビルドし、BizTalk Serverに展開する必要があります。 詳細については、「オーケストレーションのビルドと実行」を参照してください。

BizTalk アプリケーションの構成

BizTalk プロジェクトを展開すると、前に作成したオーケストレーションが、BizTalk Server管理コンソールの [オーケストレーション] ウィンドウの下に一覧表示されます。 アプリケーションを構成するには、BizTalk Server管理コンソールを使用する必要があります。 アプリケーションの構成の詳細については、「アプリケーション を構成する方法」を参照してください。

アプリケーションの構成には、次の作業が含まれます。

  • アプリケーションのホストの選択。

  • オーケストレーションで作成したポートを、BizTalk Server管理コンソールの物理ポートにマッピングします。 このオーケストレーションでは、次の操作を行う必要があります。

    • 送信場所と物理送信ポートを定義します。 この場所には、SAP システムからの IDOC が含まれます。

      重要

      XMLTransmit パイプラインの場合は、必ず [ SendIDOC] を選択します。 このパイプラインは、BizTalk プロジェクトの一部として作成しました。

    • WCF-Custom または WCF-SAP 受信ポートを定義します。 このポートは、SAP システムから受信 IDOC を受信し、オーケストレーションに渡します。 このポートは、応答も SAP システムに送信します。 ポートを作成する方法については、「 SAP アダプターへの物理ポート バインドを手動で構成する」を参照してください。

      重要

      バインド プロパティ ReceiveIDocFormatTyped に設定されていることを確認します。

      重要

      バインド プロパティ EnableBizTalkCompatibilityMode が true に設定されている場合は、BizTalk アプリケーション 、つまりプロジェクトが配置されているアプリケーションのリソースとして、SAP アダプターの BizTalk プロパティ スキーマ DLL を追加してください。 リソースを追加する手順については、「SAP アダプターに関する 運用上の問題のトラブルシューティング」を参照してください。

      Note

      アダプター サービス BizTalk プロジェクト アドインを使用してスキーマを生成すると、ポートとそれらのポートに設定するアクションに関する情報を含むバインド ファイルも作成されます。 BizTalk 管理コンソールからこのバインド ファイルをインポートして、送信ポート (送信呼び出し用) または受信ポート (受信呼び出し用) を作成できます。 詳細については、「 SAP へのポート バインド ファイルを使用して物理ポート バインドを構成する」を参照してください。

    また、IdocReceiveResponseMessageCreator プロジェクトのアセンブリを BizTalk アプリケーションに追加する必要もあります。 このプロジェクトを作成して、SAP システムに送信される応答を生成しました。 そのためには次を行います。

  1. BizTalk Server管理コンソールの左側にあるコンソール ツリーで、バインドをインポートした BizTalk アプリケーションの下で、[リソース] を右クリックし、[追加] をポイントし、[BizTalk アセンブリ] をクリックします。

  2. [ リソースの追加 ] ダイアログ ボックスで、[ 追加 ] をクリックし、IdocReceiveResponseMessageCreator.dll を含むフォルダーに移動します。 ファイルを選択し、[ 開く] をクリックします。

  3. [ リソースの追加 ] ダイアログ ボックスで、[OK] をクリック します

アプリケーションの起動

SAP システムから IDOC を受信するには、BizTalk アプリケーションを起動する必要があります。 BizTalk アプリケーションを起動する手順については、「 オーケストレーションを開始する方法」または「 アプリケーションを起動する方法」を参照してください。

この段階で、次のことを確認します。

  • 受信 IDOC をファイルの場所に保存する FILE 送信ポートが実行されている

  • SAP システムから IDOC を受信するための WCF-Custom または WCF-SAP 受信ポートが実行されています。

  • 操作の BizTalk オーケストレーションが実行されています。

操作の実行

アプリケーションを実行した後、SAP システムに移動し、アダプターに IDOC を送信する必要があります。 アダプターは IDOC を受け取り、オーケストレーションの一部として指定されたファイルの場所に保存します。

考えられる例外

BizTalk Serverを使用して SAP システムから IDOC を受信するときに発生する可能性がある例外については、「SAP アダプターでの例外とエラー処理」を参照してください。

ベスト プラクティス

BizTalk プロジェクトを展開して構成したら、バインド ファイルと呼ばれる XML ファイルに構成設定をエクスポートできます。 バインド ファイルを生成したら、同じオーケストレーションに対して送信ポートや受信ポートなどを作成する必要がないように、ファイルから構成設定をインポートできます。 バインド ファイルの詳細については、「 SAP アダプター バインドを再利用する」を参照してください。

参照

BizTalk アプリケーションの開発