共用方式為


使用 BizTalk Server 在 SAP 中叫用 tRFC

交易式遠端函式呼叫 (tRFC) 保證 SAP 系統上一次執行 RFC。 您可以將 SAP 配接器呈現的任何 RFC 叫用為 tRFC。 叫用 tRFC 類似于叫用 RFC (請參閱使用 BizTalk Server) 叫用SAP 中的 RFC,但有下列差異:

  • SAP 配接器會在與 RFC (RFC) 不同的節點 (TR) FC 底下呈現 tRFC。

  • tRFC 作業包含 GUID 參數,該參數會對應至 SAP 配接器所對應 tRFC 的 SAP 交易識別碼。

  • 叫用 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 產生架構。 您也必須產生 RfcConfirmTransID 作業的架構,以認可 SAP 系統中的 TID。

  2. 在 BizTalk 專案中建立訊息,以從 SAP 系統傳送和接收訊息。

  3. 建立協調流程以叫用 SAP 系統中的 tRFC,然後認可在 SAP 系統中建立的 TID,以回應 SAP 配接器的 tRFC 呼叫。

  4. 建置和部署 BizTalk 專案。

  5. 藉由建立實體傳送和接收埠來設定 BizTalk 應用程式。

  6. 啟動 BizTalk 應用程式。

    本主題提供執行這些工作的指示。

以本主題為基礎的範例

根據本主題的範例 tRFCClient 也隨附 BizTalk 配接器套件。 如需詳細資訊,請參閱 SAP 配接器範例

產生架構

在本主題中,為了示範如何使用 SAP 配接器叫用 tRFC,我們將產生下列專案的架構:

定義訊息和訊息類型

您稍早產生的架構描述協調流程中訊息所需的「類型」。 訊息通常是變數,其類型是由對應的架構所定義。 您必須從 BizTalk 專案的協調流程檢視,將產生的架構連結至訊息。

針對本主題,您必須建立四個訊息—要求-回應訊息集以叫用 tRFC,另一個要求回應訊息集用來叫用 RfcConfirmTransID 作業。

執行下列步驟來建立訊息,並將其連結至架構。

  1. 如果尚未開啟,請開啟協調流程檢視 BizTalk 專案。 按一下 [ 檢視],指向 [其他 Windows],然後按一下 [ 協調流程檢視]。

  2. 在 [ 協調流程檢視]中,以滑鼠右鍵按一下 [ 訊息],然後按一下 [ 新增訊息]。

  3. 以滑鼠右鍵按一下新建立的訊息,然後選取 [ 屬性視窗]。

  4. Message_1的 [屬性]窗格中,執行下列動作。

    使用 作法
    識別碼 輸入 要求
    訊息類型 從下拉式清單中展開 [ 架構],然後選取訊息類型。 例如,選取 tRFC_Client.SAPBindingSchema1.BAPI_SALESORDER_CREATEFROMDAT2,其中 tRFC_Client 是您 BizTalk 專案的名稱。 SAPBindingSchema1 是針對 BAPI_SALESORDER_CREATEFROMDAT2產生的架構。
  5. 重複上一個步驟,以建立三個以上的訊息。 在新訊息的 [ 屬性] 窗格中,執行下列動作。

    將識別碼設定為 將訊息類型設定為
    回應 tRFC_Client.SAPBindingSchema1.BAPI_SALESORDER_CREATEFROMDAT2Response
    TIDRequest tRFC_Client.SAPBindingSchema3.RfcConfirmTransID
    TIDResponse tRFC_Client.SAPBindingSchema3.RfcConfirmTransIDResponse

設定協調流程

您必須建立 BizTalk 協調流程,才能使用BizTalk Server在 SAP 系統中叫用 TRFC。 在此協調流程中,您會在定義的接收位置卸載要求訊息。 協調流程會取用此訊息,並將其傳遞至 SAP 系統。 回應會從 SAP 接收,並儲存在另一個位置。 回應訊息包含 GUID。 協調流程包含 建構訊息 圖形,可從回應擷取 GUID,並建構符合 RfcConfirmTransID 作業架構的訊息。 叫用 RfcConfirmTransID 作業的訊息會以 GUID 作為參數傳送至 SAP 系統 _ 叫用 SAP 系統中 tRFC 的典型協調流程,後面接著 RfcConfirmTransID 作業會包含:

  • 傳送和接收圖形以將訊息傳送至 SAP 系統並接收回應。

  • 建構訊息圖形,以及訊息指派圖形內的建構 RfcConfirmTransID 作業的訊息。

  • 單向接收埠,用來接收傳送至 SAP 系統以叫用 tRFC 的要求訊息。

  • 雙向傳送埠,用來傳送訊息以叫用 tRFC 並接收回應。

  • 雙向傳送埠,用來傳送訊息以叫用 RfcConfirmTransID 作業並接收回應。

  • 兩個單向傳送埠,以將來自 SAP 系統的回應傳送至資料夾。

    範例協調流程如下所示:

    協調流程以撥打 tRFC 用戶端呼叫

新增訊息圖形

為每個訊息圖形指定下列屬性。 Shape資料行中列出的名稱是如上述協調流程所示的訊息圖形名稱。

圖形 圖形類型 屬性
ReceiveXml 接收 - 將 名稱 設定為 ReceiveXml
- 將 Activate 設定為 True
SendToLOB 傳送 - 將 名稱 設定為 SendToLOB
ReceiveResponse 接收 - 將 名稱 設定為 ReceiveResponse
- 將 Activate 設定為 False
SendResponse 傳送 - 將 名稱 設定為 SendResponse
SendTIDMsg 傳送 - 將 [名稱 ] 設定為 SendTIDMsg
ReceiveTIDRsp 接收 - 將 [名稱 ] 設定為 ReceiveTIDRsp
- 將 Activate 設定為 False
SendTIDRsp 傳送 - 將 [名稱 ] 設定為 SendTIDRsp

新增建構訊息圖形

TRFC 呼叫的 SAP 系統回應包含 GUID。 若要認可 tRFC 呼叫,您必須將相同的 GUID 傳遞給 RfcConfirmTransID 作業。 若要這樣做,您必須在協調流程中包含建構訊息圖形,以及該訊息指派圖形內。 在這裡,建構訊息圖形的目的是:

  • 從 SAP 系統針對 tRFC 呼叫接收的回應擷取 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 作業的架構中升級 TransactionRfcOperationIdentifier 屬性。 如需升級屬性的詳細資訊,請參閱 升級屬性

新增埠

請確定您為每個邏輯埠指定下列屬性。 [ 埠] 資料行中所列的名稱是協調流程中顯示的埠名稱。

連接埠 屬性
FileIn - 將 識別碼 設定為 FileIn
- 將 Type 設定為 FileInPortType
- 將 通訊模式 設定為 單向
- 將 通訊方向 設定為 接收
tRFC_Port - 將 識別碼 設定為 tRFC_Port
- 將 [類型] 設定為 [tRFC_PortType
- 將 通訊模式 設定為 Request-Response
- 將 通訊方向 設定為 Send-Receive
SavetRFCResponse - 將 識別碼 設定為 SavetRFCResponse
- 將 類型 設定為 SavetRFCResponsePortType
- 將 通訊模式 設定為 單向
- 設定要傳送的通訊方向
TID_Port - 將 識別碼 設定為 TID_Port
- 將 Type 設定為 TIDPortType
- 將 通訊模式 設定為 Request-Response
- 將 通訊方向 設定為 Send-Receive
SaveTIDResponse - 將 識別碼 設定為 SaveTIDResponse
- 將 類型 設定為 SaveTIDResponsePortType
- 將 通訊模式 設定為 單向
- 設定要傳送的通訊方向

指定動作圖形的訊息並連接到埠

下表指定要設定的屬性及其值,以指定動作圖形的訊息,並將其連結至埠。 Shape資料行中所列的名稱是如上一個協調流程中顯示的訊息圖形名稱。

圖形 屬性
ReceiveXml - 將 訊息 設定為 要求
- 將 作業 設定為 FileIn.tRFC.Request
SendToLOB - 將 訊息 設定為 要求
- 將 作業 設定為 tRFC_Port.tRFC.Request
ReceiveResponse - 將 訊息 設定為 回應
- 將 作業 設定為 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 系統回應的回應訊息。

    • 定義實體 WCF-Custom 或 WCF-SAP 傳送埠, (tRFC 要求訊息和 RfcConfirmTransID 訊息) 將訊息傳送至 SAP 系統。 您也必須在傳送埠中指定動作。 如需如何建立埠的資訊,請參閱 手動設定實體埠系結至 SAP 配接器

      注意

      使用取用配接器服務 BizTalk 專案增益集產生架構也會建立系結檔案,其中包含要針對這些埠設定的埠和動作的相關資訊。 您可以從 BizTalk Server 管理主控台匯入此系結檔案,以建立輸出通話的傳送埠 () ,或針對輸入呼叫) 接收埠 (。 如需詳細資訊,請參閱 使用埠系結檔案設定實體埠系結至 SAP

啟動應用程式

您必須啟動 BizTalk 應用程式,以叫用 SAP 系統中的 tRFC。 如需啟動 BizTalk 應用程式的指示,請參閱 如何啟動協調流程如何啟動應用程式

在此階段,請確定:

  • 要接收協調流程要求訊息的 FILE 接收埠正在執行。

  • 從協調流程接收回應訊息的 FILE 傳送埠正在執行中。

  • WCF-Custom 或 WCF-SAP 傳送埠,以將訊息傳送至 SAP 系統正在執行。

  • 作業的 BizTalk 協調流程正在執行。

執行作業

執行應用程式之後,您必須卸載協調流程的要求訊息。 請參閱 tRFC 作業的訊息架構 ,以瞭解在 SAP 系統中叫用 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。 從 SAP 系統接收 RfcConfirmTransID 作業的回應之後,它會複製到檔案位置。 總而言之,成功執行作業之後:

  • 從 SAP 叫用 tRFC 的回應訊息會複製到檔案位置。 這包含傳送至 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 應用程式