共用方式為


使用 BizTalk Server 將IDOC 傳送至 SAP

所有對 SAP 的 IDOC 呼叫都會在內部視為 tRFC 呼叫,其中介面卡會作為 tRFC 用戶端,並在 SAP 中呼叫 RFC 來傳送 IDOC。 本節提供使用 Microsoft BizTalk Adapter for mySAP Business Suite 搭配 BizTalk Server 將IDOC 傳送至 SAP 的資訊。 SAP 配接器會顯示兩個不同的作業來傳送IDOC:

  • 傳送 作業可讓配接器用戶端傳送具有強型別架構的IDOC。

  • SendIdoc 作業可讓配接器用戶端傳送具有弱型別架構的IDOC。 使用此方式,配接器用戶端可以將一般檔案IDOC 傳送至 SAP 系統。 整個一般檔案 IDOC 會是 SendIdoc XML 訊息中的節點值。

    如需 SAP 配接器如何支援將IDOC 傳送至 SAP 系統的詳細資訊,請參閱 SAP 中的IDOC 作業。 如需傳送 IDOC 之 SOAP 訊息結構的詳細資訊,請參閱 IDOC 作業的訊息架構

使用 SAP 配接器傳送IDOC 的 BizTalk 案例

下表提供將IDOC 傳送至 SAP 系統的重要 BizTalk 案例:

BizTalk 的輸入 BizTalk 處理 輸出至配接器
一般檔案 IDOC 中繼資料設計階段

1.將系結屬性 GenerateFlatFileCompatibleIdocSchema 設定為 True
2.使用取用配接器服務增益集,為特定 IDOC 產生 傳送 作業的架構。

協調流程設計階段

1.接收一般檔案 IDOC
2.使用一般檔案反組譯程式,使用剛產生的架構,將一般檔案 IDOC 轉換為 XML IDOC。
3.將 [動作] 設定為 [傳送 ] 作業。
傳送訊息
一般檔案 IDOC 中繼資料設計階段

1.將系結屬性 GenerateFlatFileCompatibleIdocSchema 設定為 True
2.使用取用配接器服務增益集,從 IDOC 節點產生 SendIdoc 作業的架構。

協調流程設計階段

1.接收一般檔案 IDOC
2.使用一般檔案反組譯程式將一般檔案 IDOC 轉換成 XML (在此情況下,XML 訊息包含 < idocData > 節點,其中包含整個一般檔案 Idoc 訊息) 使用剛產生的架構。
3.將動作設定為 SendIdoc 作業。
SendIdoc 訊息
XML IDOC 中繼資料設計階段

- 使用取用配接器服務增益集,為特定 IDOC 產生 傳送 作業的架構。

協調流程設計階段

1. 接收 XML IDOC。
2.將 [動作] 設定為 [傳送 ] 作業。
傳送訊息
XML 訊息中的一般檔案 IDOC 中繼資料設計階段

- 使用取用配接器服務增益集,從 IDOC 節點產生 SendIdoc 作業的架構。

協調流程設計階段

1.接收 XML 訊息。
2.將動作設定為 SendIdoc 作業。
SendIdoc 訊息

如何將 IDOC 傳送至 SAP 系統

使用 BizTalk Server 在 SAP 系統上執行作業牽涉到建立 SAP 應用程式的建置組塊中所述的程式性工作。 若要將 IDOC 傳送至 SAP 系統,這些工作如下:

  1. 建立 BizTalk 專案,並針對您想要在 SAP 系統中叫用的 IDOC 產生架構。 產生架構時,請確定您已設定必要的系結屬性,如上表所列。 如需如何設定系結屬性的指示,請參閱 設定 SAP 配接器的系結屬性

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

  3. 建立協調流程以將 IDOC 傳送至 SAP 系統。

  4. 建置和部署 BizTalk 專案。

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

  6. 啟動 BizTalk 應用程式。

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

根據本主題的範例

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

產生架構

本主題示範如何藉由在 \IDOC\ORDERS\ORDERS05\ORDERS05 下產生 傳送 作業的架構,將 IDOC 傳送至 SAP 系統。V3 (620) IDOC。 如需如何為特定 IDOC 產生架構的詳細資訊 ,請參閱流覽、搜尋及取得 SAP 中 IDOC 作業的中繼資料

定義訊息和訊息類型

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

針對本主題,您必須建立兩個訊息,一個要傳送 IDOC 給 SAP 系統,另一個則用來接收回應。

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

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

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

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

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

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

    使用 作法
    識別碼 輸入 IDOCResponse
    訊息類型 從下拉式清單中,展開 [ 架構],然後選取 [ IDOCSend.SAPBindingSchema4]。

設定協調流程

您必須建立 BizTalk 協調流程,才能使用BizTalk Server將IDOC 傳送至 SAP 系統。 在此協調流程中,您會在定義的接收位置卸載一般檔案 IDOC。 此檔案會使用一般檔案反組譯程式轉換成 XML 要求訊息。 SAP 配接器會取用此訊息,並將其傳遞至 SAP 系統。 具有 GUID 的回應會從 SAP 接收,並儲存在另一個位置。 您必須包含傳送和接收圖形,才能將IDOC 傳送至 SAP 系統並接收回應。 您也必須包含一般檔案反組譯程式,才能將一般檔案轉換成 XML 檔案。 將 IDOC 傳送至 SAP 系統的一般協調流程會包含:

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

  • 單向接收埠,可接收一般檔案IDOC 以傳送至 SAP 系統。

  • 一般檔案反組譯程式,可將一般檔案 IDOC 轉換成 XML 檔案。

  • 雙向傳送埠,以將 IDOC 傳送至 SAP 系統並接收回應。

  • 單向傳送埠,從 SAP 系統將回應傳送至資料夾。

    範例協調流程如下所示:

    將IDOC 傳送至 SAP的協調流程

新增訊息圖形

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

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

新增埠

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

連接埠 屬性
FileIn - 將 識別碼 設定為 FileIn
- 將 類型 設定為 FileInType
- 將 通訊模式 設定為 單向
- 將 通訊方向 設定為 接收
LOBPort - 將 識別碼 設定為 LOBPort
- 將 類型 設定為 LOBPortType
- 將 通訊模式 設定為 Request-Response
- 將 通訊方向 設定為 Send-Receive
SaveResponse - 將 識別碼 設定為 SaveResponse
- 將 類型 設定為 SaveResponseType
- 將 通訊模式 設定為 單向
- 設定要傳送的通訊方向

新增一般檔案反組譯程式

您必須將一般檔案反組譯程式新增至協調流程,才能將一般檔案 IDOC 轉換成 XML 格式。

新增一般檔案反組譯程式
  1. 以滑鼠右鍵按一下 BizTalk 專案,指向 [ 新增],然後選取 [ 新增專案]。

  2. 從對話方塊中,執行下列動作:

    使用 作法
    類別 管線檔案
    Visual Studio 安裝的範本 接收管線
    名稱 IDOCReceive
  3. 這會開啟管線Designer。 從 BizTalk 管線元件 工具箱中,將 一般檔案反組譯程式 管線元件拖曳至接收管線的反 譯階段。

  4. 從 [ 管線元件屬性 ] 檢視中,指定 [檔架構 ] 屬性的值。 從下拉式清單中,確定您選取對應至 IDOC 傳送作業的架構。

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

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

圖形 屬性
ReceiveFile - 將 訊息 設定為 IDOCSend
- 將 作業 設定為 FileIn.SendIDOC.Request
SendToLob - 將 訊息 設定為 IDOCSend
- 將 作業 設定為 LOBPort.SendIDOC.Request
ReceiveResponse - 將 訊息 設定為 IDOCResponse
- 將 作業 設定為 LOBPort.SendIDOC.Response
SendResponse - 將 訊息 設定為 IDOCResponse
- 將 作業 設定為 SaveResponse.SendIDOC.Request

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

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

設定 BizTalk 應用程式

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

設定應用程式牽涉到:

  • 選取應用程式的主機。

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

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

      重要

      針對此埠的 XMLReceive 管線,請確定您選取 [IDOCReceive]。 您已將此管線建立為 BizTalk 專案的一部分。

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

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

      注意

      您也可以將 AutoConfirmSentIdocs 系結屬性設定為自動將IDOC 認可至 SAP 系統。 如果您這樣做,就不需要明確呼叫 RfcConfirmTransID 作業來認可IDOC。 For more information about the binding property, see Read about BizTalk Adapter for mySAP Business Suite Binding Properties. 如需 RfcConfirmTransID 作業的詳細資訊,請參閱 SAP 中 tRFC 上的作業

      注意

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

啟動應用程式

您必須啟動 BizTalk 應用程式,才能將 IDOC 傳送至 SAP 系統。 如需啟動 BizTalk 應用程式的指示,請參閱 如何啟動協調流程如何啟動應用程式

在此階段,請確定:

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

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

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

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

執行作業

執行應用程式之後,您必須卸載協調流程的要求訊息。 在此範例中,我們會在定義的 FILE 接收位置卸載一般檔案 IDOC。 在您卸載要求訊息之後,就會執行下列動作:

  • 協調流程會挑選這個一般檔案 IDOC,並將其轉換成 XML 要求訊息,該架構符合您稍早產生的架構。

  • 如果您提供的要求訊息包含 GUID,配接器會產生交易識別碼 (TID) ,並將其傳送至 SAP 系統。

  • 如果您提供的要求訊息不包含 GUID,配接器會產生 GUID,並使用該 GUID 來產生 TID。 TID 接著會傳送至 SAP 系統。

    在這兩種情況下,來自 SAP 系統的回應訊息都包含 GUID。 例如,ORDERS05 IDOC 上傳送作業的回應訊息為:

<?xml version="1.0" encoding="utf-8"?>  
<SendResponse xmlns="http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS05//620/Send">  
  <guid>a5afe162-d5cc-47b0-bf6f-3b0bfe06a97e</guid>  
</SendResponse>  

收到 GUID 之後,您必須叫用 RfConfirmTransID 作業來認可 TID。 如需 RfcConfirmTransID 作業的詳細資訊,請參閱 SAP 中 tRFC 上的作業。 您可以建立新的協調流程來呼叫此作業或修改現有的協調流程。 如果您想要建立新的協調流程,它會類似于 SAP 系統上的任何其他協調流程。 如果您想要更新現有的協調流程,請參閱使用 BizTalk Server叫用 SAP 中的 tRFC。 叫用 tRFC 的協調流程,如主題所述,示範如何從相同的協調流程呼叫 RfcConfirmTransID 作業。

注意

如果您將 AutoConfirmSentIdocs 系結屬性設定為 True,則不需要叫用 RfcConfirmTransID 作業。

可能的例外狀況

如需使用 BizTalk Server 將 IDOC 傳送至 SAP 系統時可能會遇到的例外狀況相關資訊,請參閱 SAP 配接器的例外狀況和錯誤處理

最佳做法

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

另請參閱

開發 BizTalk 應用程式