Share via


在 Azure Logic Apps 中建立常見 SAP 整合案例的工作流程

適用於:Azure Logic Apps (使用量 + 標準)

本操作指南說明如何使用 Azure Logic Apps 和 SAP 連接器,為一些常見的 SAP 整合案例建立範例邏輯應用程式工作流程。

標準和取用邏輯應用程式工作流程都提供在多租用戶 Azure 中裝載並執行的 SAP 受控連接器。 標準工作流程也提供 SAP 內建服務提供者連接器,該連接器裝載並執行於單一租用戶 Azure Logic Apps 中。 如果您在整合服務環境 (ISE) 中建立和裝載取用工作流程,您也可以使用 SAP 連接器的 ISE 原生版本。 如需詳細資訊,請參閱連接器技術參考

必要條件

開始之前,務必針對您的特定案例檢閱並符合 SAP 連接器需求

從 SAP 接收訊息

下列範例邏輯應用程式工作流程會在工作流程的 SAP 觸發程序收到來自 SAP 伺服器的訊息時觸發。

新增 SAP 觸發程序

根據您在多租用戶 Azure Logic Apps 中有取用工作流程,或在單一租用戶 Azure Logic Apps 中有標準工作流程,請遵循對應的步驟:

  1. Azure 入口網站中,在設計工具中開啟您的使用量邏輯應用程式和空白工作流程。

  2. 在設計工具中,遵循下列一般步驟,以新增名為收到訊息時的 SAP 受控連接器觸發程序

  3. 如果出現提示,請為內部部署 SAP 伺服器提供下列連線資訊。 完成時,選取建立。 否則,繼續進行下一個步驟來設定 SAP 觸發程序。

    參數 必要 描述
    連線名稱 Yes 輸入連接的名稱
    資料閘道 Yes 1.針對 [訂用帳戶],針對您為了安裝資料閘道在 Azure 入口網站中建立的資料閘道資源,選取 Azure 訂用帳戶。

    2.針對 [連線閘道],選取 Azure 中您的資料閘道資源。
    用戶端 Yes 要用於連線到 SAP 伺服器的 SAP 用戶端識別碼
    驗證類型 Yes 要用於連線的驗證類型,其必須是 [基本] (使用者名稱和密碼)。 若要建立 SNC 連線,請參閱啟用安全網路通訊 (SNC)
    SAP 使用者名稱 Yes SAP 伺服器的使用者名稱
    SAP 密碼 Yes SAP 伺服器的密碼
    登入類型 Yes 選取 [應用程式伺服器] 或 [群組] (訊息伺服器),然後設定對應的必要參數,即使其看起來是選擇性的:

    應用程式伺服器
    - AS 主機:SAP Application Server 的主機名稱
    - AS 服務:SAP Application Server 的服務名稱或連接埠號碼
    - AS 系統編號:SAP 伺服器的系統編號,範圍從 00 到 99

    群組
    - MS Server 主機:SAP Message Server 的主機名稱
    - MS 服務名稱或連接埠號碼:SAP Message Server 的服務名稱或連接埠號碼
    - MS 系統識別碼:SAP 伺服器的系統識別碼
    - MS 登入群組:SAP 伺服器的登入群組。 在 SAP 伺服器上,您可以開啟 [CCMS:維護登入群組] (T-Code SMLG) 對話方塊,以尋找或編輯 [登入群組] 值。 如需詳細資訊,請檢閱 SAP 附註 26317 - Set up for LOGON group for automatic load balancing
    安全型別 No 此選項可用於回溯相容性,而且只會檢查字串長度。 根據預設,強型別藉由對結構描述執行 XML 驗證,用於檢查無效的值。 此行為可協助您更早偵測問題。 深入了解安全型別設定
    使用 SNC No 若要建立 SNC 連線,請參閱啟用安全網路通訊 (SNC)

    如需其他選擇性可用的連線參數,請參閱預設連線資訊

    在 Azure Logic Apps 設定及測試您的連線之後,觸發程序資訊方塊隨即出現。 如需可能發生之任何連線問題的詳細資訊,請參閱針對連線進行疑難排解

  4. 根據您的 SAP 伺服器組態和案例,提供收到訊息時觸發程序的必要參數值,並新增您想要在案例中使用的任何其他可用觸發程序參數。

    注意

    此 SAP 觸發程序是以 Webhook 為基礎的觸發程序,而非輪詢觸發程序,而且不包含用以指定輪詢排程的選項。 例如,當您搭配內部部署資料閘道使用受控 SAP 連接器時,只有在訊息送達時,才會從資料閘道呼叫觸發程序,因此不需要輪詢。

    參數 必要 描述
    GatewayHost Yes SAP RFC 伺服器的註冊閘道主機
    GatewayService Yes SAP RFC 伺服器的註冊閘道服務
    ProgramId Yes SAP RFC 伺服器的註冊閘道程式識別碼。

    注意:此值須區分大小寫。 當您設定邏輯應用程式工作流程和 SAP 伺服器時,務必對 [程式識別碼] 值一致使用相同的大小寫格式。 否則,當您嘗試將 IDoc 傳送至 SAP 時,tRFC 監視器 (T-Code SM58) 可能會顯示下列錯誤( 連結需要 SAP 登入):

    - 找不到 IDOC_INBOUND_ASYNCHRONOUS 函式 (2399329)
    - 不支援非 ABAP RFC 用戶端 (合作夥伴類型) (353597)
    DegreeOfParallelism No 要平行處理的呼叫數目。 若要新增此參數並變更值,請從 [新增參數] 清單中,選取 [DegreeOfParallelism],然後輸入新的值。
    SapActions No 根據 SAP 動作清單,篩選您從 SAP 伺服器收到的訊息。 若要新增此參數,請從 [新增參數] 清單中,選取 [SapActions]。 在新的 SapActions 區段中,針對 SapActions - 1 參數,使用檔案選擇器選取 SAP 動作或手動指定動作。 如需 SAP 動作的詳細資訊,請參閱 IDoc 作業的訊息結構描述
    IDoc 格式 No 用來接收 IDoc 的格式。 若要新增此參數,請從 [新增參數] 清單中,選取 [IDoc 格式]

    - 若要以 SAP 純 XML 形式接收 IDoc,請從 [IDoc 格式] 清單中選取 [SapPlainXml]

    - 若要以一般檔案形式接收 IDoc,請從 [IDoc 格式] 清單中選取 [FlatFile]

    - 附註:如果您在工作流程中使用 [一般檔案解碼動作],則您必須在一般檔案結構描述中使用 early_terminate_optional_fields 屬性,並將其值設定為 true。 這是必要的需求,因為 SAP 在名為 IDOC_INBOUND_ASYNCHRONOUS 的 tRFC 呼叫上傳送的一般檔案 IDoc 資料記錄不會填補至完整的 SDATA 欄位長度。 Azure Logic Apps 會提供一般檔案 IDoc 原始資料,而不需要在從 SAP 收到時填補。 此外,當您將此 SAP 觸發程序與一般檔案解碼動作結合時,提供給此動作的結構描述必須相符。
    接收包含未發行區段的 IDOC No 接收包含或不含未發行區段的 IDoc。 若要新增此參數並變更值,請從 [新增參數] 清單中,選取 [接收包含未發行區段的 IDOC],然後選取 [是] 或 [否]
    SncPartnerNames No 有權在 SAP 用戶端程式庫層級呼叫觸發程序的 SNC 合作夥伴清單。 只有列出的合作夥伴會獲得 SAP 伺服器的 SNC 連線授權。 若要新增此參數,請從 [新增參數] 清單中,選取 [SncPartnerNames]。 務必輸入以垂直線 (|) 分隔的每個名稱。

    下列範例顯示取用工作流程中基本設定的 SAP 受控觸發程序:

    Screenshot shows basically configured SAP managed connector trigger in Consumption workflow.

    下列範例顯示 SAP 受控觸發程序,您可以選取 SAP 動作來篩選訊息:

    Screenshot shows selecting an SAP action to filter messages in a Consumption workflow.

    或者,手動指定動作:

    Screenshot shows manually entering the SAP action to filter messages in a Consumption workflow.

    以下舉例說明當您設定觸發程序來接收多個訊息時,此動作的顯示方式:

    Screenshot shows example trigger that receives multiple messages in a Consumption workflow.

  5. 儲存您的工作流程,以便開始從 SAP 伺服器接收訊息。 在設計師工具列上選取儲存

    您的工作流程現在已準備好從 SAP 伺服器接收訊息。

  6. 觸發程序引發並執行您的工作流程之後,請檢閱工作流程的觸發程序歷程記錄,以確認觸發程序註冊成功。

從 SAP 接收 IDoc 封包

若要接收 IDoc 封包 (也就是 IDoc 的批次或群組),SAP 觸發程序不需要額外的設定。 不過,若要在觸發程序收到封包之後處理 IDoc 封包中的每個項目,您必須實作多幾個步驟,將封包分割成個別的 IDoc,其做法是設定 SAP 以封包傳送 IDoc

以下範例工作流程示範如何使用 xpath() 函式從封包擷取個別的 IDoc:

  1. 開始之前,您需要具有 SAP 觸發程序的取用或標準邏輯應用程式工作流程。 如果您的工作流程尚未以此觸發程序起始,請遵循本指南中的先前步驟,將可接收訊息的 SAP 觸發程序新增至您的工作流程

  2. 若要立即以 SAP 要求狀態回覆 SAP 伺服器,請根據您使用 SAP 受控觸發程序還是 SAP 內建觸發程序,新增下列回應動作:

    • SAP 受控觸發程序:針對此觸發程序,將回應動作新增至您的工作流程

      在 [回應] 動作中,使用下列其中一個狀態碼 (statusCode):

      狀態碼 描述
      202 已接受 要求已接受進行處理,但尚未完成處理。
      204 沒有內容 伺服器順利履行要求,且回應承載主體中沒有要傳送的其他內容。
      200 確定 即使伺服器產生零長度的承載主體,此狀態碼一律包含承載。
    • SAP 內建觸發程序:針對此觸發程序,將回應 SAP 伺服器動作新增至您的工作流程。

    注意

    最佳做法是在觸發程序後面立即新增回應動作,以釋放與 SAP 伺服器的通訊通道。

  3. 在工作流程從 SAP 接收的 XML IDoc 中取得根命名空間。

    1. 若要從 XML 文件擷取此命名空間,並將命名空間儲存在本機字串變數中,請新增 [初始化變數] 動作。

    2. 將動作的標題重新命名為在收到的 IDoc 中取得根節點的命名空間

    3. 提供變數的名稱,並將類型設定為 [字串]

    4. 在動作的 [值] 參數中,於編輯方塊內選取,開啟運算式或函式編輯器,然後使用 xpath() 函式建立下列運算式:

      xpath(xml(triggerBody()?['Content']), 'namespace-uri(/*)')

      取用工作流程

      Screenshot shows the expression to get the root node namespace from received IDoc for a Consumption workflow.

      標準工作流程

      Screenshot shows the expression to get the root node namespace from received IDoc for a Standard workflow.

      當您完成時,運算式會解析,而現在會顯示為下列格式:

      Screenshot shows the resolved expression that gets the root node namespace from received IDoc.

  4. 若要藉由將 IDoc 集合儲存在本機陣列變數中來擷取個別的 IDoc,請遵循下列步驟:

    1. 新增另一個 [初始化變數] 動作。

    2. 將動作的標題重新命名為 [取得包含 IDoc 資料元素的陣列]

    3. 提供變數的名稱,並將類型設定為 [陣列]

      陣列變數藉由列舉集合,讓工作流程可用的每個 IDoc 可個別處理。

    4. 在動作的 [值] 參數中,於編輯方塊內選取,開啟運算式或函式編輯器,然後建立下列 xpath() 運算式:

      xpath(xml(triggerBody()?['Content']), '/*[local-name()="Receive"]/*[local-name()="idocData"]')

      當您完成時,運算式會解析,而現在會顯示為下列格式:

      取用工作流程

      Screenshot shows the expression to get an array of IDocs for a Consumption workflow.

      在此範例中,下列工作流程會使用名為適用於每個控制動作,以及名為建立檔案的 SFTP-SSH 動作,將每個 IDoc 傳輸至 SFTP 伺服器。 每個 IDoc 都必須包含根命名空間,這是此例中將 IDoc 傳送至下游應用程式或 SFTP 伺服器之前,檔案內容包裝在 <Receive></Receive> 元素以及根命名空間內的原因。

      Screenshot shows sending an IDoc to an SFTP server from a Consumption workflow.

      注意

      對於取用工作流程,此模式可作為快速入門範本,您可以在建立取用邏輯應用程式資源和空白工作流程時,從範本資源庫中選取該範本。 或者,當工作流程設計工具開啟時,請在設計工具的工具列上選取 [範本]

      Screenshot that shows selecting the template for getting an IDoc batch.

      標準工作流程

      Screenshot shows the expression to get an array of IDocs for a Standard workflow.

      在此範例中,下列工作流程會使用名為適用於每個控制動作,以及名為建立檔案的 SFTP-SSH 動作,將每個 IDoc 傳輸至 SFTP 伺服器。 每個 IDoc 都必須包含根命名空間,這是此例中將 IDoc 傳送至下游應用程式或 SFTP 伺服器之前,檔案內容包裝在 <Receive></Receive> 元素以及根命名空間內的原因。

      Screenshot shows sending an IDoc to an SFTP server from a Standard workflow.


使用 SAP 動作篩選已接收的訊息

如果您使用 SAP 受控連接器或 ISE 版本 SAP 連接器,請在工作流程中的觸發程序下,根據收到的 XML 承載中的根節點命名空間,設定一種方式來明確篩選出 SAP 伺服器中任何不想要的動作。 您可使用單一或多個 SAP 動作來提供清單 (陣列)。 根據預設,此陣列是空的,這表示工作流程會從 SAP 伺服器接收所有訊息,而不需要篩選。 當您設定陣列篩選條件時,觸發程序只會接收來自指定 SAP 動作類型的訊息,並拒絕來自 SAP 伺服器的所有其他訊息。 不過,此篩選條件不會影響已接收承載的類型是弱式還是強式。 任何 SAP 動作篩選都會在內部部署資料閘道的 SAP Adapter 層級進行。 如需詳細資訊,請檢閱如何測試將 IDoc 從 SAP 傳送至 Azure Logic Apps

設定觸發程序的非同步要求-回覆模式

SAP 受控連接器對 Azure Logic Apps 觸發程序支援 Azure 的非同步要求-回覆模式。 您可以使用此模式來建立成功的要求,否則使用預設同步要求-回覆模式會失敗。

注意

在具有多個 [回應] 動作的工作流程中,所有 [回應] 動作都必須使用相同的要求-回覆模式。 例如,如果工作流程使用具有多個可能 [回應] 動作的切換控制項,您必須將所有 [回應] 動作設定為使用相同的要求-回覆模式 (不論同步或非同步)。

如果您啟用 [回應] 動作的非同步回應,工作流程可以在接受要求進行處理之後,以 [202 已接受] 回覆回應。 回復包含可用來擷取要求最終狀態的位置標頭。

若要使用 SAP 連接器為工作流程設定非同步要求-回覆模式,請遵循下列步驟:

  1. 在設計工具中,開啟邏輯應用程式工作流程。 確認您的工作流程是以 SAP 觸發程序起始。

  2. 在您的工作流程中,尋找 [回應] 動作,然後開啟該動作的 [設定]

  3. 根據您是否有取用或標準工作流程,遵循對應的步驟:

    • 取用:在 [非同步回應] 之下,將 [關閉] 設定切換為 [開啟],然後選取 [完成]
    • 標準:展開 [網路],然後在 [非同步回應] 之下,將設定從 [關閉] 切換為 [開啟]
  4. 儲存您的工作流程您

將 IDoc 傳送至 SAP

若要建立邏輯應用程式工作流程,以將 IDoc 訊息傳送至 SAP 伺服器並傳回回應,請遵循下列範例:

  1. 建立由 HTTP 要求觸發的邏輯應用程式工作流程。
  2. 將 SAP 動作新增至您的工作流程,以將 IDoc 傳送至 SAP。
  3. 將回應動作新增至您的工作流程。
  4. 如果您使用 RFC 接收來自 SAP ABAP 的回覆,請建立遠端函式呼叫 (RFC) 要求回應模式。
  5. 測試您的工作流程。

新增「要求」觸發程序

若要讓工作流程從 SAP over XML HTTP 接收 IDocs,您可以使用要求內建觸發程序。 此觸發程序會建立具有 URL 的端點,讓 SAP 伺服器可將 HTTP POST 要求傳送至工作流程。 工作流程收到這些要求後,觸發程序便會在您的工作流程中引發並執行後續步驟。

若要透過一般程式開發介面通訊 (CPIC) 以純文字 XML 或一般檔案的形式接收 IDocs,請檢閱從 SAP 接收訊息一節。

根據您在多租用戶 Azure Logic Apps 中有取用工作流程,或在單一租用戶 Azure Logic Apps 中有標準工作流程,請遵循對應的步驟:

  1. Azure 入口網站中,在設計工具中建立取用邏輯應用程式資源和空白工作流程。

  2. 在設計工具中,遵循下列一般步驟,以尋找和新增名為收到 HTTP 要求時的要求內建觸發程序

    Screenshot shows the Request trigger for a Consumption workflow.

  3. 儲存您的工作流程您 在設計師工具列上選取儲存

    此步驟會產生端點 URL,觸發程序可以從 SAP 伺服器接收要求,例如:

    Screenshot shows the Request trigger's generated endpoint URL for receiving requests in a Consumption workflow.

新增 SAP 動作以傳送 IDoc

接下來,建立動作,以在工作流程的要求觸發程序檔案引發時,將 IDoc 傳送至 SAP。 根據您在多租用戶 Azure Logic Apps 中有取用工作流程,或在單一租用戶 Azure Logic Apps 中有標準工作流程,請遵循對應的步驟:

  1. 在工作流程設計工具的要求觸發程序之下,選取 [新增步驟]

  2. 在設計工具中,遵循下列一般步驟,以尋找和新增名為將訊息傳送至 SAP 的 SAP 受控動作

  3. 如果出現提示,請為內部部署 SAP 伺服器提供下列連線資訊。 完成時,選取建立。 否則,繼續進行下一個步驟來設定 SAP 動作。

    參數 必要 描述
    連線名稱 Yes 輸入連接的名稱
    資料閘道 Yes 1.針對 [訂用帳戶],針對您為了安裝資料閘道在 Azure 入口網站中建立的資料閘道資源,選取 Azure 訂用帳戶。

    2.針對 [連線閘道],選取 Azure 中您的資料閘道資源。
    用戶端 Yes 要用於連線到 SAP 伺服器的 SAP 用戶端識別碼
    驗證類型 Yes 要用於連線的驗證類型,其必須是 [基本] (使用者名稱和密碼)。 若要建立 SNC 連線,請參閱啟用安全網路通訊 (SNC)
    SAP 使用者名稱 Yes SAP 伺服器的使用者名稱
    SAP 密碼 Yes SAP 伺服器的密碼
    登入類型 Yes 選取 [應用程式伺服器] 或 [群組] (訊息伺服器),然後設定對應的必要參數,即使其看起來是選擇性的:

    應用程式伺服器
    - AS 主機:SAP Application Server 的主機名稱
    - AS 服務:SAP Application Server 的服務名稱或連接埠號碼
    - AS 系統編號:SAP 伺服器的系統編號,範圍從 00 到 99

    群組
    - MS Server 主機:SAP Message Server 的主機名稱
    - MS 服務名稱或連接埠號碼:SAP Message Server 的服務名稱或連接埠號碼
    - MS 系統識別碼:SAP 伺服器的系統識別碼
    - MS 登入群組:SAP 伺服器的登入群組。 在 SAP 伺服器上,您可以開啟 [CCMS:維護登入群組] (T-Code SMLG) 對話方塊,以尋找或編輯 [登入群組] 值。 如需詳細資訊,請檢閱 SAP 附註 26317 - Set up for LOGON group for automatic load balancing
    安全型別 No 此選項可用於回溯相容性,而且只會檢查字串長度。 根據預設,強型別藉由對結構描述執行 XML 驗證,用於檢查無效的值。 此行為可協助您更早偵測問題。 深入了解安全型別設定
    使用 SNC No 若要建立 SNC 連線,請參閱啟用安全網路通訊 (SNC)

    如需其他選擇性可用的連線參數,請參閱預設連線資訊

    在 Azure Logic Apps 設定及測試您的連線之後,SAP 動作資訊方塊隨即出現。 如需可能發生之任何連線問題的詳細資訊,請參閱針對連線進行疑難排解

    Screenshot shows a Consumption workflow with the SAP managed action named Send message to SAP.

  4. 在 [將訊息傳送至 SAP] 動作中,尋找並選取 SAP 伺服器上可用的 SAP 動作以傳送 IDoc。

    [將訊息傳送至 SAP] 動作是泛型的,而且可以傳送 BAPI、IDoc、RFC 或 tRFC 的訊息,但您必須先選取要使用的訊息類型和 SAP 動作。

    1. 在 [SAP 動作] 參數的編輯方塊中,選取資料夾圖示。 從開啟的清單中,選取 BAPIIDOCRFCTRFC。 此範例會選取 [IDOC]。 如果您選取不同的類型,可用的 SAP 動作會根據您的選取項目而變更。

      注意

      如果您收到不正確的閘道 (500) 錯誤或不正確的要求 (400) 錯誤,請參閱 500 不正確的閘道或 400 不正確的要求錯誤

      Screenshot shows selecting IDOC for a Consumption workflow.

    2. 使用箭號瀏覽 SAP 動作類型資料夾,以尋找並選取您要使用的 SAP 動作。

      此範例會選取 ORDERS>ORDERS05>720>Send

      Screenshot shows finding an Orders action for a Consumption workflow.

      如果找不到您需要的動作,您可手動輸入路徑,例如:

      Screenshot shows manually entering a path to an Orders action type for a Consumption workflow.

      提示

      針對 [SAP 動作] 參數,您可以使用運算式編輯器來提供參數值。 如此一來,您就可以對不同的訊息類型使用相同的 SAP 動作。

      如需有關 IDoc 訊息的詳細資訊,請檢閱 IDOC 作業的訊息結構描述

    3. 在 [將訊息傳送至 SAP] 動作中,包含來自要求觸發程序的本文輸出。

      1. 在 [輸入訊息] 參數中,於編輯方塊內選取以開啟動態內容清單。

      2. 從動態內容清單的 [收到 HTTP 要求時] 之下,選取 [本文]。 [本文] 欄位包含來自 [要求] 觸發程序的本文輸出。

        注意

        如果清單中未顯示 [本文] 欄位,請在 [收到 HTTP 要求] 標籤時,選取 [更多資訊]

      Screenshot shows selecting the Request trigger's output named Body for Consumption workflow.

      [將訊息傳送至 SAP] 動作現在包含來自要求觸發程序的本文內容,並將該輸出傳送至 SAP 伺服器,例如:

      Screenshot shows completed SAP action for Consumption workflow.

  5. 儲存您的工作流程您

將一般檔案 IDoc 傳送至 SAP 伺服器 (僅限受控連接器)

若要在使用 SAP 受控連接器時使用一般檔案結構描述來傳送 IDoc,您可以將 IDoc 包裝在 XML 信封中,並遵循一般步驟來新增 SAP 動作以傳送 IDoc,但有下列變更。

注意

如果您使用 SAP 內建連接器,請確定您不會將一般檔案 IDoc 包裝在 XML 信封中。

使用 XML 信封包裝 IDoc

  1. 在用於傳送訊息的 SAP 動作中,使用下列 URI:

    http://Microsoft.LobServices.Sap/2007/03/Idoc/SendIdoc

  2. 使用 XML 信封將您的輸入訊息格式化。

以下範例顯示範例 XML 承載:

<SendIdoc xmlns="http://Microsoft.LobServices.Sap/2007/03/Idoc/">
  <idocData>EDI_DC 3000000001017945375750 30INVOIC011BTSVLINV30KUABCABCFPPC LDCA X004010810 4 SAPMSX LSEDI ABCABCFPPC 000d3ae4-723e-1edb-9ca4-cc017365c9fd 20210217054521INVOICINVOIC01ZINVOIC2RE 20210217054520
E2EDK010013000000001017945375000001E2EDK01001000000010 ABCABC1.00000 0060 INVO9988298128 298.000 298.000 LB Z4LR EN 0005065828 L
E2EDKA1 3000000001017945375000002E2EDKA1 000000020 RS ABCABCFPPC 0005065828 ABCABCABC ABCABC Inc. Limited Risk Distributor ABCABC 1950 ABCABCABCA Blvd ABCABAABCAB L5N8L9 CA ABCABC E ON V-ABCABC LDCA
E2EDKA1 3000000001017945375000003E2EDKA1 000000020 AG 0005065828 ABCABCFPPC ABCABC ABCABC ABCABC - FPP ONLY 88 ABCABC Crescent ABCABAABCAB L5R 4A2 CA ABCABC 111 111 1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000004E2EDKA1 000000020 RE 0005065828 ABCABCFPPC ABCABC ABCABC ABCABC - FPP ONLY 88 ABCABC Crescent ABCABAABCAB L5R 4A2 CA ABCABC 111 111 1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000005E2EDKA1 000000020 RG 0005065828 ABCABCFPPC ABCABC ABCABC ABCABC - FPP ONLY 88 ABCABC Crescent ABCABAABCAB L5R 4A2 CA ABCABC 111 111 1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000006E2EDKA1 000000020 WE 0005001847 41 ABCABC ABCABC INC (ABCABC) DC A. ABCABCAB 88 ABCABC CRESCENT ABCABAABCAB L5R 4A2 CA ABCABC 111-111-1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000007E2EDKA1 000000020 Z3 0005533050 ABCABCABC ABCABC Inc. ABCA Bank Swift Code -ABCABCABCAB Sort Code - 1950 ABCABCABCA Blvd. Acc No -1111111111 ABCABAABCAB L5N8L9 CA ABCABC E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000008E2EDKA1 000000020 BK 1075 ABCABCABC ABCABC Inc 1950 ABCABCABCA Blvd ABCABAABCAB ON L5N 8L9 CA ABCABC (111) 111-1111 (111) 111-1111 ON
E2EDKA1 3000000001017945375000009E2EDKA1 000000020 CR 1075 CONTACT ABCABCABC 1950 ABCABCABCA Blvd ABCABAABCAB ON L5N 8L9 CA ABCABC (111) 111-1111 (111) 111-1111 ON
E2EDK02 3000000001017945375000010E2EDK02 000000020 0099988298128 20210217
E2EDK02 3000000001017945375000011E2EDK02 000000020 00140-N6260-S 20210205
E2EDK02 3000000001017945375000012E2EDK02 000000020 0026336270425 20210217
E2EDK02 3000000001017945375000013E2EDK02 000000020 0128026580537 20210224
E2EDK02 3000000001017945375000014E2EDK02 000000020 01740-N6260-S
E2EDK02 3000000001017945375000015E2EDK02 000000020 900IAC
E2EDK02 3000000001017945375000016E2EDK02 000000020 901ZSH
E2EDK02 3000000001017945375000017E2EDK02 000000020 9078026580537 20210217
E2EDK03 3000000001017945375000018E2EDK03 000000020 02620210217
E2EDK03 3000000001017945375000019E2EDK03 000000020 00120210224
E2EDK03 3000000001017945375000020E2EDK03 000000020 02220210205
E2EDK03 3000000001017945375000021E2EDK03 000000020 01220210217
E2EDK03 3000000001017945375000022E2EDK03 000000020 01120210217
E2EDK03 3000000001017945375000023E2EDK03 000000020 02420210217
E2EDK03 3000000001017945375000024E2EDK03 000000020 02820210418
E2EDK03 3000000001017945375000025E2EDK03 000000020 04820210217
E2EDK17 3000000001017945375000026E2EDK17 000000020 001DDPDelivered Duty Paid
E2EDK17 3000000001017945375000027E2EDK17 000000020 002DDPdestination
E2EDK18 3000000001017945375000028E2EDK18 000000020 00160 0 Up to 04/18/2021 without deduction
E2EDK28 3000000001017945375000029E2EDK28 000000020 CA BOFACATT Bank of ABCABAB ABCABC ABCABAB 50127217 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000030E2EDK28 000000020 CA 026000082 ABCAbank ABCABC ABCABAB 201456700OLD ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000031E2EDK28 000000020 GB ABCAGB2L ABCAbank N.A ABCABA E14, 5LB GB63ABCA18500803115593 ABCABCABC ABCABC Inc. GB63ABCA18500803115593
E2EDK28 3000000001017945375000032E2EDK28 000000020 CA 020012328 ABCABANK ABCABC ABCABAB ON M5J 2M3 2014567007 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000033E2EDK28 000000020 CA 03722010 ABCABABC ABCABABC Bank of Commerce ABCABAABCAB 64-04812 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000034E2EDK28 000000020 IE IHCC In-House Cash Center IHCC1075 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000035E2EDK28 000000020 CA 000300002 ABCAB Bank of ABCABC ABCABAB 0021520584OLD ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000036E2EDK28 000000020 US USCC US Cash Center (IHC) city USCC1075 ABCABCABC ABCABC Inc.
E2EDK29 3000000001017945375000037E2EDK29 000000020 0064848944US A CAD CA ABCABC CA United States US CA A Air Air
E2EDKT1 3000000001017945375000038E2EDKT1 000000020 ZJ32E EN
E2EDKT2 3000000001017945375000039E2EDKT2 000038030 GST/HST877845941RT0001 *
E2EDKT2 3000000001017945375000040E2EDKT2 000038030 QST1021036966TQ0001 *
E2EDKT1 3000000001017945375000041E2EDKT1 000000020 Z4VL
E2EDKT2 3000000001017945375000042E2EDKT2 000041030 0.000 *
E2EDKT1 3000000001017945375000043E2EDKT1 000000020 Z4VH
E2EDKT2 3000000001017945375000044E2EDKT2 000043030 *
E2EDK14 3000000001017945375000045E2EDK14 000000020 008LDCA
E2EDK14 3000000001017945375000046E2EDK14 000000020 00710
E2EDK14 3000000001017945375000047E2EDK14 000000020 00610
E2EDK14 3000000001017945375000048E2EDK14 000000020 015Z4F2
E2EDK14 3000000001017945375000049E2EDK14 000000020 0031075
E2EDK14 3000000001017945375000050E2EDK14 000000020 021M
E2EDK14 3000000001017945375000051E2EDK14 000000020 0161075
E2EDK14 3000000001017945375000052E2EDK14 000000020 962M
E2EDP010013000000001017945375000053E2EDP01001000000020 000011 2980.000 EA 298.000 LB MOUSE 298.000 Z4TN 4260
E2EDP02 3000000001017945375000054E2EDP02 000053030 00140-N6260-S 00000120210205 DFUE
E2EDP02 3000000001017945375000055E2EDP02 000053030 0026336270425 00001120210217
E2EDP02 3000000001017945375000056E2EDP02 000053030 0168026580537 00001020210224
E2EDP02 3000000001017945375000057E2EDP02 000053030 9100000 00000120210205 DFUE
E2EDP02 3000000001017945375000058E2EDP02 000053030 911A 00000120210205 DFUE
E2EDP02 3000000001017945375000059E2EDP02 000053030 912PP 00000120210205 DFUE
E2EDP02 3000000001017945375000060E2EDP02 000053030 91300 00000120210205 DFUE
E2EDP02 3000000001017945375000061E2EDP02 000053030 914CONTACT ABCABCABC 00000120210205 DFUE
E2EDP02 3000000001017945375000062E2EDP02 000053030 963 00000120210205 DFUE
E2EDP02 3000000001017945375000063E2EDP02 000053030 965 00000120210205 DFUE
E2EDP02 3000000001017945375000064E2EDP02 000053030 9666336270425 00000120210205 DFUE
E2EDP02 3000000001017945375000065E2EDP02 000053030 9078026580537 00001020210205 DFUE
E2EDP03 3000000001017945375000066E2EDP03 000053030 02920210217
E2EDP03 3000000001017945375000067E2EDP03 000053030 00120210224
E2EDP03 3000000001017945375000068E2EDP03 000053030 01120210217
E2EDP03 3000000001017945375000069E2EDP03 000053030 02520210217
E2EDP03 3000000001017945375000070E2EDP03 000053030 02720210217
E2EDP03 3000000001017945375000071E2EDP03 000053030 02320210217
E2EDP03 3000000001017945375000072E2EDP03 000053030 02220210205
E2EDP19 3000000001017945375000073E2EDP19 000053030 001418VVZ
E2EDP19 3000000001017945375000074E2EDP19 000053030 002RJR-00001 AB ABCABCABC Mouse FORBUS BLUETOOTH
E2EDP19 3000000001017945375000075E2EDP19 000053030 0078471609000
E2EDP19 3000000001017945375000076E2EDP19 000053030 003889842532685
E2EDP19 3000000001017945375000077E2EDP19 000053030 011CN
E2EDP26 3000000001017945375000078E2EDP26 000053030 00459064.20
E2EDP26 3000000001017945375000079E2EDP26 000053030 00352269.20
E2EDP26 3000000001017945375000080E2EDP26 000053030 01052269.20
E2EDP26 3000000001017945375000081E2EDP26 000053030 01152269.20
E2EDP26 3000000001017945375000082E2EDP26 000053030 0126795.00
E2EDP26 3000000001017945375000083E2EDP26 000053030 01552269.20
E2EDP26 3000000001017945375000084E2EDP26 000053030 00117.54
E2EDP26 3000000001017945375000085E2EDP26 000053030 00252269.20
E2EDP26 3000000001017945375000086E2EDP26 000053030 940 2980.000
E2EDP26 3000000001017945375000087E2EDP26 000053030 939 2980.000
E2EDP05 3000000001017945375000088E2EDP05 000053030 + Z400MS List Price 52269.20 17.54 1 EA CAD 2980
E2EDP05 3000000001017945375000089E2EDP05 000053030 + XR1 Tax Jur Code Level 6795.00 13.000 52269.20
E2EDP05 3000000001017945375000090E2EDP05 000053030 + Tax Subtotal1 6795.00 2.28 1 EA CAD 2980
E2EDP05 3000000001017945375000091E2EDP05 000053030 + Taxable Amount + TaxSubtotal1 59064.20 19.82 1 EA CAD 2980
E2EDP04 3000000001017945375000092E2EDP04 000053030 CX 13.000 6795.00 7000000000
E2EDP04 3000000001017945375000093E2EDP04 000053030 CX 0 0 7001500000
E2EDP04 3000000001017945375000094E2EDP04 000053030 CX 0 0 7001505690
E2EDP28 3000000001017945375000095E2EDP28 000053030 00648489440000108471609000 CN CN ABCAB ZZ 298.000 298.000 LB US 400 United Stat KY
E2EDPT1 3000000001017945375000096E2EDPT1 000053030 0001E EN
E2EDPT2 3000000001017945375000097E2EDPT2 000096040 AB ABCABCABC Mouse forBus Bluetooth EN/XC/XD/XX Hdwr Black For Bsnss *
E2EDS01 3000000001017945375000098E2EDS01 000000020 0011
E2EDS01 3000000001017945375000099E2EDS01 000000020 01259064.20 CAD
E2EDS01 3000000001017945375000100E2EDS01 000000020 0056795.00 CAD
E2EDS01 3000000001017945375000101E2EDS01 000000020 01159064.20 CAD
E2EDS01 3000000001017945375000102E2EDS01 000000020 01052269.20 CAD
E2EDS01 3000000001017945375000103E2EDS01 000000020 94200000 CAD
E2EDS01 3000000001017945375000104E2EDS01 000000020 9440.00 CAD
E2EDS01 3000000001017945375000105E2EDS01 000000020 9450.00 CAD
E2EDS01 3000000001017945375000106E2EDS01 000000020 94659064.20 CAD
E2EDS01 3000000001017945375000107E2EDS01 000000020 94752269.20 CAD
E2EDS01 3000000001017945375000108E2EDS01 000000020 EXT
Z2XSK010003000000001017945375000109Z2XSK01000000108030 Z400 52269.20
Z2XSK010003000000001017945375000110Z2XSK01000000108030 XR1 13.000 6795.00 CX
</idocData>
</SendIdoc>

新增回應動作

現在,設定工作流程,將 SAP 伺服器的結果傳回給原始要求者。 針對這項工作,請遵循下列步驟:

  1. 在工作流程設計工具的 SAP 動作之下,選取 [新增步驟]

  2. 在設計工具中,遵循下列一般步驟以尋找和新增名為回應的要求內建動作

  3. 在 [回應] 動作中,針對 [本文] 參數,於編輯方塊內選取以開啟動態內容清單。

  4. 從動態內容清單中,在 [將訊息傳送至 SAP] 之下,選取 [本文]。 [本文] 欄位包含來自 SAP 動作的本文輸出。

    Screenshot shows selecting SAP action output named Body for Consumption workflow.

  5. 儲存您的工作流程您

建立遠端函式呼叫 (RFC) 要求-回應模式

對於使用 SAP 受控連接器和 ISE 版本 SAP 連接器的取用工作流程,如果您必須使用遠端函式呼叫 (RFC) 從 SAP ABAP 接收 Azure Logic Apps 的回覆,您必須實作要求和回應模式。 若要在使用要求觸發程序時,在您的工作流程中接收 IDoc,請確定工作流程的第一個動作是使用 [200 確定] 狀態碼但沒有任何內容的回應動作。 此建議步驟會透過 tRFC 立即完成 SAP 邏輯工作單元 (LUW) 非同步傳輸,這讓 SAP CPIC 交談再次可供使用。 接著,您可以將更多動作新增至工作流程以便處理收到的 IDoc,而不會封鎖稍後的傳輸。

注意

SAP 觸發程序會透過 tRFC 接收 IDocs,其設計不會有回應參數。

若要實作要求和回應模式,您必須先使用 generate schema 命令 來探索 RFC 結構描述。 產生的結構描述有兩個可能的根節點:

  • 要求節點,這是您從 SAP 收到的呼叫
  • 回應節點,這是您對 SAP 的回覆

在下列範例中,STFC_CONNECTION RFC 模組會產生要求和回應模式。 系統會剖析要求 XML,以擷取 SAP 要求 <ECHOTEXT> 所在的節點值。 回應會將目前的時間戳記插入為動態值。 當您將 STFC_CONNECTION RFC 從邏輯應用程式工作流程傳送至 SAP 時,您會收到類似的回應。

<STFC_CONNECTIONResponse xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">
  <ECHOTEXT>@{first(xpath(xml(triggerBody()?['Content']), '/*[local-name()="STFC_CONNECTION"]/*[local-name()="REQUTEXT"]/text()'))}</ECHOTEXT>
  <RESPTEXT>Azure Logic Apps @{utcNow()}</RESPTEXT>
</STFC_CONNECTIONResponse>

測試工作流程

  1. 如果您的取用邏輯應用程式資源尚未啟用,請在邏輯應用程式功能表上選取 [概觀]。 在工具列上,選取 [啟用]

  2. 在設計工具的工具列上,選取 [執行觸發程序]>[執行] 以手動啟動工作流程。

  3. 若要模擬 Webhook 觸發程序承載,請將 HTTP POST 要求傳送至工作流程的要求觸發程序所指定的端點 URL。 確定在您的要求中包含您的訊息內容。 若要傳送要求,請使用 Postman API 用戶端之類的工具。

    在此範例中,HTTP POST 要求會傳送 IDoc 檔案,其必須為 XML 格式並且包含您所選 SAP 動作的命名空間,例如:

    <?xml version="1.0" encoding="UTF-8" ?>
    <Send xmlns="http://Microsoft.LobServices.Sap/2007/03/Idoc/2/ORDERS05//720/Send">
      <idocData>
        <...>
      </idocData>
    </Send>
    
  4. 傳送 HTTP 要求後,請等候來自工作流程的回應。

    注意

    如果回應所需的所有步驟未在要求逾時期限內完成,工作流程可能會逾時。 如果發生此情況,要求可能就會遭到封鎖。 為協助您診斷問題,請了解如何檢查和監控邏輯應用程式工作流程

您現已建立能與 SAP 伺服器通訊的工作流程。 既然您已為工作流程設定 SAP 連線,即可嘗試使用 BAPI 和 RFC 進行實驗。

安全類型

根據預設,當您為 SAP 受控作業建立連線時,強型別藉由對結構描述執行 XML 驗證用於檢查無效的值。 此行為可協助您更早偵測問題。 [安全型別] 選項可用於回溯相容性,而且只會檢查字串長度。 如果您選擇 [安全型別],則 SAP 中的 DATS 類型和 TIMS 類型會被視為字串,而不是其 XML 對等項目 (xs:datexs:time),其中 xmlns:xs="http://www.w3.org/2001/XMLSchema"。 安全型別會影響所有結構描述產生的行為、「已傳送」承載和「已接收」回應的傳送訊息,以及觸發程序。

使用強型別 (未啟用 [安全型別]) 時,結構描述會將 DATS 和 TIMS 類型對應至更直接的 XML 類型:

<xs:element minOccurs="0" maxOccurs="1" name="UPDDAT" nillable="true" type="xs:date"/>
<xs:element minOccurs="0" maxOccurs="1" name="UPDTIM" nillable="true" type="xs:time"/>

當您使用強型別傳送訊息時,DATS 和 TIMS 回應會符合相符的 XML 類型格式:

<DATE>9999-12-31</DATE>
<TIME>23:59:59</TIME>

啟用 [安全型別] 時,結構描述會將 DATS 和 TIMS 類型對應至只有長度限制的 XML 字串欄位,例如:

<xs:element minOccurs="0" maxOccurs="1" name="UPDDAT" nillable="true">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:maxLength value="8" />
    </xs:restriction>
  </xs:simpleType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="UPDTIM" nillable="true">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:maxLength value="6" />
    </xs:restriction>
  </xs:simpleType>
</xs:element>

在已啟用 [安全型別] 的情況下傳送訊息時,DATS 和 TIMS 回應看起來像下列範例:

<DATE>99991231</DATE>
<TIME>235959</TIME>

進階案例

變更語言標頭以便將資料傳送至 SAP

當您從 Azure Logic Apps 連線到 SAP 時,英文是 SAP 連線用於將資料傳送至 SAP 伺服器的預設語言。 不過,SAP 受控連接器和 SAP 內建連接器會處理變更和儲存以不同方式使用的語言。

  • 當您使用 SAP 內建連接器建立連線時,連線參數可讓您指定語言參數值,並將其儲存為 SAP 連線參數的一部分。

  • 當您使用 SAP 受控連接器建立連線時,連線參數沒有語言參數。 因此,在此期間,您無法指定用於將資料傳送至 SAP 伺服器的語言。 相反地,在工作流程設計階段和執行階段,連接器會從傳送至伺服器的每個要求使用網頁瀏覽器的本機語言。 例如,如果您的瀏覽器設定為葡萄牙文,Azure Logic Apps 會使用葡萄牙文建立及測試 SAP 連線,但不會使用該語言儲存連線。

    不過,您可以使用標準 HTTP 標頭 Accept-Language 搭配輸入要求來設定連線的語言。 大部分的網頁瀏覽器會根據您的地區設定來新增 Accept-Language 標頭。 當您在工作流程設計工具中建立新的 SAP 連線時,網頁瀏覽器會套用此標頭。 因此,您可以更新網頁瀏覽器的設定以使用慣用的語言,或使用 Azure Resource Manager (而不是工作流程設計工具) 建立 SAP 連線。

    例如,您可以使用名為收到 HTTP 要求時的要求觸發程序,將具有 Accept-Language 標頭的要求傳送至邏輯應用程式工作流程。 工作流程中的所有動作都會接收標頭。 然後,SAP 會在其系統訊息中使用指定的語言,例如 BAPI 錯誤訊息。 如果您未在執行階段傳遞 Accept-Language 標頭,則預設使用英文。

    如果您使用 Accept-Language 標頭,可能會收到下列錯誤:請檢查您的帳戶資訊和/或權限,然後再試一次。在此情況下,改為檢查 SAP 元件的錯誤記錄。 錯誤實際上發生在使用標頭的 SAP 元件中,因此您可能會收到下列其中一個錯誤訊息:

    • 「SAP.Middleware.Connector.RfcLogonException:選取其中一種已安裝的語言」

    • 「SAP.Middleware.Connector.RfcAbapMessageException:選取其中一種已安裝的語言」

個別和明確確認交易

當您從 Azure Logic Apps 將交易傳送至 SAP 時,此交換會以兩個步驟進行,如 SAP 文件:交易式 RFC 伺服器程式所述。

根據預設,名為將訊息傳送至 SAP 的 SAP 受控連接器動作會處理這兩個步驟,傳輸函式並在單一呼叫中確認交易。 您也可以選擇分離這些步驟。 對於您不想在 SAP 中重複交易的案例,分離傳輸和確認步驟的功能很有用。 這類案例包括因網路問題等原因而發生的失敗。

您可以使用名為 [IDOC] 將文件傳送至 SAP 的 SAP 受控連接器動作,傳送 IDoc,而不需自動確認交易。 然後,您可以使用名為 [IDOC - RFC] 確認交易識別碼的 SAP 受控連接器動作,明確確認交易。當工作流程在不同的步驟中個別確認交易時,SAP 系統只會完成交易一次。

在標準工作流程中,SAP 內建連接器也有可個別處理傳輸和確認步驟的動作,特別是 [IDoc] 將文件傳送至 SAP[IDOC - RFC] 確認交易識別碼

下列範例工作流程示範了此模式:

  1. 使用設計工具中的空白工作流程,建立並開啟取用或標準邏輯應用程式。 新增要求觸發程序。

  2. 若要協助避免將重複的 IDoc 傳送至 SAP,遵循下列替代步驟,在 SAP 動作中建立和使用 IDoc 交易識別碼

  3. 將名為 [IDOC] 將文件傳送至 SAP 的 SAP 動作新增至工作流程。 提供您傳送至 SAP 系統的 IDoc 資訊,以及下列值:

    參數 數值 Description
    確認 TID 請勿自動確認交易識別碼,這會在個別的步驟中明確發生。
    交易識別碼 GUID <IDoc-transaction-ID> 如果此參數未自動出現,請開啟 [新增參數] 清單,然後選取此參數。

    您可以手動指定此值,或連接器可以自動產生此 GUID 作為 [IDOC] 將文件傳送至 SAP 動作的輸出。 此範例會將此參數保留空白,以自動產生 GUID。

    取用工作流程

    Screenshot shows Consumption workflow with the action named IDOC Send document to SAP.

    標準工作流程

    Screenshot shows Standard workflow with the action named IDOC Send document to SAP.

  4. 在名為 [IDOC] 將文件傳送至 SAP 的 SAP 動作上,開啟 [設定] 以檢閱 [重試原則]

    預設選項是建議的原則,但您可針對特定需求選取自訂原則。 如果您選擇使用自訂原則,請至少設定一次重試,以克服臨時的網路中斷。

  5. 現在,新增名為 [IDOC - RFC] 確認交易識別碼的 SAP 動作。

    1. 在 [交易識別碼] 參數中,於編輯方塊內選取以開啟動態內容清單。

    2. 在清單的 [IDOC] 將文件傳送至 SAP 之下,選取 [交易識別碼] 值,這是上一個 SAP 動作的輸出。

      取用工作流程

      Screenshot shows Consumption workflow with action named Confirm transaction ID, which includes GUID output from previous action.

      標準工作流程

      Screenshot shows Standard workflow with action named Confirm transaction ID, which includes GUID output from previous action.

    執行此步驟之後,目前的交易會在兩端、SAP 連接器端和 SAP 系統端標示完成。

避免使用交易識別碼變數傳送重複的 IDoc

如果將重複的 IDoc 傳送至 SAP 的工作流程遇到問題,您可以建立字串變數作為 IDoc 交易識別碼。 接著,您可使用此識別碼來協助防止在暫時中斷、網路問題或遺失通知等狀況下重複的網路傳輸。

  1. 在設計工具中,在您新增要求觸發程序之後,而且在新增名為 [IDOC] 將文件傳送至 SAP 的 SAP 動作之前,將名為初始化變數的動作新增至工作流程。

  2. 將動作重新命名為 [建立 IDoc 交易識別碼]

  3. 在動作資訊方塊中,提供下列參數值:

    參數 數值 描述
    名稱 <變數名稱> 變數的名稱,例如 IDocTransactionID
    型別 String 變數類型
    guid() 於編輯方塊內選取,開啟運算式或函式編輯器,然後輸入 guid()。 儲存您的變更。

    [值] 參數現在設定為 guid() 函式,該函式可產生 GUID。

    取用工作流程

    Screenshot shows Consumption workflow with the action named Create transaction ID.

    標準工作流程

    Screenshot shows Standard workflow with the action named Create transaction ID.

    注意

    SAP 系統會在指定的時間或預設的 24 小時之後忘記交易識別碼。 因此,如果 ID 或 GUID 未知,SAP 永遠不會無法確認交易識別碼。 如果交易識別碼的確認失敗,此失敗表示 SAP 系統的通訊在 SAP 能夠認知確認之前失敗。

  4. 將名為 [IDOC] 將文件傳送至 SAP 的 SAP 動作新增至工作流程。 提供您傳送至 SAP 系統的 IDoc 資訊,以及下列值:

    參數 數值 Description
    確認 TID 請勿自動確認交易識別碼,這會在個別的步驟中明確發生。
    交易識別碼 GUID <IDoc-transaction-ID> 如果此參數未自動出現,請開啟 [新增參數] 清單,然後選取此參數。 若要選取您所建立的交易識別碼變數,請遵循下列步驟:

    1.在 [交易識別碼 GUID] 參數中,於編輯方塊內選取以開啟動態內容清單。

    2.在清單的 [變數] 之下,選取您先前建立的變數,在此範例中為 IDocTransactionID

    取用工作流程

    Screenshot shows Consumption workflow with action named IDOC Send document to SAP.

    標準工作流程

    Screenshot shows Standard workflow with action named IDOC Send document to SAP.

  5. 針對名為 [IDOC] 將文件傳送至 SAP 的 SAP 受控動作,開啟 [設定] 以檢閱 [重試原則]

    預設選項是建議的原則,但您可針對特定需求選取自訂原則。 如果您選擇使用自訂原則,請至少設定一次重試,以克服臨時的網路中斷。

    注意

    目前只有受控連接器動作具有 [重試原則] 設定,而不是內建的服務提供者型連接器。

  6. 現在,新增名為 [IDOC - RFC] 確認交易識別碼的 SAP 動作。

    1. 在 [交易識別碼] 參數中,於編輯方塊內選取以開啟動態內容清單。

    2. 在清單的 [變數] 之下,為您建立的變數輸入名稱,在此範例中為 IDocTransactionID

      取用工作流程

      Screenshot shows Consumption workflow with action named Confirm transaction ID using a variable.

      標準工作流程

      Screenshot shows Standard workflow with action named Confirm transaction ID using a variable.

  7. 選擇性地在測試環境中驗證重復資料刪除。

    1. 新增另一個名為 [IDOC] 將文件傳送至 SAP 的 SAP 動作。 在 [交易識別碼] 參數中,選取您在上一個步驟中使用的 [交易識別碼] GUID。

    2. 若要驗證哪個 IDoc 號碼在每次呼叫名為 [IDOC] 將文件傳送至 SAP 的動作之後指派,請將名為 [IDOC] 取得交易的 IDOC 清單的動作新增至具有相同 [交易識別碼] 和 [接收] 方向的工作流程。

      如果對兩個呼叫傳回相同的 IDoc 號碼,則會刪除重複的 IDoc 資料。

如果您傳送相同的 IDoc 兩次,您可以驗證 SAP 是否能夠識別重複的 tRFC 呼叫,並將這兩個呼叫解析為單一輸入 IDoc 訊息。

疑難排解問題

連線問題

在連線建立期間,如果您收到下列錯誤,則 SAP NCo 用戶端程式庫安裝會發生問題:

測試連線失敗。 錯誤「無法處理要求。 錯誤詳細資料:'could not load file or assembly 'sapnco, Version=3.0.0.42, Culture=neutral, PublicKeyToken 50436dca5c7f7d23' or one of its dependencies. 系統找不到指定的檔案。」

務必安裝必要的 SAP NCo 用戶端程式庫版本,並符合所有其他必要條件

500 不正確的閘道或 400 不正確的要求錯誤

如果您收到 500 不正確的閘道400 不正確的要求錯誤,且訊息類似於服務 'sapgw00' 未知,則網路服務名稱解析成連接埠號碼就會失敗,例如:

{
   "body": {
      "error": {
         "code": 500,
         "source": "EXAMPLE-FLOW-NAME.eastus.environments.microsoftazurelogicapps.net",
         "clientRequestId": "00000000-0000-0000-0000-000000000000",
         "message": "BadGateway",
         "innerError": {
            "error": {
               "code": "UnhandledException",
               "message": "\nERROR service 'sapgw00' unknown\nTIME Wed Nov 11 19:37:50 2020\nRELEASE 721\nCOMPONENT NI (network interface)\nVERSION 40\nRC -3\nMODULE ninti.c\nLINE 933\nDETAIL NiPGetServByName: 'sapgw00' not found\nSYSTEM CALL getaddrinfo\nCOUNTER 1\n\nRETURN CODE: 20"
            }
         }
      }
   }
}
  • 選項 1:在您的 API 連線和觸發程序組態中,以其連接埠號碼取代您的閘道服務名稱。 在錯誤範例中,sapgw00 必須以實際的連接埠號碼 (例如 3300) 取代。 這是 ISE 唯一可用的選項。

  • 選項 2:如果您使用內部部署資料閘道,可以將閘道服務名稱新增至 %windir%\System32\drivers\etc\services 中的連接埠對應,然後重新啟動內部部署資料閘道服務,例如:

    sapgw00  3300/tcp
    

當 SAP 應用程式伺服器或訊息伺服器名稱解析為 IP 位址時,您可能會收到類似的錯誤。 對於 ISE,您必須指定 SAP 應用程式伺服器或訊息伺服器的 IP 位址。 對於內部部署資料閘道,您可改為將名稱新增至 %windir%\System32\drivers\etc\hosts 中的 IP 位址對應,例如:

10.0.1.9 SAPDBSERVER01 # SAP System Server VPN IP by computer name
10.0.1.9 SAPDBSERVER01.someguid.xx.xxxxxxx.cloudapp.net # SAP System Server VPN IP by fully qualified computer name

將 IDoc 封包從 SAP 傳送至觸發程序時發生錯誤

如果您無法將 IDoc 封包從 SAP 傳送至觸發程序,請檢閱 SAP tRFC (T-Code SM58) 對話方塊中的交易式 RFC (tRFC) 呼叫拒絕訊息。 在 SAP 介面中,您可能會收到下列錯誤訊息,這些訊息會因為 [狀態文字] 欄位的子字串限制而遭到裁剪。

IDoc 中繼中找不到區段或群組定義 E2EDK36001

此錯誤訊息表示發生具有其他錯誤的預期失敗。 例如,無法產生 IDoc XML 承載,因為 SAP 不會發行其區段。 因此,遺漏轉換所需的區段類型中繼資料。

若要讓 SAP 發行這些區段,請連絡 SAP 系統的 ABAP 工程師。

IReplyChannel 上的 RequestContext 在未傳送任何回覆的情況下關閉。

對於 SAP 受控連接器和 ISE 版本 SAP 連接器,此錯誤訊息表示當通道的 catch-all 處理常式因錯誤而終止通道,並重建通道來處理其他訊息時,發生非預期的失敗。

注意

SAP 受控觸發程序和 ISE 版本 SAP 觸發程序是使用 SOAP 型 SAP 配接器的 Webhook。 不過,SAP 內建觸發程序是以 Azure Functions 為基礎的觸發程序,其不會使用 SOAP SAP 配接器,而且不會收到此錯誤訊息。

  • 若要確認工作流程收到 IDoc,請新增回應動作以傳回 [200 確定] 狀態碼。 將本文保留空白,且不要變更或新增至標頭。 IDoc 會透過 tRFC 傳輸,這不允許回應承載。

  • 若要改為拒絕 IDoc,請以 [200 確定] 以外的任何 HTTP 狀態碼回應。 然後,SAP Adapter 會代表您將例外狀況傳回至 SAP。 您應該只拒絕 IDoc 以將傳輸錯誤傳達回 SAP,例如應用程式無法處理的誤傳 IDoc。 您不應該拒絕應用層級錯誤的 IDoc,例如 IDoc 中包含的資料相關問題。 如果您延遲接受應用層級驗證的傳輸,可能會因為封鎖連線而無法傳輸其他 IDocs 而遭遇負面效能。

  • 如果您收到此錯誤訊息,並遇到呼叫 Azure Logic Apps 的系統性失敗,請檢查您已針對您的特定環境設定內部部署資料閘道服務的網路設定。 例如,如果您的網路環境需要使用 Proxy 來呼叫 Azure 端點,您需要設定內部部署資料閘道服務以使用 Proxy。 如需詳細資訊,請檢閱 Proxy 設定

  • 如果您收到此錯誤訊息並遇到呼叫 Azure Logic Apps 的間歇性失敗,則可能需要增加重試計數或重試間隔,請遵循下列步驟:

    1. 檢查內部部署資料閘道服務組態檔中名為 Microsoft.PowerBI.EnterpriseGateway.exe.config 的 SAP 設定。

      1. configuration 根節點下,如果不存在,請加入 configSections 專案。

      2. configSections 節點下,如果不存在,請新增具有下列屬性的 section 元素:name="SapAdapterSection" type="Microsoft.Adapters.SAP.Common.SapAdapterSection, Microsoft.Adapters.SAP.Common"

        重要

        如果現有元素已經存在,請勿變更現有 section 元素中的屬性。

        如果閘道服務組態中未宣告其他區段或區段群組,您的 configSections 元素會如下方版本所示:

        <configSections>
          <section name="SapAdapterSection" type="Microsoft.Adapters.SAP.Common.SapAdapterSection, Microsoft.Adapters.SAP.Common"/>
        </configSections>
        
      3. configuration 根節點下,如果不存在,請加入 SapAdapterSection 元素。

      4. SapAdapterSection 節點下,如果不存在,請新增具有下列屬性的 Broker 元素:WebhookRetryDefaultDelay="00:00:00.10" WebhookRetryMaximumCount="2"

        重要

        即使元素已存在,變更 Broker 元素的屬性。

        如果 SAP 配接器組態中未宣告其他元素或屬性,SapAdapterSection 元素會如下列版本所示:

        <SapAdapterSection>
          <Broker WebhookRetryDefaultDelay="00:00:00.10" WebhookRetryMaximumCount="2" />
        </SapAdapterSection>
        

        重試計數設定看起來像 WebhookRetryMaximumCount="2"。 重試間隔設定如 WebhookRetryDefaultDelay="00:00:00.10",而時間範圍格式為 HH:mm:ss.ff

      注意

      如需有關組態檔的詳細資訊,請檢閱 .NET Framework 的組態檔結構描述

    2. 儲存您的變更。

    3. 如果您使用內部部署資料閘道,請重新啟動閘道。

下一步