次の方法で共有


BizTalk Server を使用して SAP で tRFC を呼び出す

トランザクション リモート関数呼び出し (tRFC) では、SAP システムで RFC を 1 回だけ実行できます。 SAP アダプターによって表示される任意の RFC を tRFC として呼び出すことができます。 tRFC の呼び出しは、RFC の呼び出しと似ています ( BizTalk Server を使用した SAP での RFC の呼び出しに関するページを参照)、次の相違点があります。

  • SAP アダプターは、RFC (RFC) とは異なるノード (TRFC) の下に TRFC を表示します。

  • tRFC 操作には、SAP アダプターによって tRFC の SAP トランザクション ID にマップされる GUID パラメーターが含まれます。

  • tRFC を呼び出した後、RfcConfirmTransID 操作を呼び出して、SAP システム上の tRFC を確認 (コミット) する必要があります。 アダプター サービス コンシューム アドインのTRFCノード直下にこの操作が表示されます。

    SAP アダプターが tRFC の呼び出しをサポートする方法の詳細については、 SAP での tRFC に対する操作を参照してください。 tRFC を呼び出すための SOAP メッセージの構造の詳細については、「tRFC 操作のメッセージ スキーマ」を参照してください。

BizTalk Server を使用して SAP システムで tRFC を呼び出す方法

BizTalk Server を使用して SAP システムで操作を実行するには、「 SAP アプリケーションを作成するための構成要素」で説明されている手順に従います。 SAP システムで tRFC を呼び出すには、次のタスクを実行します。

  1. BizTalk プロジェクトを作成し、SAP システムで呼び出す tRFC のスキーマを生成します。 SAP システムで TID をコミットするには、 RfcConfirmTransID 操作のスキーマも生成する必要があります。

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

  3. SAP システムで tRFC を呼び出すオーケストレーションを作成し、SAP アダプターによる tRFC 呼び出しに応答して SAP システムに作成された TID をコミットします。

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

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

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

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

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

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

スキーマの生成

このトピックでは、SAP アダプターを使用して tRFC を呼び出す方法を示すために、次のスキーマを生成します。

  • BAPI_SALESORDER_CREATEFROMDAT2 のtRFCを行います。

  • RfcConfirmTransID 操作。 この操作を使用して、SAP システムで作成された TID をコミットする必要があります。 SAP システムはこの呼び出しを受け取ると、システムから TID を削除します。

    スキーマの生成方法の詳細については 、SAP での tRFC 操作のメタデータの参照、検索、および取得 を参照してください。

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

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

このトピックでは、4 つのメッセージ (tRFC を呼び出す要求応答メッセージ セットと、RfcConfirmTransID 操作を呼び出す別の要求応答メッセージ セット) を作成する必要があります。

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

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

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

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

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

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

    識別子を設定 メッセージの種類を設定する
    [応答] tRFC_Client.SAPBindingSchema1.BAPI_SALESORDER_CREATEFROMDAT2Response
    TIDRequest tRFC_Client.SAPBindingSchema3.RfcConfirmTransID
    TIDResponse tRFC_Client.SAPBindingSchema3.RfcConfirmTransIDResponse

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

SAP システムで tRFC を呼び出すために BizTalk Server を使用するには、BizTalk オーケストレーションを作成する必要があります。 このオーケストレーションでは、定義された受信場所に要求メッセージをドロップします。 オーケストレーションはこのメッセージを使用して SAP システムに渡します。 応答は SAP から受信され、別の場所に保存されます。 応答メッセージには GUID が含まれています。 オーケストレーションには、応答から GUID を抽出し、RfcConfirmTransID 操作のスキーマに準拠するメッセージを構築するメッセージの構築図形が含まれています。 RfcConfirmTransID 操作を呼び出すメッセージは、パラメーターとして GUID を使用して SAP システムに送信されます_ SAP システムで tRFCs を呼び出すための一般的なオーケストレーションの後に RfcConfirmTransID 操作が含まれます。

  • SAP システムにメッセージを送信し、応答を受信する図形を送受信します。

  • メッセージの構築図形とその内部で、 RfcConfirmTransID 操作のメッセージを構築するメッセージの割り当て図形。

  • tRFC を呼び出すために SAP システムに送信する要求メッセージを受信する一方向の受信ポート。

  • tRFC を呼び出して応答を受信するメッセージを送信する双方向送信ポート。

  • RfcConfirmTransID 操作を呼び出して応答を受信するメッセージを送信する双方向送信ポート。

  • SAP システムからフォルダーに応答を送信する 2 つの一方向送信ポート。

    サンプル オーケストレーションは次のようになります。

    tRFC クライアント呼び出しを行うオーケストレーション

メッセージ図形の追加

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

図形の種類 特性
ReceiveXml 受け取る - 名前ReceiveXml に設定する
- アクティブ化True に設定する
SendToLOB 送信 - 名前SendToLOB に設定する
応答を受信する 受け取る - 名前ReceiveResponse に設定する
- アクティブ化False に設定する
SendResponse 送信 - 名前SendResponse に設定する
SendTIDMsg 送信 - 名前SendTIDMsg に設定する
ReceiveTIDRsp 受け取る - 名前ReceiveTIDRsp に設定する
- アクティブ化False に設定する
SendTIDRsp 送信 - 名前SendTIDRsp に設定する

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

tRFC 呼び出しに対する SAP システムからの応答には GUID が含まれています。 tRFC 呼び出しをコミットするには、RfcConfirmTransID 操作に同じ GUID を渡す必要があります。 そのためには、オーケストレーションにメッセージの構築図形を含め、その中にメッセージの割り当て図形を含める必要があります。 ここでは、メッセージ構築図形の目的は次のとおりです。

  • tRFC 呼び出しのために SAP システムから受信した応答から GUID を抽出します。

  • RfcConfirmTransID 操作のメッセージ スキーマに準拠するメッセージを作成します。

    [メッセージの構築] 図形では、 Message Constructed プロパティを TIDRequest に設定する必要があります。

    次のコードの抜粋をメッセージ割り当て図形に追加する必要があります。

XmlDoc = new System.Xml.XmlDocument();  
XmlDoc.LoadXml("<RfcConfirmTransID xmlns='http://Microsoft.LobServices.Sap/2007/03/RfcApi/'><TransactionalRfcOperationIdentifier /></RfcConfirmTransID>");  
TIDRequest = XmlDoc;  
TIDRequest.TransactionalRfcOperationIdentifier = xpath(Response,"string(/*[local-name()='BAPI_SALESORDER_CREATEFROMDAT2Response']/*[local-name()='TransactionalRfcOperationIdentifier']/text())");  

上記のコード抜粋を使用するには、次のものが必要です。

  • BizTalk プロジェクトに変数 XmlDoc を作成し、その型を System.Xml.XmlDocument に設定します。 変数の作成の詳細については、「 オーケストレーションでの変数の使用」を参照してください。

  • RfcConfirmTransID 操作のスキーマで 、TransactionalRfcOperationIdentifier プロパティを昇格しました。 プロパティの昇格の詳細については、「プロパティの 昇格」を参照してください。

ポートの追加

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

港 / ポート 特性
ファイルイン - 識別子FileIn に設定する
- FileInPortType に設定する
- 通信パターン一方向に設定する
- 通信方向受信に設定する
tRFC_Port - 識別子tRFC_Portに設定する
- tRFC_PortType に設定する
- 通信パターンRequest-Response に設定する
- 通信方向送受信に設定する
SavetRFCResponse - 識別子SavetRFCResponse に設定する
- SavetRFCResponsePortType に設定する
- 通信パターン一方向に設定する
- 通信方向送信に設定する
TID_Port - 識別子TID_Portに設定する
- TIDPortType に設定する
- 通信パターンRequest-Response に設定する
- 通信方向送受信に設定する
SaveTIDResponse - 識別子SaveTIDResponse に設定する
- TypeSaveTIDResponsePortType に設定します。
- 通信パターン一方向に設定する
- 通信方向送信に設定する

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

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

特性
ReceiveXml - メッセージ要求に設定する
- 操作FileIn.tRFC.Request に設定する
SendToLOB - メッセージ要求に設定する
- 操作tRFC_Port.tRFC.Request に設定する
応答を受信する - メッセージ応答に設定する
- 操作tRFC_Port.tRFC.Response に設定する
SendResponse - メッセージ応答に設定する
- SavetRFCResponse.tRFC.Request操作を設定する
SendTIDMsg - メッセージTIDRequest に設定する
- 操作TID_Port.TID.Request に設定する
ReceiveTIDRsp - メッセージTIDResponse に設定する
- 操作TID_Port.TID.Response に設定する
SendTIDRsp - メッセージTIDResponse に設定する
- 操作SaveTIDResponse.TID.Request に設定する

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

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

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

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

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

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

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

    • ハード ディスク上の場所と、要求メッセージをドロップする対応するファイル ポートを定義します。 BizTalk オーケストレーションは、要求メッセージを処理して SAP システムに送信します。

    • ハード ディスク上の場所と、BizTalk オーケストレーションが SAP システムからの応答を含む応答メッセージを削除する対応するファイル ポートを定義します。

    • SAP システムにメッセージを送信する物理 WCF-Custom または WCF-SAP 送信ポート (tRFC 要求メッセージと RfcConfirmTransID メッセージ用にそれぞれ 1 つ) を定義します。 また、送信ポートでアクションを指定する必要があります。 ポートを作成する方法については、「 SAP アダプターへの物理ポート バインドを手動で構成する」を参照してください。

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

アプリケーションの起動

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

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

  • オーケストレーションの要求メッセージを受信する FILE 受信ポートが実行されています。

  • オーケストレーションからの応答メッセージを受信する FILE 送信ポートが実行中です。

  • SAP システムにメッセージを送信する WCF-Custom または WCF-SAP 送信ポートが実行されています。

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

操作の実行

アプリケーションを実行した後、オーケストレーションの要求メッセージを削除する必要があります。 SAP システムで tRFC を呼び出すための要求メッセージのスキーマについては、 tRFC 操作 のメッセージ スキーマを参照してください。 たとえば、tRFC としてBAPI_SALEASORDER_CREATEFROMDAT2を呼び出す要求メッセージは次のとおりです。

<BAPI_SALESORDER_CREATEFROMDAT2 xmlns="http://Microsoft.LobServices.Sap/2007/03/Trfc/">  
  <ORDER_HEADER_IN>  
    <DOC_TYPE xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">TA</DOC_TYPE>  
    <SALES_ORG xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">1000</SALES_ORG>  
    <DISTR_CHAN xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">10</DISTR_CHAN>  
    <DIVISION xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">00</DIVISION>  
    <SALES_OFF xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">1000</SALES_OFF>  
    <REQ_DATE_H xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">2006-09-01T23:50:00</REQ_DATE_H>  
    <PURCH_DATE xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">2006-08-25T23:50:00</PURCH_DATE>  
    <PURCH_NO_C xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">Cust PO</PURCH_NO_C>  
    <CURRENCY xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">EUR</CURRENCY>  
  </ORDER_HEADER_IN>  
  <ORDER_ITEMS_IN>  
    <BAPISDITM xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">  
      <MATERIAL>P-109</MATERIAL>  
      <PLANT>1000</PLANT>  
      <TARGET_QU>ST</TARGET_QU>  
    </BAPISDITM>  
  </ORDER_ITEMS_IN>  
  <ORDER_PARTNERS>  
    <BAPIPARNR xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">  
      <PARTN_ROLE>AG</PARTN_ROLE>  
      <PARTN_NUMB>0000001390</PARTN_NUMB>  
    </BAPIPARNR>  
  </ORDER_PARTNERS>  
  <RETURN/>  
  <TransactionalRfcOperationIdentifier>def689b1-b514-4627-a861-d6d7f51c84e3</TransactionalRfcOperationIdentifier>  
</BAPI_SALESORDER_CREATEFROMDAT2>  

オーケストレーションはメッセージを使用し、それを SAP システムに渡し、SAP システムから応答を受信します。 応答メッセージは、オーケストレーションの一部として指定された他のファイルの場所に保存されます。 SAP システムからの応答には GUID が含まれています。 その後、オーケストレーションは応答から別の要求メッセージを生成し、それを SAP システムに渡して RfcConfirmTransID を実行します。 RfcConfirmTransID 操作の応答が SAP システムから受信されると、ファイルの場所にコピーされます。 要約すると、操作が正常に実行された後、

  • tRFC を呼び出すための SAP からの応答メッセージがファイルの場所にコピーされます。 これには、SAP システムに送信されたのと同じ GUID が含まれます。 tRFC としてBAPI_SALESORDER_CREATEFROMDAT2を呼び出す応答メッセージは次のとおりです。

    <?xml version="1.0" encoding="utf-8"?>  
    <BAPI_SALESORDER_CREATEFROMDAT2Response xmlns="http://Microsoft.LobServices.Sap/2007/03/Trfc/">  
      <TransactionalRfcOperationIdentifier>def689b1-b514-4627-a861-d6d7f51c84e3</TransactionalRfcOperationIdentifier>  
    </BAPI_SALESORDER_CREATEFROMDAT2Response>  
    
  • RfcConfirmTransID の応答メッセージが同じ場所にコピーされます。 これは空の応答です。 RfcConfirmTransID の応答メッセージは次のとおりです。

    <?xml version="1.0" encoding="utf-8"?>  
    <RfcConfirmTransIDResponse xmlns="http://Microsoft.LobServices.Sap/2007/03/RfcApi/"></RfcConfirmTransIDResponse>  
    

SAP アダプター アセンブリによって公開されている ConvertGuidToTid() パブリック メソッドを使用して、GUID にマップされた SAP システムの TID を取得できます。 詳細については、「 特殊な操作」を参照してください。

考えられる例外

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

ベスト プラクティス

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

こちらもご覧ください

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