次の方法で共有


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

IDOC の受信には、SAP から特別な RFC 呼び出しを受信するための RFC サーバーとして機能する SAP アダプターが含まれます。 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. Consume Adapter Service アドインを使用して、特定の IDOC の 受信 操作のスキーマを生成します。
3. バインド プロパティ ReceiveIdocFormat を Typed に設定します。

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

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

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

オーケストレーション設計時

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

1. バインド プロパティ GenerateFlatFileCompatibleIdocSchema を True に設定 します
2. Consume Adapter Service アドインを使用して、特定の IDOC の 受信 操作のスキーマを生成します。
3. バインド プロパティ ReceiveIdocFormat を 文字列に設定します。

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

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 を 文字列に設定します。

オーケストレーションの設計時

- IDOC が <idocData> タグ内の文字列として表された 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.V3.620 IDOCの受信操作のスキーマを、/IDOC/ORDERS/ORDERS03ノードの下で生成する必要があります。 特定の IDOC のスキーマを生成する方法については 、SAP の IDOC 操作のメタデータの参照、検索、および取得 を参照してください。 スキーマの生成中に、次のプロパティも設定できます。

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

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

Von Bedeutung

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

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

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

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

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

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

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

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

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

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

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

    これを使用する 目的
    識別子 応答」と入力します。
    メッセージの種類 ドロップダウン リストから [ スキーマ] を展開し、[ ReceiveIDOC.SAPBindingSchema3] を選択します。

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

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

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

  • 形状を送信および受信します。

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

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

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

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

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

メッセージ図形の追加

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

図形の種類 特性
リッスン・トゥ・エスエーピー 受け取る - 名前ListenToSAP に設定する

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

メッセージ構築シェイプの追加

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

Von Bedeutung

オーケストレーションに 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;  
        }   
    }  
}  

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

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

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

Von Bedeutung

応答メッセージに対してアクションを明示的に設定する必要があります。 アクションを設定しない場合、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)。

ポートの追加

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

港 / ポート 特性
ReceiveIDOCPort - 識別子ReceiveIDOCPort に設定する

- ReceiveIDOCPortType に設定する

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

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

- GetIDOCPortType に設定する

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

- 通信方向送信に設定する

Von Bedeutung

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

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

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

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

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

    これを使用する 目的
    カテゴリ パイプラインファイル
    Visual Studio にインストールされたテンプレート 送信パイプライン
    名前 SendIDOC
  3. パイプライン デザイナーが開きます。 BizTalk パイプライン コンポーネント ツールボックスから、フラット ファイル アセンブラー パイプライン コンポーネントを送信パイプラインのアセンブル ステージにドラッグします。

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

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

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

特性
リッスン・トゥ・エスエーピー - メッセージ要求に設定する

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

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

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

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

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

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

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

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

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

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

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

      Von Bedeutung

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

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

      Von Bedeutung

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

      Von Bedeutung

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

      Consume Adapter Service BizTalk Project アドインを使用してスキーマを生成すると、ポートに関する情報と、それらのポートに設定するアクションを含むバインディング ファイルも作成されます。 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 アプリケーションの開発