共用方式為


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

SAP 配接器可讓配接器用戶端使用 BizTalk Server 在 SAP 系統上執行交易。 在建立交易的編排流程之前,您必須先了解交易將在何種基本情境下執行。 在一般交易案例中,具有多個作業的要求訊息(例如叫用BAPI)會傳送至SAP系統。 這稱為「作業訊息」。協調流程必須從要求訊息擷取每個作業訊息,並將個別作業訊息傳送至 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使用屬性的一些指導方針:

訊息 打開 再使用 關閉 流產
第一則訊息 (作業訊息) 是的
後續訊息 (作業訊息) 是的
BAPI_TRANSACTION_COMMIT (交易訊息) 是的
BAPI_TRANSACTION_ROLLBACK (交易訊息) 是的 是的

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

總結該表:

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

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

  • 將交易提交給 BAPI_TRANSACTION_COMMIT 的交易訊息必須使用 CLOSE 屬性。

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

  • 如果協調流程中有多個傳送埠,配接器會自動分隔從每個埠接收之訊息的交易。 這意味著,交易無法跨越不同埠。

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

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

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

  • BAPI_TRANSACTION_COMMIT或BAPI_TRANSACTION_ROLLBACK理想上應該是協同程序中當前交易上下文的最後一則訊息。

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

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

搭配 BizTalk Server 使用 SAP 配接器在 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 系統上執行作業。 傳送至配接器的要求訊息必須符合此架構。 這可以是包含任意數目作業節點的任何使用者特定架構。 在本主題中,會使用 Schema 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 Adapter Pack 安裝程式所安裝,通常是在 <安裝磁碟驅動器>:\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 專案,請開啟該專案的編排檢視。 按一下 [檢視],指向 [其他 Windows],然後按一下 [協調流程檢視]

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

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

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

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

    將標識碼設定為 將訊息類型設定為
    BAPI訊息 SAPTransaction.SAPBindingSchema.BAPI_SALESORDER_CREATEFROMDAT2
    BAPIResponse SAPTransaction.SAPBindingSchema.BAPI_SALESORDER_CREATEFROMDAT2Response
    BAPICommitMessage SAPTransaction.SAPBindingSchema.BAPI_TRANSACTION_COMMIT
    BAPICommitResponse SAPTransaction.SAPBindingSchema.BAPI_TRANSACTION_COMMITResponse
    BAPI回滾訊息 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 命名空間參考中的協調流程設計工具UI

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

    727f82e9-51a9-4a94-9d0a-d05c17904bde在 SAP 中進行交易的協調流程

新增訊息圖形

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

形狀 圖形類型 性能
ReceiveInputXML 收到 - 將 名稱 設定為 ReceiveInputXML

- 將 Activate 設定為 True
SendToLOB 發送 - 將 名稱 設定為 SendToLOB
接收回應 收到 - 將 [名稱] 設定為 ReceiveResponse

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

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

備註

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

提交的訊息格式

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

形狀 圖形類型 性能
SendBAPICommit 發送 - 將 [名稱] 設定為 SendBAPICommit
ReceiveCommitResponse 收到 - 將 Name 設定為 ReceiveCommitResponse

- 將 Activate 設定為 False
SendResponse2 發送 - 將 [名稱] 設定為 SendResponse2

中止的訊息樣式

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

形狀 圖形類型 性能
SendBAPIRollback 發送 - 將 [名稱] 設定為 SendBAPIRollback
接收回滾響應 收到 - 將 名稱 設定為 ReceiveRollbackResponse

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

設定規則表達式

您已新增 Decision 圖形,在決策區塊中包含認可和中止作業的訊息圖形。 若要指定協調流程做決策的條件,您必須在規則圖形上指定一個表達式,此表達式將決定交易是被認可還是回復。 例如,您必須為規則圖形指定下列表示式:

SendToAdapter.isCommit == true

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

若要在表達式編輯器中指定此條件,您必須已在用於傳送至配接器的請求訊息的訊息架構中提升 isCommit 屬性。 針對本主題,要使用的輸入架構是 MultipleOrders.xsd。 您必須在此架構中提升 isCommit 的屬性。 如需推廣屬性的詳細資訊,請參閱 推廣屬性

新增構造訊息圖形

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

第一則訊息結構形態

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

  • 選擇建立新的地圖。

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

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

  • [確定] 啟動映射程式。 將要求訊息的架構對應至BAPI_SALESORDER_CREATEFROMDAT2的架構。 您可以使用 Index 功能元來建立來源與目的架構之間的映射。 索引功能元可讓您從一系列記錄中選擇特定記錄的資訊。

    下圖展示使用 Index 函數對應的綱要。

    使用 Index 運算子對應的架構

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

    如需使用索引函式元的詳細資訊,請參閱 索引函式元

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

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

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

提交構造訊息形式

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

  • 選擇建立新的地圖。

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

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

  • 按一下 [確定] 以啟動映射器。 將要求訊息的架構對應至BAPI_TRANSACTION_COMMIT的架構。 您不需要為此對應包含索引運算符元,因為 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 訊息必須用於例外處理區塊中。

新增埠

請確定您為每個邏輯埠指定下列屬性。 Port 資料行中所列的名稱是編排中顯示的埠名稱。

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

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

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

  • 類似於第二個埠,此埠也會接收具有三個不同架構的訊息。 因此,需要在此連接埠上建立三個不同的操作。

港口 性能
檔案輸入 - 將 標識碼 設定為 FileIn

- 將 Type 設定為 FileInType

- 將 通訊模式 設定為 單向

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

- 將 [類型 ] 設定為 LOBPortType

- 將 通訊模式 設定為 要求-回應

- 將 通訊方向 設定為 傳送接收

- 建立 作業BAPIMessage

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

- 建立作業 RollbackMessage。 此作業將用來傳送回退訊息。
儲存回應 - 將 標識碼 設定為 SaveResponse

- 將 類型 設定為 SaveResponseType

- 將 通訊模式 設定為 單向

- 將通訊方向設定為傳送

- 建立操作 BAPIMessage

- 建立作業 CommitMessage。 此操作將用於儲存 commit message 的回應。

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

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

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

形狀 性能
ReceiveInputXML - 將 訊息 設定為 SendToAdapter

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

- 將 作業 設定為 LOBPort.BAPIMessage.Request
接收回應 - 將 訊息 設定為 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
接收回滾響應 - 將 訊息 設定為 BAPIRollbackResponse

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

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

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

處理例外狀況

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

作為交易和例外狀況處理的架構,協調流程設計工具會提供 範圍 圖形。 範圍可以有交易類型、補償和任意數目的例外狀況處理程式。 範圍包含一或多個區塊。 它有主體,而且可以選擇性地新增任意數量的異常處理區塊。 在BAPI交易的情況下,整個協調流程(請參閱先前的圖)都可以包含在範圍中。

若要攔截例外狀況,您必須將 Catch Exception 區塊新增至協調流程。 Catch Exception 區塊會附加至協調流程設計工具中 範圍 圖形的結尾。 在 BAPI 交易的情況下,您必須將 「ABORT」 例程新增至 Catch Exception 區塊,也就是說,您必須將下列內容新增至 “ABORT” 例程:

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

  • 傳送和接收圖形。

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

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

將 BizTalk 屬性架構新增至 BizTalk

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

在 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(啟用 BizTalk 相容模式) 將此系結屬性設定為 True
      EnableConnectionPooling (啟用連線池化) 在執行任何交易之前,將此系結屬性設定為 False 。 在適配卡與 BizTalk 之間設定的通道意外終止的情況下,會將對應的連線新增至連線集區。 當另一個通道開啟且新的通道選擇相同的連接物件時,舊連接物件上的未提交交易也會在新通道提交交易時一起提交。 若要避免這種情況,您必須在執行交易時停用連線共用。

      備註

      使用 BizTalk 專案增益集的 Consume Adapter Service 產生結構描述,也會建立繫結檔案,其中包含埠的相關資訊,以及將要為這些埠設定的操作。 您可以從 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 應用程式