共用方式為


使用 BizTalk Server 在 SAP 中執行 BAPI 交易

SAP 配接器可讓配接器用戶端使用 BizTalk Server 在 SAP 系統上執行交易。 建立交易的協調流程之前,您必須先瞭解將執行交易的基本案例。 在典型的交易案例中,會傳送要求訊息,其中包含多個作業 (,例如叫用 BAPI) 。 這稱為「作業訊息」。協調流程必須從要求訊息擷取每個作業訊息,並將個別作業訊息傳送至 SAP 系統。 協調流程會使用相同的連線,逐一傳送它們。 協調流程會透過 BizTalk 對應使用 XML 轉換,從「作業訊息」擷取個別訊息。

執行作業之後,協調流程必須分別傳送BAPI_TRANSACTION_COMMIT或BAPI_TRANSACTION_ROLLBACK的訊息來認可或中止交易。 這些稱為「交易訊息」。

配接器如何透過 BizTalk Server 啟用交易?

若要使用 BizTalk Server 在 SAP 系統上啟用交易,SAP 配接器:

  • 提供訊息內容屬性 OPEN、REUSE、CLOSE 和 ABORT。

  • 使用BAPI_TRANSACTION_COMMIT和BAPI_TRANSACTION_ROLLBACK來認可或中止作業。 SAP 系統會公開這些屬性。

    下表列出搭配BAPI_TRANSACTION_COMMIT或BAPI_TRANSACTION_ROLLBACK使用屬性的一些指導方針:

訊息 OPEN 重用 CLOSE ABORT
第一個訊息 (作業訊息) No No No
後續訊息 (作業訊息) No No No
BAPI_TRANSACTION_COMMIT (交易訊息) No No No
BAPI_TRANSACTION_ROLLBACK (交易訊息) No No Yes Yes

在資料表中,「是」表示要用於訊息的訊息內容屬性。 同樣地,「否」表示訊息內容屬性不會與訊息搭配使用。

若要摘要說明資料表:

  • 第一個訊息必須是作業訊息,而且只能使用 OPEN 屬性。

  • 後續的作業訊息必須使用 REUSE 屬性。

  • 對應至認可交易之BAPI_TRANSACTION_COMMIT的交易訊息必須使用 CLOSE 屬性。

  • 對應至BAPI_TRANSACTION_ROLLBACK中止交易的交易訊息可以使用 CLOSE 或 ABORT 屬性。 如果使用 ABORT,在理想情況下,訊息必須位於協調流程例外狀況區塊中。

  • 如果協調流程中有多個傳送埠,配接器會自動分隔從每個埠接收之訊息的交易。 也就是說,交易無法跨越埠。

  • SAP 交易中的訊息不支援訊息重試嘗試。 因此,使用者應該將訊息重試嘗試設定為零。

  • 配接器可能會針對上表中標示為「否」的組合產生不想要的結果。 您應該使用標示為「是」的組合。

  • 傳送至沒有訊息內容屬性之配接器的訊息會正常執行,而不會系結至目前的交易內容。

  • BAPI_TRANSACTION_COMMIT或BAPI_TRANSACTION_ROLLBACK最好是協調流程中目前交易內容中的最後一則訊息。

下列各節提供如何使用 SAP 配接器在 SAP 中執行交易的指示。

如何在 SAP 系統上執行交易?

使用 SAP 配接器搭配BizTalk Server在 SAP 系統上執行作業,牽涉到建立 SAP 應用程式的建置組塊中所述的程式性工作。 若要在 SAP 系統上執行交易,這些工作如下:

  1. 建立 BizTalk 專案,並針對您要執行交易的 RFC 產生架構。 此外,您必須為BAPI_TRANSACTION_COMMIT和BAPI_TRANSACTION_ROLLBACK RFC 產生架構。

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

  3. 建立協調流程,從要求訊息擷取個別的「作業訊息」,並將其傳送至 SAP 系統。 根據要求訊息,協調流程也會決定要認可或回復交易。

  4. 建置和部署 BizTalk 專案。

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

  6. 啟動 BizTalk 應用程式。

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

根據本主題的範例

以本主題為基礎的範例 SAPTransaction 隨附于 BizTalk 配接器套件。 如需詳細資訊,請參閱 SAP 配接器的範例

產生架構

若要示範如何在 SAP 系統上執行交易,您需要下列架構:

  • 若要讓「作業訊息」在 SAP 系統上執行作業。 傳送至配接器的要求訊息必須符合此架構。 這可以是包含任意數目作業節點的任何使用者特定架構。 本主題使用 MultipleOrders.xsd 架構。 架構也會隨附于 BizTalk 配接器套件範例隨附的交易範例中。 如需詳細資訊,請參閱 架構範例

  • 若要在 SAP 系統上執行作業,例如叫用 RFC。 執行作業的要求訊息必須符合此架構。 必須使用取用配接器服務 BizTalk 專案增益集來產生此架構。 在本主題中,會叫用BAPI_SALESORDER_CREATEFROMDAT2 RFC。 如需產生 RFC 架構的相關資訊,請參閱 流覽、搜尋和取得 SAP 中 RFC 作業的中繼資料

  • 中止或認可交易。 認可或中止交易的要求必須符合此架構。 SAP 配接器會使用BAPI_TRANSACTION_COMMIT和BAPI_TRANSACTION_ROLLBACK RFC 分別認可和復原作業。 您必須使用取用配接器服務增益集來產生這些 RFC 的架構。

注意

您必須確定所有必要架構都會新增至 BizTalk 專案。

重要

您必須將適用于 SAP 配接器的 BizTalk 屬性架構參考新增至 BizTalk 專案。 架構檔案 Microsoft.Adapters.SAP.BiztalkPropertySchema.dll是由 BizTalk 配接器套件安裝程式所安裝,通常是在 < 安裝磁片磁碟機 > :\Program Files\Microsoft BizTalk Adapter Pack\bin。

定義訊息和訊息類型

您稍早產生的架構描述協調流程中訊息所需的「類型」。 訊息通常是變數,其類型是由對應的架構所定義。 您必須將您在第一個步驟中產生的架構連結到 BizTalk 專案的 [協調流程檢視] 視窗的訊息。

在建立訊息之前,您必須判斷要求訊息 (MultipleOrders.xsd 類型) 的「作業」節點數目。 在此範例中,假設要求訊息有兩個作業訊息可叫用BAPI_SALESORDER_CREATEFROMDAT2 RFC。 因此,您必須建立一個對應至為此 RFC 產生的架構的要求-回應訊息集。

您必須在 BizTalk 專案中建立下列訊息。

  • 傳送至協調流程之要求訊息的訊息 SendtoAdapter。 此訊息必須對應至輸入訊息 MultipleOrders.xsd 的架構。

  • 傳送至 SAP 系統的第一個作業的訊息 BAPIMessage。 您也必須為第一個作業的回應建立回應訊息 BAPIResponse。 要求和回應訊息必須對應至為 BAPI_SALESORDER_CREATEFROMDAT2 RFC 產生的架構。

  • 認可作業的訊息 BAPICommitMessage。 您也必須為對應的回應訊息建立回應訊息 BAPICommitResponse。 要求和回應訊息必須對應至 BAPI_TRANSACTION_COMMIT RFC 的架構。

  • 復原作業的訊息 BAPIRollbackMessage。 您也必須為對應的回應訊息建立回應訊息 BAPIRollbackResponse。 要求和回應訊息必須對應至 BAPI_TRANSACTION_ROLLBACK RFC 的架構。

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

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

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

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

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

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

    將識別碼設定為 將訊息類型設定為
    BAPIMessage SAPTransaction.SAPBindingSchema.BAPI_SALESORDER_CREATEFROMDAT2
    BAPIResponse SAPTransaction.SAPBindingSchema.BAPI_SALESORDER_CREATEFROMDAT2Response
    BAPICommitMessage SAPTransaction.SAPBindingSchema.BAPI_TRANSACTION_COMMIT
    BAPICommitResponse SAPTransaction.SAPBindingSchema.BAPI_TRANSACTION_COMMITResponse
    BAPIRollbackMessage SAPTransaction.SAPBindingSchema.BAPI_TRANSACTION_ROLLBACK
    BAPIRollbackResponse SAPTransaction.SAPBindingSchema.BAPI_TRANSACTION_ROLLBACKResponse

設定協調流程

您必須建立 BizTalk 協調流程,才能使用BizTalk Server在 SAP 系統中執行交易。 在此協調流程中,您會在定義的接收位置卸載要求訊息。 SAP 配接器會取用訊息,並將其傳遞至 SAP 系統。 SAP 系統的回應會儲存至另一個位置。

建立協調流程時要進行的另一個考慮是:

  • 將要求訊息的架構對應至BAPI_SALESORDER_CREATEFROMDAT2 RFC 的架構。

  • 將要求訊息的架構對應至BAPI_TRANSACTION_COMMIT和BAPI_TRANSACTION_ROLLBACK RFC 的架構。

    您可以透過 BizTalk 對應使用 XML 轉換來對應架構。 若要達成此目的,請在協調流程中包含轉換圖形。

    最後,根據要求訊息是否有認可或中止交易的資訊,協調流程必須決定要傳送至 SAP 系統的適當訊息。 若要達成此目的,請在協調流程中包含 [決定] 圖形。

    如需協調流程中包含的不同圖形的詳細資訊,請參閱UI 指引和開發人員 API 命名空間參考中的協調流程Designer UI

    SAP 交易的範例協調流程如下所示。

    727f82e9-51a9-4a94-9d0a-d05c17904bde在 SAP

新增訊息圖形

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

圖形 圖形類型 屬性
ReceiveInputXML 接收 - 將 [名稱 ] 設定為 ReceiveInputXML

- 將 Activate 設定為 True
SendToLOB 傳送 - 將 名稱 設定為 SendToLOB
ReceiveResponse 接收 - 將 Name 設定為 ReceiveResponse

- 將 Activate 設定為 False
SendResponse 傳送 - 將 [名稱] 設定為 SendResponse

因為要求訊息有兩個插入訊息,所以您必須建立另一組傳送和接收圖形,以將訊息傳送至 SAP 並接收回應。 不過,因為插入訊息可能會認可或回復,所以必須在決策區塊內建立第二組圖形。 您必須建立一組用於認可的圖形,以及另一組用於復原的圖形。

注意

您可以從 BizTalk 協調流程工具箱拖放 [決定] 圖形,以新增決策區塊。

認可訊息圖形

下表列出協調流程「認可路徑」的圖形。 在這裡,您不需要建立要求訊息的接收訊息。 要求訊息將會從先前的訊息圖形傳遞。

圖形 圖形類型 屬性
SendBAPICommit 傳送 - 將 名稱 設定為 SendBAPICommit
ReceiveCommitResponse 接收 - 將 [名稱] 設定為 ReceiveCommitResponse

- 將 Activate 設定為 False
SendResponse2 傳送 - 將 名稱 設定為 SendResponse2

中止的訊息圖形

下表列出協調流程的「復原路徑」圖形。

圖形 圖形類型 屬性
SendBAPIRollback 傳送 - 將 [名稱 ] 設定為 SendBAPIRollback
ReceiveRollbackResponse 接收 - 將 名稱 設定為 ReceiveRollbackResponse

- 將 Activate 設定為 False
SendResponse3 傳送 - 將 [名稱 ] 設定為 SendResponse3

設定規則運算式

您已透過新增 [決定] 圖形,在決策區塊中包含認可和中止作業的訊息圖形。 若要指定協調流程要決定的條件,您必須根據要認可或回復交易的規則圖形指定運算式。 例如,您必須指定規則圖形的下列運算式:

SendToAdapter.isCommit == true

其中,SendToAdapter 是您針對要求訊息架構所建立的訊息。 因此,在要求訊息中,如果 isCommit 標記設定為 True,協調流程會採用「認可」路由。 否則,協調流程會採用「復原」路由。

若要能夠在運算式編輯器中指定此條件,您必須在傳送至配接器的要求訊息的訊息架構中升級 isCommit 屬性。 針對本主題,要使用的輸入架構是 MultipleOrders.xsd。 您必須升級 isCommit 這個架構中的 屬性。 如需升級屬性的詳細資訊,請參閱 升級屬性

新增建構訊息圖形

如先前所述,傳送至配接器的要求訊息包含兩個插入訊息,然後認可或中止訊息。 您必須新增建構訊息圖形,在該轉換圖形內擷取要傳送至 SAP 系統的個別作業訊息。 您也必須新增訊息指派圖形,以設定啟用交易的訊息內容屬性。

第一個建構訊息圖形

假設第一個建構訊息圖形稱為 「ReceiveXML」。針對此圖形,請將 Messages Constructed 屬性指定為 「BAPIMessage」。 按兩下 [轉換] 圖形以開啟 [ 轉換組態 ] 對話方塊。 在對話方塊中:

  • 選擇建立新的地圖。

  • 從左窗格中,選取 [來源 ],然後從 [ 變數名稱 ] 下拉式清單中選取 [SendToAdapter]。

  • 從左窗格中,選取 [ 目的地 ],然後從 [ 變數名稱 ] 下拉式清單中選取 [BAPIMessage]。

  • 按一下 [確定 ] 以啟動對應程式。 將要求訊息的架構對應至BAPI_SALESORDER_CREATEFROMDAT2的架構。 您可以使用 Index 運算質來建立來源與目的地架構之間的對應。 索引運算質可讓您選取一系列記錄中特定記錄的資訊。

    下圖顯示使用 Index 運算質對應的架構。

    使用索引運算質對應架構

    如需使用[轉換組態] 對話方塊的詳細資訊,請參閱UI 指引和開發人員 API 命名空間參考中的轉換組態對話方塊

    如需使用索引運算質的詳細資訊,請參閱 索引運算質

    對應架構之後,您可以使用對應檔的屬性頁來測試對應。 如需詳細資訊,請參閱UI 指引和開發人員 API 命名空間參考中的 [對應檔案 > 屬性頁對話方塊]、[測試對應] 索引標籤。 <

    在 [訊息指派] 圖形中,指定要啟動交易的訊息內容屬性。 例如,第一個訊息的訊息內容屬性可能是:

    BAPIMessage(Microsoft.Adapters.SAP.BiztalkPropertySchema.ConnectionState) = "OPEN";

認可建構訊息圖形

假設認可作業的建構訊息圖形稱為「CommitMessage」。針對此圖形,請將 Messages Constructed 屬性指定為 「BAPICommitMessage」。 按兩下 [轉換] 圖形以開啟 [ 轉換組態 ] 對話方塊。 在對話方塊中:

  • 選擇建立新的地圖。

  • 從左窗格中,選取 [來源 ],然後從 [ 變數名稱 ] 下拉式清單中選取 [SendToAdapter]。

  • 從左窗格中,選取 [ 目的地 ],然後從 [ 變數名稱 ] 下拉式清單中選取 [BAPICommitMessage]。

  • 按一下 [確定] 以啟動對應程式。 將要求訊息的架構對應至BAPI_TRANSACTION_COMMIT的架構。 您不需要包含此對應的 Index 運算質,因為BAPI_TRANSACTION_COMMIT節點不包含記錄階層。

    在 [訊息指派] 圖形中,指定要認可交易的訊息內容屬性。 例如,第一個訊息的訊息內容屬性可能是:

    BAPICommitMessage(Microsoft.Adapters.SAP.BiztalkPropertySchema.ConnectionState) = "CLOSE";

復原建構訊息圖形

假設復原作業的建構訊息圖形稱為「RollbackMessage」。針對此圖形,將 Messages Constructed 屬性指定為 「BAPIRollbackMessage」。 按兩下 [轉換] 圖形以開啟 [ 轉換組態 ] 對話方塊。 在對話方塊中:

  • 選擇建立新的地圖。

  • 從左窗格中,選取 [來源 ],然後從 [ 變數名稱 ] 下拉式清單中選取 [SendToAdapter]。

  • 從左窗格中,選取 [ 目的地 ],然後從 [ 變數名稱 ] 下拉式清單中選取 [BAPIRollbackMessage]。

  • 按一下 [確定] 以啟動對應程式。 將要求訊息的架構對應至BAPI_TRANSACTION_ROLLBACK的架構。 您不需要包含此對應的索引運算質,因為BAPI_TRANSACTION_ROLLBACK節點不包含記錄階層。

    在 [訊息指派] 圖形中,指定要復原交易的訊息內容屬性。 例如,第一個訊息的訊息內容屬性可能是:

    BAPIRollbackMessage(Microsoft.Adapters.SAP.BiztalkPropertySchema.ConnectionState) = "ABORT";

重要

在一般情況下,與 ABORT 內容屬性BAPI_TRANSACTION_ROLLBACK對應的訊息必須在例外狀況區塊中使用。

新增埠

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

針對此協調流程,會建立三個埠。 第一個埠會從指定的資料夾挑選要求訊息。 第二個埠會將訊息傳送至 SAP 系統,並接收回應。 第三個埠會將回應儲存到另一個資料夾。 因此:

  • 第一個埠只會接收單一架構的訊息,也就是 MultipleOrders.xsd。

  • 第二個埠會傳送和接收BAPI_SALESORDER_CREATEFROMDAT2 RFC 架構的訊息。 此外,也會使用相同的埠來認可或回復交易。 因此,此埠也會接收BAPI_TRANSACTION_COMMIT和BAPI_TRANSACTION_ROLLBACK RFC 架構的訊息。 若要啟用這項功能,會在此埠上建立三個不同的作業,每個作業都對應至特定的訊息架構。

  • 與第二個埠類似,此埠也會接收具有三種不同架構的訊息。 因此,您必須在此埠上建立三個不同的作業。

連接埠 屬性
FileIn - 將 識別碼 設定為 FileIn

- 將 類型 設定為 FileInType

- 將 通訊模式 設定為 單向

- 將 通訊方向 設定為 接收
LOBPort - 將 識別碼 設定為 LOBPort

- 將 類型 設定為 LOBPortType

- 將 通訊模式 設定為 Request-Response

- 將 通訊方向 設定為 Send-Receive

- 建立 作業 BAPIMessage

- 建立作業 CommitMessage。 此作業將用來傳送認可訊息。

- 建立作業 RollbackMessage。 此作業將用來傳送回復訊息。
SaveResponse - 將 識別碼 設定為 SaveResponse

- 將 類型 設定為 SaveResponseType

- 將 通訊模式 設定為 單向

- 設定要傳送的通訊方向

- 建立 作業 BAPIMessage

- 建立作業 CommitMessage。 此作業將用來儲存認可訊息的回應。

- 建立作業 RollbackMessage。 此作業將用來儲存回復訊息的回應。

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

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

圖形 屬性
ReceiveInputXML - 將 訊息 設定為 SendToAdapter

- 將 作業 設定為 FileIn.Transaction.Request
SendToLOB - 將 訊息 設定為 BAPIMessage

- 將 作業 設定為 LOBPort.BAPIMessage.Request
ReceiveResponse - 將 訊息 設定為 BAPIResponse

- 將 作業 設定為 LOBPort.BAPIMessage.Response
SendResponse - 將 訊息 設定為 BAPIResponse

- 將 作業 設定為 SaveResponse.BAPIMessage.Request
SendBAPICommit - 將 訊息 設定為 BAPICommitMessage

- 將 作業 設定為 LOBPort.CommitMessage.Request
ReceiveCommitResponse - 將 訊息 設定為 BAPICommitResponse

- 將作業 設定為 LOBPort.CommitMessage.Response
SendResponse2 - 將 訊息 設定為 BAPICommitResponse

- 將 作業 設定為 SaveResponse.CommitMessage.Request
SendBAPIRollback - 將 訊息 設定為 BAPIRollbackMessage

- 將 作業 設定為 LOBPort.RollbackMessage.Request
ReceiveRollbackResponse - 將 訊息 設定為 BAPIRollbackResponse

- 將作業 設定為 LOBPort.RollbackMessage.Response
SendResponse3 - 將 訊息 設定為 BAPIRollbackResponse

- 將 作業 設定為 SaveResponse.RollbackMessage.Request

指定這些屬性之後,訊息圖形和埠就會連線,而且您的協調流程已完成。

例外狀況處理

在複雜的協調流程中,例如執行 BAPI 交易的協調流程,請務必追蹤協調流程的狀態、在發生錯誤時回報錯誤,如此您就可以在發生時解決問題。 BizTalk 協調流程提供工具來處理錯誤、維護協調流程的狀態,以及透過交易、補償和例外狀況處理來修正問題。

協調流程Designer是交易和例外狀況處理的架構,可提供範圍圖形。 範圍可以包含交易類型、補償和任何數目的例外狀況處理常式。 範圍可以包含一個或多個區塊。 它有主體,而且可以選擇性地附加任何數目的例外狀況處理區塊。 在 BAPI 交易的情況下,整個協調流程 (請參閱先前的圖) 可以包含在範圍內。

若要攔截例外狀況,您必須將 Catch 例外 狀況區塊新增至協調流程。 Catch 例外狀況區塊會附加至協調流程Designer中範圍圖形的結尾。 如果是 BAPI 交易,您必須將 「ABORT」 常式新增至 Catch 例外 狀況區塊,也就是說,您必須將下列內容新增至 「ABORT」 常式:

  • 包含轉換 (的建構訊息圖形,可從輸入訊息擷取要求訊息) 和訊息指派圖形 (,以設定內容屬性)

  • 傳送和接收圖形。

    BizTalk 配接器套件隨附BizTalk Server (SAPTransaction) 的 SAP 交易範例也會示範例外狀況處理。 如需範例的詳細資訊,請參閱 SAP 配接器的範例

    如需如何處理例外狀況的詳細資訊,一般而言,使用BizTalk Server,請參閱使用交易和處理例外狀況

將 BizTalk 屬性架構新增至 BizTalk

在 BizTalk 專案中,您已將元件參考新增至適用于 SAP 配接器的 BizTalk 屬性架構。 您必須在 BizTalk 應用程式中新增與資源相同的元件,也就是將部署 BizTalk 專案的應用程式。 安裝磁片磁碟機 > :\Program Files\Microsoft BizTalk Adapter Pack\bin 時 < ,BizTalk 配接器套件安裝程式通常會安裝架構檔案Microsoft.Adapters.SAP.BiztalkPropertySchema.dll。 如果沒有此資源,您將無法部署專案。

在 BizTalk 中將元件新增為資源

  1. 啟動 BizTalk Server 管理主控台。

  2. 在主控台樹中,依序展開 [BizTalk 群組]、[ 應用程式] 和您要新增 BizTalk 元件的應用程式。

  3. 以滑鼠右鍵按一下 [資源],指向 [ 新增 ],然後按一下 [ BizTalk 元件]。

  4. 在 [ 新增資源 ] 對話方塊中,按一下 [ 新增],流覽至包含 BizTalk 元件檔案的資料夾,選取 BizTalk 元件檔案,然後按一下 [ 開啟]。

  5. [選項] 中,指定將 BizTalk 元件安裝至 GAC 的選項,然後按一下 [ 確定]。

    您現在必須建置 BizTalk 解決方案,然後將其部署至BizTalk Server。 如需詳細資訊,請參閱 建置和執行協調流程

設定 BizTalk 應用程式

部署 BizTalk 專案之後,您稍早建立的協調流程會列在 [BizTalk Server 管理主控台] 的 [協調流程] 窗格中。 您必須使用 BizTalk Server 管理主控台來設定應用程式。 如需設定應用程式的詳細資訊,請參閱 如何設定應用程式

設定應用程式牽涉到:

  • 選取應用程式的主機。

  • 將您在協調流程中建立的埠對應至 BizTalk Server 管理主控台中的實體埠。 針對此協調流程,您必須:

    • 定義硬碟上的位置,以及您將卸載要求訊息的對應檔案埠。 BizTalk 協調流程會取用要求訊息,並將其傳送至 SAP 系統。

    • 定義硬碟上的位置,以及 BizTalk 協調流程將卸載包含 SAP 系統回應的回應訊息的對應埠。

    • 定義實體 WCF-Custom 或 WCF-SAP 傳送埠,以將訊息傳送至 SAP 系統。 如需如何建立埠的詳細資訊,請參閱 手動設定 SAP 配接器的實體埠系結。 由於傳送埠會傳送和接收符合多個架構的訊息並執行兩項作業,因此您必須為兩個作業設定動態動作。 如需動作的詳細資訊,請參閱 設定 SAP 系統的 SOAP 動作。 建立 WCF-Custom 或 WCF-SAP 傳送埠來執行交易時,請務必遵循下列重要考慮。

      進行下列設定 對此值
      動作 傳送埠會傳送和接收多個作業的訊息。 因此,必須為每個作業設定傳送埠上的動作。

      <BtsActionMapping> <Operation Name="BAPIMessage" Action="http://Microsoft.LobServices.Sap/2007/03/Rfc/BAPI_SALESORDER_CREATEFROMDAT2" /> <Operation Name="CommitMessage" Action="http://Microsoft.LobServices.Sap/2007/03/Rfc/BAPI_TRANSACTION_COMMIT" /> <Operation Name="RollbackMessage" Action="http://Microsoft.LobServices.Sap/2007/03/Rfc/BAPI_TRANSACTION_ROLLBACK" /> </BtsActionMapping>
      EnableBizTalkCompatibilityMode 將此系結屬性設定為 True
      EnableConnectionPooling 在執行任何交易之前,將此系結屬性設定為 False 。 在介面卡與 BizTalk 之間設定的通道意外終止的情況下,對應的連線會新增至連線集區。 開啟另一個通道,而新通道會挑選相同的連線物件時,在舊連線物件上未認可的交易也會在透過新通道認可交易時認可。 若要避免這種情況,必須在執行交易時停用連線共用。

      注意

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

      重要

      您可以在 WCF-Custom 或 WCF-SAP 傳送埠上設定備份傳輸,這可讓您在主要傳輸無法運作時將訊息傳送至另一個 SAP 系統。 不過,為了在 SAP 系統上執行交易,WCF 型 SAP 配接器不支援指定指向另一部 SAP 伺服器的備份傳輸。

啟動應用程式

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

在此階段,請確定:

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

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

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

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

執行作業

執行應用程式之後,您必須在預先定義的位置卸載協調流程的要求訊息。 要求訊息必須符合特定架構,例如 MultipleOrders.xsd 架構。 例如,在 SAP 系統中建立銷售訂單的要求訊息,然後認可作業為:

<ns0:Orders xmlns:ns0="http://BAPISend.MultipleOrders">  
  <Order>  
      <ORDER_HEADER_IN>  
        <DOC_TYPE>TA</DOC_TYPE>  
        <SALES_ORG>1000</SALES_ORG>  
        <DISTR_CHAN>10</DISTR_CHAN>  
        <DIVISION>00</DIVISION>  
        <SALES_OFF>1000</SALES_OFF>  
        <REQ_DATE_H>20060901</REQ_DATE_H>  
        <PURCH_DATE>20060901</PURCH_DATE>  
        <PURCH_NO_C>Cust A</PURCH_NO_C>  
        <CURRENCY>EUR</CURRENCY>  
      </ORDER_HEADER_IN>  
      <ORDER_ITEMS_IN>  
          <MATERIAL>P-109</MATERIAL>  
          <PLANT>1000</PLANT>  
          <TARGET_QU>ST</TARGET_QU>  
      </ORDER_ITEMS_IN>  
      <ORDER_PARTNERS>  
          <PARTN_ROLE>AG</PARTN_ROLE>  
          <PARTN_NUMB>0000000257</PARTN_NUMB>  
      </ORDER_PARTNERS>  
    <RETURN></RETURN>  
  </Order>  
  <isCommit>true</isCommit>  
  <BAPI_TRANSACTION_COMMIT>  
  </BAPI_TRANSACTION_COMMIT>  
</ns0:Orders>  

協調流程會取用訊息,並將其傳送至 SAP 系統。 SAP 系統的回應會儲存在其他定義為協調流程一部分的檔案位置。 針對上述要求訊息,您會收到兩個回應訊息,一個用於叫用BAPI_SALESORDER_CREATEFROMDAT2 RFC,另一個用於使用 BAPI_TRANSACTION_COMMIT 的認可作業。

BAPI_SALESORDER_CREATEFROMDAT2的回應如下:

<?xml version="1.0" encoding="utf-8" ?>   
<BAPI_SALESORDER_CREATEFROMDAT2Response xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">  
  <SALESDOCUMENT />   
  <ORDER_ITEMS_IN>  
    <BAPISDITM xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">  
      <ITM_NUMBER>0</ITM_NUMBER>   
      <HG_LV_ITEM>0</HG_LV_ITEM>   
      <PO_ITM_NO />   
      ......  
    </BAPISDITM>  
  </ORDER_ITEMS_IN>  
  <ORDER_PARTNERS>  
    <BAPIPARNR xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">  
      <PARTN_ROLE>AG</PARTN_ROLE>   
      <PARTN_NUMB>0000000257</PARTN_NUMB>   
      <ITM_NUMBER>0</ITM_NUMBER>   
      ......   
    </BAPIPARNR>  
  </ORDER_PARTNERS>  
</BAPI_SALESORDER_CREATEFROMDAT2Response>  

BAPI_TRANSACTION_COMMIT的回應如下:

<?xml version="1.0" encoding="utf-8" ?>   
<BAPI_TRANSACTION_COMMITResponse xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">  
  <RETURN>  
    <TYPE xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />   
    <ID xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />   
    <NUMBER xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">0</NUMBER>   
    <MESSAGE xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />   
    <LOG_NO xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />   
    <LOG_MSG_NO xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">0</LOG_MSG_NO>   
    <MESSAGE_V1 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />   
    <MESSAGE_V2 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />   
    <MESSAGE_V3 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />   
    <MESSAGE_V4 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />   
    <PARAMETER xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />   
    <ROW xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">0</ROW>   
    <FIELD xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />   
    <SYSTEM xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/" />   
  </RETURN>  
</BAPI_TRANSACTION_COMMITResponse>  

注意

如果要求訊息叫用BAPI_TRANSACTION_ROLLBACK RFC,則第二個回應將會用於BAPI_TRANSACTION_ROLLBACK。

可能的例外狀況

如需您在使用 BizTalk Server 在 SAP 系統上執行交易時可能會遇到的例外狀況相關資訊,請參閱 SAP 配接器的例外狀況和錯誤處理

最佳做法

部署並設定 BizTalk 專案之後,您可以將組態設定匯出至稱為系結檔案的 XML 檔案。 產生系結檔案之後,您可以從檔案匯入組態設定,如此您就不需要為相同的協調流程建立傳送埠和接收埠。 如需系結檔案的詳細資訊,請參閱 重複使用 SAP 配接器系結

另請參閱

開發 BizTalk 應用程式