共用方式為


從 Azure Logic Apps 的工作流程中連線至 SAP

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

這個多部分操作指南示範如何使用 SAP 連接器,從 Azure Logic Apps 中的工作流程存取 SAP 伺服器。 您可以使用 SAP 連接器的作業來建立自動化工作流程,以在 SAP 伺服器或其他系統中的事件觸發時執行,並執行一些動作來管理 SAP 伺服器上的資源。

標準和取用邏輯應用程式工作流程都提供在多租用戶 Azure 中裝載並執行的 SAP 受控連接器。 標準工作流程也提供 SAP 內建連接器,該連接器裝載並執行於單一租用戶 Azure Logic Apps 中。 如需詳細資訊,請參閱連接器技術參考

SAP 相容性

SAP 連接器與下列類型的 SAP 系統相容:

  • 內部部署和雲端式 HANA 型 SAP 系統,例如 S/4 HANA。

  • 傳統內部部署 SAP 系統,例如 R/3 和 ECC。

SAP 必須支援您想連線的 SAP 系統版本。 否則,可能無法解決您可能遇到的任何問題。 如需 SAP 系統版本和維護資訊的詳細資訊,請檢閱 SAP 產品可用性矩陣 (PAM)

SAP 連接器支援 SAP NetWeaver 型系統的下列訊息和資料整合類型:

  • 中繼文件 (IDoc)

  • 商務應用程式開發介面 (BAPI)

  • 遠端函式呼叫 (RFC) 和交易式 RFC (tRFC)

SAP 連接器會使用 SAP .NET Connector (NCo) 程式庫

若要使用 SAP 連接器作業,您必須先驗證連線,並具有下列選項:

您可以使用 SNC 進行 SAP NetWeaver 單一登入 (SSO),或將其用於外部產品的安全性功能。 如果您選擇使用SNC,請檢閱 SNC 必要條件

連接器技術參考

根據邏輯應用程式類型和主機環境,SAP 連接器會有不同的版本。

邏輯應用程式 Environment 連接器版本
耗用 多租用戶 Azure Logic Apps 受控連接器,其顯示在連接器資源庫的 [執行階段]>[共用] 下。 如需詳細資訊,請參閱下列文件:

- SAP 受控連接器參考
- Azure Logic Apps 的受控連接器
標準 單一租用戶 Azure Logic Apps 和 App Service 環境 v3 (僅限 Windows 方案) 受控連接器 (出現在連接器資源庫的 Runtime>Shared 之下),以及內建連接器 (出現在連接器資源庫的 Runtime>In-App 之下並以服務提供者為基礎)。 內建連接器可以使用連接字串直接存取 Azure 虛擬網路,而不需內部部署的資料閘道。 如需詳細資訊,請參閱下列文件:

- SAP 受控連接器參考
- SAP 內建連接器參考

- Azure Logic Apps 的受控連接器
- Azure Logic Apps 中的內建連接器

連接器差異

SAP 內建連接器與 SAP 受控連接器在下列方面明顯不同:

  • 內部部署連線不需要內部部署資料閘道。

    相反地,SAP 內建連接器會直接與整合式虛擬網路中的 SAP 伺服器通訊,以避免網路閘道的躍點、延遲和失敗點。 請務必使用邏輯應用程式工作流程應用程式上傳或部署不可轉散發的 SAP 用戶端程式庫。 如需詳細資訊,請參閱本指南中的必要條件

  • 支援高達 100 MB 的承載大小,因此您不需針對大型要求使用 Blob URI。

  • 呼叫 BAPI呼叫 RFC傳送 IDoc 可使用特定動作。 這些專用動作為具狀態 BAPI、RFC 交易和 IDoc 重複資料刪除提供較佳的體驗,而且不會使用較舊的 SOAP Windows Communication Foundation (WCF) 傳訊模型。

    呼叫 BAPI 動作包含最多兩個具有已傳回 JSON 的回應、來自所呼叫 BAPI 的 XML 回應,以及 BAPI 認可或 BAPI 復原回應,以及您使用使用自動認可。 這項功能可解決 SAP 受控連接器的問題,其中自動認可的結果為無訊息且只能透過記錄來觀察。

  • 逾時比受控連接器長 (5 分鐘)。

    SAP 內建連接器不會使用共用或全域連接器基礎結構,這表示其逾時 (5 分鐘) 比 SAP 受控連接器的逾時 (兩分鐘) 長。 長時間執行的要求不需要實作長時間執行的 Webhook 型要求動作模式。

  • 根據預設,SAP 內建連接器作業為無狀態。 不過,您可以啟用這些作業的具狀態模式 (親和性)

    在具狀態模式中,SAP 內建連接器支援高可用性和水平擴充設定。 相較之下,SAP 受控連接器對於內部部署資料閘道有所限制,其受限於觸發程序的單一執行個體,以及僅限容錯移轉模式的叢集才能執行動作。 如需詳細資訊,請參閱 SAP 受控連接器 - 已知問題和限制

  • 標準邏輯應用程式工作流程需要並使用 SAP NCo 3.1 用戶端程式庫,而不是 SAP NCo 3.0 版本。 如需詳細資訊,請參閱必要條件

  • 標準邏輯應用程式工作流程提供應用程式設定,您可以在其中指定個人安全性環境 (PSE) 和 PSE 密碼。

    這項變更可防止您上傳多個 PSE 檔案,此作業不受支援並導致 SAP 連線失敗。 在取用邏輯應用程式工作流程中,SAP 受控連接器可讓您透過連線參數來指定這些值,這可讓您上傳多個 PSE 檔案且不受支援,而導致 SAP 連線失敗。

  • 產生結構描述動作

    • 您可以從多個作業類型中選取,例如 BAPI、IDoc、RFC 和 tRFC,相對於 SAP 受控連接器中的相同動作,其使用 SapActionUris 參數和檔案系統選擇器體驗。

    • 您可以直接提供參數名稱作為自訂值。 例如,您可以從呼叫 RFC 動作指定 [RFC 名稱] 參數。 相較之下,在 SAP 受控連接器中,您必須提供複雜的 [動作 URI] 參數名稱。

    • 依照設計,此動作不支援在 SAP 受控連接器支援的單一動作執行中為 RFC、BAPI 或 IDoc 產生多個結構描述。 這項功能變更現在可防止嘗試在單一呼叫中傳送大量內容。

連接器參數

除了簡單的字串和數字輸入以外,SAP 連接器也接受下資料表參數 (Type=ITAB 輸入):

  • 較舊 SAP 版本的資料表方向參數,包括輸入和輸出。
  • 參數變更,以取代較新 SAP 版本的資料表方向參數。
  • 階層式資料表參數。

已知問題與限制

SAP 受控連接器

  • SAP 連接器目前不支援 SAP 路由器字串。 內部部署資料閘道必須存在於虛擬網路,閘道可以在其中直接連線到您想連線的 SAP 系統。

  • 一般而言,SAP 觸發程序不支援資料閘道叢集。 在某些容錯移轉案例中,與 SAP 系統通訊的資料閘道節點可能會與作用中節點不同,而導致非預期的行為。

    • 在傳送訊息案例中,支援容錯移轉中的資料閘道叢集。

    • 具狀態 SAP 動作不支援負載平衡模式中的資料閘道叢集。 具狀態通訊必須保留在相同的資料閘道叢集節點上。 僅在非叢集模式或在針對容錯移轉設定的叢集中使用資料閘道。 例如,這些動作包括下列項目:

      • 指定 [工作階段識別碼] 值的所有動作
      • [BAPI] 認可交易
      • [BAPI] 復原交易
      • [BAPI - RFC] 關閉具狀態工作階段
      • [BAPI - RFC] 建立具狀態工作階段
  • 在名為 [BAPI] 在 SAP 中呼叫方法的動作中,如果動作傳回的 CallBapiResponse 物件中至少有一個警告存在,則自動認可功能不會認可 BAPI 變更。 若要認可 BAPI 變更,儘管有任何警告,請遵循下列步驟:

    1. 使用名為 [BAPI - RFC] 建立具狀態工作階段的動作,明確建立工作階段。
    2. 在名為 [BAPI] 在 SAP 中呼叫方法的動作中,停用自動認可功能。
    3. 請改為呼叫名為 [BAPI] 認可交易的動作。

對 SAP Message Server 的 IP 型連線 (負載平衡組態)

如果您指定 IP 位址來連線到 SAP Message Server (例如負載平衡器),則連線仍然可能失敗並出現類似「主機名稱 SAPDBSERVER01.example.com 未知」的錯誤訊息。 訊息伺服器會指示 SAP 連接器使用主機名稱來連線到後端 SAP Application Server,或負載平衡器後方的伺服器。 如果 DNS 無法解析主機名稱,連線就會失敗。

針對此問題,存在下列因應措施或解決方案:

  • 確定進行連線的用戶端 (例如具有 SAP 連接器內部部署資料閘道的電腦) 可以解析訊息伺服器所傳回的主機名稱。

  • 在名為 RZ11 的交易中,變更或新增名為 ms/lg_with_hostname=0 的 SAP 設定。

問題內容或背景

SAP 已將其 .NET 連接器 (NCo) 升級至 3.1 版,這改變了連接器要求從訊息伺服器連線到後端伺服器的方式。 除非您強制連接器透過名為 ms/lg_with_hostname=0` 的設定使用先前的 API,否則連接器現在會使用新的 API 進行應用程式伺服器解析。 如需詳細資訊,請參閱 SAP KB 文章 3305039 - 在登入群組登入期間未考慮的 SMLG IP 位址設定

必要條件

  • Azure 帳戶和訂用帳戶。 如果您還沒有 Azure 訂用帳戶,請先註冊免費的 Azure 帳戶

  • 您想要從 Azure Logic Apps 存取的 SAP Application ServerSAP Message Server

    • 設定 SAP 伺服器和使用者帳戶,以允許使用 RFC。

      如需詳細資訊,包括支援的使用者帳戶類型和每個動作類型 (RFC、BAPI、IDoc) 的最低必要授權,請檢閱下列 SAP 附註:460089 - Minimum authorization profiles for external RFC programs

    • 您的 SAP 使用者帳戶需要存取 RFC_METADATA 函式群組,以及下列作業的個別函式模組:

      作業 存取功能模組
      RFC 動作 RFC_GROUP_SEARCHDD_LANGU_TO_ISOLA
      BAPI 動作 BAPI_TRANSACTION_COMMITBAPI_TRANSACTION_ROLLBACKRPY_BOR_TREE_INITSWO_QUERY_METHODSSWO_QUERY_API_METHODS
      IDoc 動作 IDOCTYPES_LIST_WITH_MESSAGESIDOCTYPES_FOR_MESTYPE_READINBOUND_IDOCS_FOR_TIDOUTBOUND_IDOCS_FOR_TIDGET_STATUS_FROM_IDOCNRIDOC_RECORD_READ
      讀取 SAP 資料表動作 RFC BBP_RFC_READ_TABLERFC_READ_TABLE
      授與嚴格的最低 SAP 伺服器存取權給您的 SAP 連接 RFC_METADATA_GETRFC_METADATA_GET_TIMESTAMP
  • 您想在其中存取 SAP 伺服器的邏輯應用程式工作流程。

  • 根據預設,SAP 內建連接器作業為無狀態。 若要以具狀態模式執行這些作業,請參閱為無狀態內建連接器啟用具狀態模式

  • 若要使用名為 When a message is received 的 SAP 受控或內建連接器觸發程序,請完成下列工作:

    • 設定 SAP 閘道安全性權限或存取控制清單 (ACL)。 在 [閘道監視器] (T-Code SMGW) 對話方塊 (顯示 secinforeginfo 檔案) 中,開啟 [Goto] 功能表,然後選取 [專家函式]>[外部安全性]>[ACL 檔案的維護]

      需要下列權限設定:

      P TP=LOGICAPP HOST=<on-premises-gateway-server-IP-address> ACCESS=*

      此行的格式如下:

      P TP=<trading-partner-identifier-(program-name)-or-*-for-all-partners> HOST=<comma-separated-list-with-external-host-IP-or-network-names-that-can-register-the-program> ACCESS=<*-for-all-permissions-or-a-comma-separated-list-of-permissions>

      如果您未設定 SAP 閘道安全性權限,則可能會收到下列錯誤:

      不允許從主機 <host-name> 註冊 tp Microsoft.PowerBI.EnterpriseGateway

      如需詳細資訊,請檢閱 SAP 附註 1850230 - GW: "Registration of tp <program ID> not allowed"

    • 設定 SAP 閘道安全性記錄,以協助尋找存取控制清單 (ACL) 問題。 如需詳細資訊,請檢閱用於設定閘道記錄的 SAP 說明主題

    • 在 [ 設定 RFC 連線] (T-Code SM59) 對話方塊中,建立具有 TCP/IP 類型的 RFC 連線。 請確定 [啟用類型] 設定為 [已註冊的伺服器程式]。 將 RFC 連線的 [與目標系統的通訊類型] 值設定為 [Unicode]

    • 如果您使用此 SAP 觸發程序搭配設為 [FlatFile]的 [IDOC 格式] 參數以及一般檔案解碼動作,則必須將 early_terminate_optional_fields 屬性值設定為 true以在一般檔案結構描述中使用該屬性。

      這是必要的需求,因為 SAP 在 tRFC 呼叫 IDOC_INBOUND_ASYNCHRONOUS 上傳送的一般檔案 IDoc 資料記錄不會填補至完整的 SDATA 欄位長度。 Azure Logic Apps 會提供一般檔案 IDoc 原始資料,而不需要在從 SAP 收到時填補。 此外,當您將此 SAP 觸發程序與一般檔案解碼動作結合時,提供給此動作的結構描述必須相符。

    • 在取用和標準工作流程中,名為 When a message is received 的 SAP 受控觸發程序使用相同的 URI 位置來續訂和取消訂閱 Webhook 訂用帳戶。 更新作業會使用 HTTP PATCH 方法,而取消訂閱作業則會使用 HTTP DELETE 方法。 此行為可能會讓更新作業在觸發程序的歷程記錄中顯示為取消訂閱作業,但作業仍為更新,因為觸發程序使用 PATCH 作為 HTTP 方法,而不是 DELETE

      在標準工作流程中,名為 When a message is received 的 SAP 內建觸發程序改用 Azure Functions 觸發程序,且只顯示來自 SAP 的實際回呼。

    • 針對名為 When a message is received 的 SAP 內建連接器觸發程序,您必須遵循在 Standard 中為具狀態 Logic Apps 啟用服務匯流排和 SAP 內建連接器一文來啟用虛擬網路整合和私人連接埠。 您也可在 Visual Studio Code 中執行工作流程,以在本機引發觸發程序。 如需 Visual Studio Code 設定需求和詳細資訊,請參閱使用 Visual Studio Code 在單一租用戶 Azure Logic Apps 中建立標準邏輯應用程式工作流程。 您也必須在安裝 Visual Studio Code 的電腦上設定下列環境變數:

    • WEBSITE_PRIVATE_IP:將此環境變數值設定為 127.0.0.1 作為 localhost 位址。
    • WEBSITE_PRIVATE_PORTS:將此環境變數值設定為本機電腦上的兩個可用連接埠,並以逗號分隔值(,),例如 8080,8088
  • 要傳送至 SAP 伺服器的訊息內容,如 IDoc 範例檔。 此內容必須為 XML 格式,而且包含您要使用的 SAP 動作的命名空間。 您可以將 IDocs 包裝在 XML 信封以使用一般檔案結構描述來傳送 IDocs

  • 如果您想要將 IDocs 從邏輯應用程式工作流程傳送至 SAP 的案例,請將您的 SAP 處理模式從預設 的 [觸發程式] 立即設定為 [由背景程式 觸發],讓您的工作流程不會逾時。

    例如,如果您的 SAP 系統負載不足,則當工作流程一次將一批 IDocs 傳送至 SAP 時,佇列的 IDoc 會呼叫逾時。默認處理模式會讓您的 SAP 系統封鎖 IDoc 傳輸的輸入呼叫,直到 IDoc 完成處理為止。 在 Azure Logic Apps 中,工作流程動作預設會有 2 分鐘的逾時。

    若要變更 SAP 系統的處理模式,請遵循下列步驟:

    1. 在 SAP 中,尋找 SAP 合作夥伴設定檔,然後開啟 [合作夥伴設定檔 ] 設定。 您可使用 we20 交易碼 (T-Code) 搭配 /n 前置詞。

    2. 在 [輸入選項] 索引標籤的 [依函式模組處理] 底下,將設定從 [立即觸發程式] 變更為 [依背景程序觸發]。

      [ 依背景程序 觸發程式] 設定可讓基礎 IDoc 傳輸 tRFC 呼叫 IDOC_INBOUND_ASYNCHRONOUS 立即完成,而不是封鎖連線,直到 IDoc 完成處理為止。 不過,此設定只有在 IDoc 不包含 Express 行為覆寫區段時才有效,每個 SAP 支援附註1777090 - IDocs 會立即處理,儘管 WE20 - SAP for Me 中已選取 [觸發背景程式] 選項。

    如需詳細資訊,請參閱以下資源:

網路連線必要條件

SAP 系統需要來自 SAP .NET Connector (NCo) 程式庫主機的網路連線能力:

  • 針對多租用戶 Azure Logic Apps 中的取用邏輯應用程式工作流程,內部部署資料閘道會裝載 SAP .NET 連接器 (NCo) 程式庫。 如果您使用內部部署資料閘道叢集,則叢集的所有節點都需要 SAP 系統的網路連線能力。

  • 針對單一租用戶 Azure Logic Apps 中的標準邏輯應用程式工作流程,邏輯應用程式資源會裝載 SAP .NET 連接器 (NCo) 程式庫。 因此,邏輯應用程式資源本身必須啟用虛擬網路整合,而且該虛擬網路必須具有 SAP 系統的網路連線能力。

SAP 系統所需的網路連線能力包括下列伺服器和服務:

  • SAP 應用程式伺服器、發送器服務 (適用於所有登入類型)

    您的 SAP 系統可以包含多個 SAP 應用程式伺服器。 SAP .NET Connector (NCo) 程式庫的主機需要存取每部伺服器及其服務。

  • SAP 訊息伺服器、訊息服務 (適用於登入類型群組)

    訊息伺服器和服務會重新導向至一或多部應用程式伺服器的發送器服務。 SAP .NET Connector (NCo) 程式庫的主機需要存取每部伺服器及其服務。

  • SAP 閘道伺服器、閘道服務

  • SAP 閘道伺服器、閘道安全服務

    SAP 系統所需的網路連線能力也包含此伺服器和服務,可與安全網路通訊 (SNC) 搭配使用。

將要求從應用程式伺服器、發送器服務重新導向至閘道伺服器,閘道服務會在 SAP .NET Connector (NCo) 程式庫內自動發生。 即使只有應用程式伺服器、發送器服務資訊是在連線參數中提供,還是會發生此重新導向。

如果您在 SAP 系統前面使用負載平衡器,您必須將所有服務重新導向至其各自的伺服器。 如需 SAP 服務和連接埠的詳細資訊,請檢閱所有 SAP 產品的 TCP/IP 連接埠

注意

請確定您已從 SAP .NET Connector (NCo) 程式庫的主機啟用網路連線,且所需的連接埠已在防火牆和網路安全性群組上開啟。 否則,您會從 NI (網路介面) 元件得到未觸達合作夥伴之類的錯誤,以及 WSAECONNREFUSED:連線遭到拒絕之類的錯誤文字。

SAP NCo 用戶端程式庫必要條件

若要使用 SAP 連接器,您必須安裝適用於 Microsoft .NET 3.1 的 SAP 連接器 NCo 用戶端程式庫。 下列清單會根據您使用 SAP 連接器的工作流程,說明 SAP NCo 用戶端程序庫的必要條件:

  • 版本:

  • 從用戶端程式庫的預設安裝資料夾,根據您的案例,將組件 (.dll) 檔案複製到另一個位置,如下所示。 或者,如果您只使用 SAP 受控連接器,當您安裝 SAP NCo 用戶端程式庫時,請選取 [全域組件快取註冊]。 SAP 內建連接器目前不支援 GAC 註冊。

    • 針對在多租用戶 Azure Logic Apps 中執行的取用工作流程,並使用內部部署資料閘道,請將下列組件 (.dll) 檔案複製到內部部署資料閘道安裝資料夾,例如 C:\Program Files\On-Premises Data Gateway。 SAP NCo 3.0 用戶端程式庫包含下列組件:

      • libicudecnumber.dll
      • rscp4n.dll
      • sapnco.dll
      • sapnco_utils.dll

      請確定將組件檔複製到資料閘道的安裝資料夾。 否則,您的 SAP 連線可能會因為錯誤訊息而失敗:請檢查您的帳戶資訊和/或權限,然後再試一次。 您可以使用 .NET 組件繫結記錄檢視器,針對進一步的問題進行疑難排解。 此工具可讓您檢查組件檔案是否位於正確的位置。

    • 針對標準工作流程,將下列組件 (.dll) 檔案複製到您可將其上傳至邏輯應用程式資源的位置,或您要建置工作流程的專案 (分別在 Azure 入口網站或在 Visual Studio Code 本機)。 SAP NCo 3.1 用戶端程式庫包含下列組件:

      • rscp4n.dll
      • sapnco.dll
      • sapnco_utils.dll

SAP NCo 用戶端程式庫、.NET Framework、.NET 執行階段和資料閘道之間存在下列關聯性:

  • Microsoft SAP Adapter 與閘道主機服務都使用 .NET Framework 4.7.2。

  • 適用於 .NET Framework 4.0 的 SAP NCo 可搭配使用 .NET Runtime 4.0 到 4.8 的程序運作。

  • 適用於 .NET Framework 2.0 的 SAP NCo 可搭配使用 .NET Runtime 2.0 到 3.5 版的程序運作,但無法再搭配最新閘道運作。

SNC 必要條件

針對使用內部部署資料閘道的多租用戶 Azure Logic Apps 中的取用工作流程 (以及選擇性地針對 SNC),您也必須設定下列設定。

  • 確定您的 SNC 程式庫版本及其相依性與您的 SAP 環境相容。 若要針對任何程式庫相容性問題進行疑難排解,您可以使用內部部署資料閘道和資料閘道記錄。

  • 請確定您已將 SAP NCo 3.0 用戶端程式庫中的下列組件 (.dll) 檔案複製到內部部署資料閘道的安裝資料夾,例如,C:\Program Files\On-Premises Data Gateway

    • libicudecnumber.dll
    • rscp4n.dll
    • sapnco.dll
    • sapnco_utils.dll
  • 對於 SAPGENPSE 公用程式,您必須特別使用 sapgenpse.exe

  • 如果您透過連線提供個人安全性環境 (PSE),則不需要複製並設定內部部署資料閘道的 PSE 和 SECUDIR。

  • 如果您透過外部安全性產品啟用 SNC,例如 sapseculib、Kerberos 或 NTLM,請確定 SNC 程式庫存在於與資料閘道安裝相同的電腦上。 針對這項工作,請將 SNC 程式庫的二進位檔複製到與本機電腦上資料閘道安裝相同的資料夾,例如,C:\Program Files\On-Premises Data Gateway

    注意

    在具有資料閘道安裝和 SNC 程式庫的電腦上,請勿為 SNC_LIBSNC_LIB_64 設定環境變數。 否則,這些變數優先於透過連接器傳遞的 SNC 程式庫值。

  • 如果您使用 SNC 搭配單一登入 (SSO),請確定資料閘道服務是以 SAP 使用者的對應使用者身分執行。 若要變更閘道服務帳戶的預設帳戶,請選取 [變更帳戶],然後輸入使用者認證。

    此螢幕擷取畫面顯示內部部署的資料閘道安裝程式和 [服務設定] 頁面,其中已選取用來變更閘道服務帳戶的按鈕。

如需啟用 SNC 的詳細資訊,請參閱啟用安全網路通訊 (SNC)

Azure Logic Apps 環境必要條件

針對多租用戶 Azure Logic Apps 中的取用工作流程,SAP 受控連接器會透過內部部署資料閘道與 SAP 系統整合。 例如,在工作流程將訊息傳送至 SAP 系統的情況下,資料閘道會作為 RFC 用戶端,並將從工作流程接收的要求轉送至 SAP。 同樣地,在工作流程從 SAP 接收訊息的情況下,資料閘道會作為 RFC 伺服器,接收來自 SAP 的要求並將其轉送至您的工作流程。

  1. 在與您連線的 SAP 系統相同的虛擬網路中存在的主機電腦或虛擬機器上,下載並安裝內部部署資料閘道

    資料閘道可協助您安全地存取內部部署的資料和資源。 務必使用支援的閘道版本。 如果您遇到閘道的問題,請嘗試升級至最新版本,這可能包括用以解決問題的更新。

  2. 在 Azure 入口網站中,為您的內部部署資料閘道安裝建立 Azure 閘道資源

  3. 在與您的內部部署資料閘道安裝相同的本機電腦上,下載並安裝最新的 SAP NCo 用戶端程式庫

  4. 針對具有內部部署資料閘道安裝的主機電腦,設定網路主機名稱和服務名稱解析。

    • 若要針對來自Azure Logic Apps 的連線使用主機名稱或服務名稱,您必須為每個 SAP 應用程式、訊息和閘道伺服器以及其服務設定名稱解析:

      • %windir%\System32\drivers\etc\hosts 檔案中,或在內部部署資料閘道安裝的主機電腦可用的 DNS 伺服器中,設定網路主機名稱解析。

      • %windir%\System32\drivers\etc\services 檔案中,設定服務名稱解析。

    • 如果您不打算使用網路主機名稱或服務名稱進行連線,您可改用主機 IP 位址和服務連接埠號碼。

    • 如果您沒有 SAP 系統的 DNS 項目,下列範例顯示主機檔案的範例項目:

      10.0.1.9           sapserver                   # SAP single-instance system host IP by simple computer name
      10.0.1.9           sapserver.contoso.com       # SAP single-instance system host IP by fully qualified DNS name
      

      下列清單顯示服務檔案的一組範例項目:

      sapdp00            3200/tcp              # SAP system instance 00 dialog (application) service port
      sapgw00            3300/tcp              # SAP system instance 00 gateway service port
      sapmsDV6           3601/tcp              # SAP system ID DV6 message service port
      

啟用安全網路通訊 (SNC)

針對在多租用戶 Azure Logic Apps 中執行的取用工作流程,您可以啟用 SNC 進行驗證,這僅適用於您使用資料閘道時。 開始之前,請確定您已符合所有必要條件SNC 必要條件

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

  2. 新增或編輯 SAP 受控連接器作業。

  3. 在 SAP 連線資訊方塊中,提供下列必要資訊。 您選取的 [驗證類型] 會變更可用的選項。

    此螢幕擷取畫面顯示取用的 SAP 連線設定。

    注意

    [SAP 使用者名稱] 和 [SAP 密碼] 都是選擇性欄位。 如果您未提供使用者名稱和密碼,連接器會使用後續步驟中提供的用戶端憑證來進行驗證。

  4. 若要啟用 SNC,請在 SAP 連線資訊方塊中,改為提供下列必要資訊:

    此螢幕擷取畫面顯示取用已啟用 SNC 的 SAP 連線設定。

    參數 描述
    使用 SNC 選取核取方塊。
    SNC 程式庫 輸入下列其中一個值:

    - SNC 程式庫的名稱,例如 sapsnc.dll
    - NCo 安裝位置的相對路徑,例如 .\security\sapsnc.dll
    - NCo 安裝位置的安裝路徑,例如 c:\security\sapsnc.dll
    SNC SSO 選取 [使用 SNC 身分識別登入] 或 [使用 RFC 層級上提供的使用者名稱/密碼登入]

    通常,SNC 身分識別用於驗證呼叫端。 您可選擇改為使用使用者名稱和密碼進行驗證,但此參數值仍會加密。
    SNC My 名稱 在大部分情況下,您可以省略此值。 已安裝的 SNC 解決方案通常會知道自己的 SNC 名稱。 如果您的解決方案支援多個身分識別,您可能必須指定要用於這個特定目的地或伺服器的身分識別。
    SNC 合作夥伴名稱 輸入後端 SNC 的名稱,例如 p:CN=DV3, OU=LA, O=MS, C=US
    SNC 保護品質 選取要用於與此特定目的地或伺服器進行 SNC 通訊的服務品質。 預設值由後端系統所定義。 最大值是由用於 SNC 的資訊安全產品定義。
    SNC 憑證 輸入 base64 編碼的公用金鑰,讓憑證用於對 SAP 識別您的用戶端。

    注意:請勿包含 PEM 頁首或頁尾。

    - 請勿在此輸入用戶端憑證的私密金鑰。 您的個人安全性環境 (PSE) 必須包含此憑證的相符私密金鑰,而且可能包含其他私人憑證。 如需詳細資訊,請檢閱下一個參數。
    PSE 以 base64 編碼的二進位檔的格式輸入您的 SNC 個人安全性環境 (PSE)。

    - 您的 PSE 必須包含用戶端憑證的私密金鑰,其中指紋符合 [SNC 憑證] 參數中用戶端憑證的公開金鑰。

    - 雖然您的 PSE 可能包含多個用戶端憑證,但若要使用不同的用戶端憑證,請改為建立個別的工作流程。

    - 如果您對標準邏輯應用程式資源使用多個 SNC 用戶端憑證,則必須為所有連線提供相同的 PSE。 您的 PSE 必須包含每個和所有連線之用戶端憑證的相符私密金鑰。 您必須設定 [SNC 憑證] 參數,以符合每個連線的特定私人憑證。
  5. 若要完成連線建立,請選取 [建立]

    如果參數正確,則會建立連線。 如果參數發生問題,連線建立對話方塊會顯示錯誤訊息。 若要針對連線參數問題進行疑難排解,您可以使用內部部署資料閘道安裝和閘道的本機記錄。

將二進位 PSE 檔案轉換成 base64 編碼格式

  1. 使用 PowerShell 指令碼,例如:

    Param ([Parameter(Mandatory=$true)][string]$psePath, [string]$base64OutputPath)
    $base64String = [convert]::ToBase64String((Get-Content -path $psePath -Encoding byte))
    if ($base64OutputPath -eq $null)
    {
        Write-Output $base64String
    }
    else
    {
        Set-Content -Path $base64OutputPath -Value $base64String
        Write-Output "Output written to $base64OutputPath"
    } 
    
  2. 將指令碼儲存為 pseConvert.ps1 檔案,然後叫用指令碼,例如:

    .\pseConvert.ps1 -psePath "C:\Temp\SECUDIR\request.pse" -base64OutputPath "connectionInput.txt"
    Output written to connectionInput.txt 
    

    如果您未提供輸出路徑參數,則指令碼對控制台的輸出會包含分行符號。 移除連線輸入參數之基底 64 編碼字串的分行符號。

設定及測試將 IDocs 從 SAP 傳送至您的工作流程

若要將 IDocs 從 SAP 傳送至邏輯應用程式工作流程,請遵循下列步驟來設定及測試邏輯應用程式工作流程的 SAP 組態。 這些步驟僅適用於測試,因為生產環境需要額外的設定。

若要將 IDocs 從 SAP 傳送至工作流程,您需要下列最小設定:

  1. 建立 RFC 目的地。
  2. 建立 ABAP 連線。
  3. 建立接收者連接埠。
  4. 建立傳送者連接埠。
  5. 建立邏輯系統合作夥伴。
  6. 建立合作夥伴設定檔。
  7. 測試傳送訊息。

建立 RFC 目的地

此目的地會將邏輯應用程式工作流程識別為接收埠。

  1. 在 SAP 中,開啟 [RFC 連線組態] 設定。 您可使用 sm59 交易碼 (T-Code) 搭配 /n 前置詞。

  2. 選取 [TCP/IP 連線]>[建立]

  3. 使用下列設定建立新的 RFC 目的地:

    1. 針對您的 [RFC 目的地],輸入名稱。

    2. 在 [技術設定] 索引標籤上,針對 [啟用類型],選取 [已註冊的伺服器程式]

    3. 針對 [程式識別碼],輸入一個值。 在 SAP 伺服器中,工作流程的觸發程序會使用此識別碼進行註冊。

      重要

      SAP [程式識別碼] 會區分大小寫。 當您設定工作流程和 SAP 伺服器時,請務必對您的 [程式識別碼] 一致使用相同的大小寫格式。 否則,當您嘗試將 IDoc 傳送至 SAP 時,您可能會在 tRFC 監視器 (T-Code SM58) 中收到下列錯誤:

      • 找不到 IDOC_INBOUND_ASYNCHRONOUS 函式
      • 不支援非 ABAP RFC 用戶端 (合作夥伴類型)

      如需更多來自 SAP 的資訊,請檢閱下列附註 (需要登入):

    4. 在 [Unicode] 索引標籤上,針對 [與目標系統的通訊類型],選取 [Unicode]

      注意

      SAP .NET 用戶端程式庫僅支援 Unicode 字元編碼。 如果您在將 IDoc 從 SAP 傳送至 Azure Logic Apps 時,收到不支援非 ABAP RFC 用戶端 (合作夥伴類型) 錯誤,請檢查 [與目標系統的通訊類型] 值是否設定為 [Unicode]

  4. 儲存您的變更。

  5. 建立以名為 When a message is received 的 SAP 受控觸發程序起始的邏輯應用程式工作流程,向 Azure Logic Apps 註冊新的 [程式識別碼]

    如此一來,當您儲存工作流程時,Azure Logic Apps 會在 SAP 閘道上註冊 [程式識別碼]

  6. 在工作流程的觸發程序歷程記錄中,內部部署資料閘道 SAP Adapter 記錄 (適用的話) 和 SAP 閘道追蹤記錄會檢查註冊狀態。

    在 [SAP 閘道監視器] 方塊 (T-Code SMGW) 的 [登入用戶端] 底下,新的註冊會顯示為 [已註冊的伺服器]

  7. 若要測試連線,請新的 [RFC 目的地] 之下,選取 [連線測試]

建立 ABAP 連線

此目的地會將 SAP 系統識別為傳送埠。

  1. 在 SAP 中,開啟 [RFC 連線組態] 設定。 您可使用 sm59 交易碼 (T-Code) 搭配 /n 前置詞。

  2. 選取 [ABAP連線]>[建立]

  3. 針對 [RFC 目的地],為您的測試 SAP 系統輸入識別碼。

  4. 在 [技術設定] 中,讓目標主機保持空白,以建立 SAP 系統的本機連線。

  5. 儲存您的變更。

  6. 若要測試連線,請選取 [連線測試]

建立傳送者連接埠

  1. 在 SAP 中,開啟 [IDOC 處理中的連接埠] 設定。 您可使用 we21 交易碼 (T-Code) 搭配 /n 前置詞。

  2. 選取 [連接埠]>[交易式 RFC]>[建立]

  3. 在開啟的 [設定] 方塊中,選取自己的連接埠名稱

  4. 針對您的測試連接埠,輸入以 SAP開頭的 [名稱]。 儲存您的變更。

    所有傳送者連接埠名稱都必須以字母 SAP 開頭,例如 SAPTEST

  5. 在新傳送者連接埠的設定中,針對 [RFC 目的地],輸入 ABAP 連線的識別碼。

  6. 儲存您的變更。

建立接收者連接埠

  1. 在 SAP 中,開啟 [IDOC 處理中的連接埠] 設定。 您可使用 we21 交易碼 (T-Code) 搭配 /n 前置詞。

  2. 選取 [連接埠]>[交易式 RFC]>[建立]

  3. 在開啟的 [設定] 方塊中,選取自己的連接埠名稱。 針對您的測試連接埠,輸入 [名稱]。 儲存您的變更。

  4. 在新接收者連接埠的設定中,針對 [RFC 目的地],輸入測試 RFC 目的地的識別碼。

  5. 儲存您的變更。

建立邏輯系統夥伴

  1. 在 SAP 中,開啟 [變更檢視「邏輯系統」:概觀] 設定。 您可以使用 bd54 交易碼 (T-Code)。

  2. 接受下列出現的警告訊息:注意:資料表為跨用戶端

  3. 在顯示現有邏輯系統的清單上方,選取 [新增項目]

  4. 針對新的邏輯系統,輸入 Log.System 識別碼和簡短的 [名稱] 描述。 儲存您的變更。

  5. 出現 [工作台提示] 時,提供描述來建立新的要求,若已經建立要求,請略過此步驟。

  6. 建立工作台要求之後,將該要求連結至資料表更新要求。 若要確認您的資料表已更新,請儲存變更。

建立合作夥伴設定檔

針對生產環境,您必須建立下列兩個合作夥伴配置檔:

  • 寄件者的其中一個配置檔,也就是您的組織和 SAP 系統。
  • 接收者的其中一個配置檔,也就是邏輯應用程式資源和工作流程。
  1. 在 SAP 中,開啟 [合作夥伴配置檔] 設定。 您可使用 we20 交易碼 (T-Code) 搭配 /n 前置詞。

  2. 在 [合作夥伴設定檔] 底下,選取 [合作夥伴類型 LS]>[建立]

  3. 使用下列設定建立新的合作夥伴設定檔:

    設定 描述
    合作夥伴編號。 輸入您的邏輯系統合作夥伴的識別碼
    合作夥伴。 類型 輸入 LS
    專員 輸入當您為 Azure Logic Apps 或其他非 SAP 系統註冊程式識別碼時,所要使用的 SAP 使用者帳戶識別碼。
  4. 儲存您的變更。

    如果您未 建立邏輯系統夥伴,您會收到錯誤, 請輸入有效的合作夥伴號碼

  5. 在合作夥伴設定檔的設定中,於 [輸出參數] 底下選取 [建立輸出參數]

  6. 使用下列設定建立新的輸出參數:

  7. 儲存您的變更。

測試傳送訊息

  1. 在 SAP 中,開啟 [IDoc 處理的測試工具] 設定。 您可使用 we19 交易碼 (T-Code) 搭配 /n 前置詞。

  2. 在 [測試的範本] 之下,選取 [透過訊息類型]。 輸入您的訊息類型,例如 CREMAS。 選取 建立

  3. 選取 [繼續],以確認 [何種 IDoc 類型?] 訊息。

  4. 選取 EDIDC 節點。 輸入接收者和傳送者連接埠的適當值。 選取繼續

  5. 選取 [標準輸出處理]

  6. 若要開始輸出 IDoc 處理,請選取 [繼續]

    當工作完成處理時,[IDoc 已傳送至 SAP 系統或外部程式] 訊息隨即出現。

  7. 若要檢查處理錯誤,請使用 sm58 交易代碼 (T-Code) 搭配 /n 前置詞。

為常見的 SAP 案例建立工作流程

如需為常見的 SAP 整合工作負載建立工作流程的操作指南,請參閱下列步驟:

建立進階 SAP 案例的工作流程

尋找擴充的錯誤記錄 (僅限受控連接器)

如果您使用 SAP 受控連接器,您可藉由檢查 SAP 配接器的擴充記錄來尋找完整的錯誤訊息。 您也可以啟用 SAP 連接器的擴充記錄檔

  • 對於 2020 年 4 月和更早的內部部署資料閘道版本,預設會停用記錄。

  • 對於 2020 年 6 月和更新的內部部署資料閘道版本,您可以在應用程式設定中啟用閘道記錄

    • 預設記錄層級為 [警告]

    • 如果您在內部部署資料閘道應用程式的 [診斷] 設定中啟用 [其他記錄],則記錄層級會提升為 [告知性]

    • 若要將記錄層級提升至 [詳細資訊],請在組態檔中更新下列設定。 通常,此組態檔位於 C:\Program Files\On-premises data gateway\Microsoft.PowerBI.DataMovement.Pipeline.GatewayCore.dll.config

      <setting name="SapTraceLevel" serializeAs="String">
         <value>Verbose</value>
      </setting>
      

在內部部署資料閘道中設定擴充的 SAP 記錄 (僅限受控連接器)

如果您使用 Azure Logic Apps 的內部部署資料閘道,則可設定 SAP 連接器的擴充記錄檔。 您可以使用內部部署資料閘道,重新導向 Windows (ETW) 事件的事件追蹤,以輪替閘道記錄 .zip 檔案中包含的記錄檔。

您可以從閘道應用程式的設定,將所有閘道的組態和服務記錄匯出至 .zip 檔案。

注意

一律啟用時,擴充記錄可能會影響工作流程的效能。 最佳做法是在完成問題的分析和疑難排解之後,關閉擴充記錄檔。

擷取 ETW 事件

作為選擇性進階記錄工作,您可以直接擷取 ETW 事件,然後取用事件中樞的 Azure 診斷資料將資料收集至 Azure 監視器記錄。 如需詳細資訊,請檢閱收集和儲存資料的最佳做法

若要處理所產生的 ETL 檔案,您可使用 PerfView,也可撰寫自己的程式。 下列逐步解說使用 PerfView:

  1. 在 PerfView 功能表中,選取 [收集]>[收集] 以擷取事件。

  2. 在 [其他提供者] 參數中,輸入 *Microsoft-LobAdapter 以指定要擷取 SAP Adapter 事件的 SAP 提供者。 如果您未指定這項資訊,您的追蹤只會包含一般 ETW 事件。

  3. 請保留預設設定。 如有需要,您可以在 [資料檔案] 欄位中變更檔案名稱或位置。

  4. 選取 [開始收集] 以開始追蹤。

  5. 重現您的問題或收集足夠的分析資料之後,請選取 [停止收集]

  6. 若要與另一方 (例如 Azure 支援工程師) 共用您的資料,請壓縮 ETL 檔案。ETL

  7. 若要檢視追蹤的內容:

    1. 在 PerfView 中,選取 [檔案]>[開啟],然後選取您剛才產生的 ETL 檔案。

    2. 在 PerfView 資訊看板中,ETL 檔案之下的 [事件] 區段。

    3. 在 [篩選] 底下,依據 Microsoft-LobAdapter 篩選,僅檢視相關的事件和閘道程序。

測試工作流程

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

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

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

  3. 若要觸發工作流程,請從 SAP 系統傳送訊息。

  4. 返回邏輯應用程式的 [概觀] 窗格。 在 [執行歷程記錄] 下,尋找工作流程的任何新執行回合。

  5. 開啟最新的執行,其顯示手動執行。 尋找並檢閱觸發程序輸出區段。

開啟 SAP 用戶端程式庫 (NCo) 記錄與追蹤 (僅限內建連接器)

當您必須調查此元件的任何問題時,您可以設定自訂文字檔型 NCo 追蹤,SAP 或 Microsoft 支援可能會向您提出該要求。 根據預設,此功能會停用,因為啟用此追蹤可能會對效能造成負面影響,並快速取用應用程式主機的儲存空間。

您可藉由新增下列設定,在應用程式層級控制此追蹤功能:

  1. Azure 入口網站中,開啟您的標準邏輯應用程式資源。

  2. 在邏輯應用程式功能表的 [設定] 之下,選取 [環境變數] 以檢閱應用程式設定。

  3. 在 [環境變數] 頁面的 [應用程式設定] 索引標籤上,新增下列應用程式設定:

    • SAP_RFC_TRACE_DIRECTORY:儲存 NCo 追蹤檔案的目錄,例如 C:\home\LogFiles\NCo

    • SAP_RFC_TRACE_LEVEL:具有 Level4 的 NCo 追蹤層級,作為一般詳細資訊記錄的建議值。 SAP 或 Microsoft 支援可能會要求您設定不同的追蹤層級

      注意

      對於使用執行階段 1.69.0 版或更新版本的標準邏輯應用程式工作流程,您可以用逗號 (,) 分隔每個追蹤層級,藉以啟用多個追蹤層級的記錄。

      若要尋找工作流程的執行階段版本,請遵循下列步驟:

      1. 在 Azure 入口網站的工作流程功能表上,選取 [概觀]
      2. 在 [基本資訊] 區段中,尋找 [執行階段版本] 屬性。
    • SAP_CPIC_TRACE_LEVEL:一般詳細資訊記錄的建議值為 [詳細資訊] 的 Common Programming Interface for Communication (CPI-C) 追蹤層級。 SAP 或 Microsoft 支援可能會要求您設定不同的追蹤層級

    如需新增應用程式設定的詳細資訊,請參閱編輯標準邏輯應用程式工作流程的主機和應用程式設定

  4. 儲存您的變更。 此步驟會重新啟動應用程式。

可用的追蹤層級

NCo 追蹤層級

Description
Level1 用於追蹤遠端函式呼叫的層級。
Level2 用以追蹤遠端函式呼叫和公用 API 方法呼叫的層級。
Level3 用於追蹤遠端函式呼叫、公用 API 方法呼叫和內部 API 方法呼叫的層級。
Level4 用於追蹤遠端函式呼叫、公用 API 方法呼叫、內部 API 方法呼叫、RFC 通訊協定的十六進位傾印,以及網路相關資訊的層級。
鎖定 將資料寫入追蹤檔案,以在執行緒要求、取得和解開物件鎖定時顯示。
中繼資料 追蹤每個呼叫之遠端函式呼叫所涉及的中繼資料。
用於隱藏所有追蹤輸出的層級。
ParameterData 追蹤每個遠端函式呼叫期間所傳送和接收的容器資料。
效能 將資料寫入可協助分析效能問題的追蹤檔案。
PublicAPI 追蹤公用 API 的大部分方法,但 getter、setter 或相關方法除外。
InternalAPI 追蹤內部 API 的大部分方法,但 getter、setter 或相關方法除外。
RemoteFunctionCall 追蹤遠端函式呼叫。
RfcData 追蹤每個遠端函式呼叫期間所傳送和接收的位元組。
SessionProvider 追蹤目前使用之 ISessionProvider 實作的所有方法。
SetValue 將資訊寫入追蹤檔案,該資訊有關針對函式參數或結構欄位或資料表欄位所設定的值。

CPIC 追蹤層級

描述
關閉 不記錄
基本 基本記錄
詳細資訊 詳細資訊記錄
VerboseWithData 具有所有伺服器回應傾印的詳細資訊記錄

檢視追蹤

  1. 在標準邏輯應用程式資源功能表的 [開發工具] 下,選取 [進階工具]>[執行]

  2. 在 [Kudu] 工具列上,選取 [偵錯主控台]>[CMD]

  3. 瀏覽至名為 $SAP_RFC_TRACE_DIRECTORY 的應用程式設定的資料夾。

    名為 NCo 的新資料夾,或您所使用的任何資料夾名稱,都會針對您稍早設定的應用程式設定值 C:\home\LogFiles\NCo 出現。

  4. 開啟 $SAP_RFC_TRACE_DIRECTORY 資料夾,其中包含下列檔案:

    • NCo 追蹤記錄:名為 dev_nco_rfc.log 的檔案、一或多個名為 nco_rfc_NNNN.log 的檔案,以及一或多個名為 nco_rfc_NNNN.trc 的檔案,其中 NNNN 是執行緒識別碼。

    • CPIC 追蹤記錄:一或多個名為 nco_cpic_NNNN.trc 的檔案,其中 NNNN 是執行緒識別碼。

  5. 若要檢視記錄檔或追蹤檔中的內容,請選取檔案旁的 [編輯] 按鈕 。

    注意

    如果您下載邏輯應用程式工作流程開啟且目前使用中的記錄檔或追蹤檔,則可能導致下載空白的檔案。

啟用 SAP 通用密碼編譯程式庫 (CCL) 追蹤 (僅限內建連接器)

如果您在使用 SNC 驗證時必須調查密碼編譯程式庫的任何問題,您可以設定自訂文字檔型 CCL 追蹤。 您可以使用這些 CCL 記錄對 SNC 驗證問題進行疑難排解,或是應要求與 Microsoft 或 SAP 支援人員共用記錄。 根據預設,此功能會停用,因為啟用此追蹤可能會對效能造成負面影響,並快速取用應用程式主機的儲存空間。

您可藉由新增下列設定,在應用程式層級控制此追蹤功能:

  1. Azure 入口網站中,開啟您的標準邏輯應用程式資源。

  2. 在標準邏輯應用程式資源功能表的 [開發工具] 下,選取 [進階工具]>[執行]

  3. 在 [Kudu] 工具列上,選取 [偵錯主控台]>[CMD]

  4. 瀏覽至 C:\home\site\wwwroot 底下的位置,並建立文字檔,例如:CCLPROFILE.txt

    如需關於記錄參數的詳細資訊,請參閱追蹤> SAP 附註 2338952。 下列範例提供範例追蹤設定:

    ccl/trace/directory=C:\home\LogFiles\CCLLOGS
    ccl/trace/level=4
    ccl/trace/rotatefilesize=10000000
    ccl/trace/rotatefilenumber=10
    
  5. 在邏輯應用程式功能表的 [設定] 之下,選取 [環境變數] 以檢閱應用程式設定。

  6. 在 [環境變數] 頁面的 [應用程式設定] 索引標籤上,新增下列應用程式設定:

    CCL_PROFILECCLPROFILE.txt 建立所在的目錄,例如 C:\home\site\wwwroot\CCLPROFILE.txt

  7. 儲存您的變更。 此步驟會重新啟動應用程式。

檢視追蹤

  1. 在標準邏輯應用程式資源功能表的 [開發工具] 下,選取 [進階工具]>[執行]

  2. 在 [Kudu] 工具列上,選取 [偵錯主控台]>[CMD]

  3. 瀏覽至 CCLPROFILE.txt 檔案中的 $ccl/trace/directory 參數的資料夾。

    追蹤檔案通常會命名為 sec-Microsoft.Azure.Work-$processId.trcsec-sapgenpse.exe-$processId.trc

    邏輯應用程式工作流程會以雙步驟程序執行 SNC 驗證:

    1. 邏輯應用程式工作流程會叫用 sapgenpse.exe,以從 PSE 檔案產生 cred_v2 檔案。

      您可以在名為 sec-sapgenpse.exe-$processId.trc 的檔案中找到此步驟的相關追蹤。

    2. 邏輯應用程式工作流程會使用產生的 cred_v2 檔案,以 SAP 用戶端程式庫叫用通用密碼編譯程式庫,藉以驗證對 SAP 伺服器的存取。

      您可以在名為 sec-Microsoft.Azure.Work-$processId.trc 的檔案中找到此步驟的相關追蹤。

將內部部署資料閘道的 SAP 遙測傳送至 Azure Application Insights

透過內部部署資料閘道的 2021 年 8 月更新,SAP 連接器作業可以從 SAP NCo 用戶端程式庫傳送遙測資料,並將來自 Microsoft SAP Adapter 的追蹤傳送至 Application Insights,這是 Azure 監視器中的功能。 此遙測主要包含下列資料:

  • 以 SAP NCo 計量和監視器為基礎的計量和追蹤。

  • 來自 Microsoft SAP Adapter 的追蹤。

來自 SAP NCo 用戶端程式庫的計量和追蹤

SAP NCo 型計量是數值,根據內部部署資料閘道上的資源使用量和可用性,此值在一段時間內不一定會有所不同。 您可以使用這些計量來進一步了解系統健康情況,並建立有關下列活動的警示:

  • 系統健康情況衰退。
  • 不尋常的事件。
  • 繁重的系統負載。

此資訊會傳送至名為 customMetrics 的 Application Insights 資料表。 根據預設,計量會以 30 秒的間隔傳送。

SAP NCo 型追蹤包含與計量搭配使用的文字資訊。 此資訊會傳送至名為 traces 的 Application Insights 資料表。 根據預設,追蹤會以 10 分鐘的間隔傳送。

SAP NCo 計量和追蹤是以 SAP NCo 計量為基礎,特別是下列 NCo 類別:

  • RfcDestinationMonitor。
  • RfcConnectionMonitor。
  • RfcServerMonitor。
  • RfcRepositoryMonitor。

若要深入了解每個類別提供的計量,請參閱 SAP NCo 文件 (需要登入)

設定 Application Insights 的 SAP 遙測

您必須先建立和設定 Application Insights 資源,才能將閘道安裝的 SAP 遙測傳送至 Application Insights。 如需詳細資訊,請參閱下列文件:

若要能夠將 SAP 遙測傳送至 Application Insights,請遵循下列步驟:

  1. 從這個位置下載 Microsoft.ApplicationInsights.EventSourceListener.dll 的 NuGet 套件:https://www.nuget.org/packages/Microsoft.ApplicationInsights.EventSourceListener/2.14.0

  2. 將下載的檔案新增至內部部署資料閘道安裝目錄,例如 C:\Program Files\On-Premises Data Gateway

  3. 在您的內部部署資料閘道安裝目錄中,檢查 Microsoft.ApplicationInsights.dll 檔案的版本號碼是否與您新增的 Microsoft.ApplicationInsights.EventSourceListener.dll 檔案相同。 閘道目前使用 2.14.0 版。

  4. ApplicationInsights.config 檔案中,使用 <InstrumentationKey></InstrumentationKey> 元素取消註解程式碼行,以新增您的 Application Insights 檢測金鑰。 以您的金鑰取代預留位置 your-Application-Insights-instrumentation-key,例如:

    <?xml version="1.0" encoding="utf-8"?>
    <ApplicationInsights schemaVersion="2014-05-30" xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings">
       <!-- Uncomment this element and insert your Application Insights key to receive ETW telemetry about your gateway <InstrumentationKey>*your-instrumentation-key-placeholder*</InstrumentationKey> -->
       <TelemetryModules>
          <Add Type="Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights">
             <IsHeartbeatEnabled>false</IsHeartbeatEnabled>
          </Add>
          <Add Type="Microsoft.ApplicationInsights.EventSourceListener.EventSourceTelemetryModule, Microsoft.ApplicationInsights.EventSourceListener">
             <Sources>
                <Add Name="Microsoft-LobAdapter" Level="Verbose" />
             </Sources>
          </Add>
       </TelemetryModules>
    </ApplicationInsights>
    
  5. ApplicationInsights.config 檔案中,您可以根據您的需求變更 SAP 連接器作業所需的追蹤 Level 值,例如:

    <Add Type="Microsoft.ApplicationInsights.EventSourceListener.EventSourceTelemetryModule, Microsoft.ApplicationInsights.EventSourceListener">
       <Sources>
          <Add Name="Microsoft-LobAdapter" Level="Verbose" />
       </Sources>
    </Add>
    

    如需詳細資訊,請參閱下列文件:

  6. 套用變更之後,請重新啟動內部部署資料閘道服務。

在 Application Insights 中檢閱計量

在邏輯應用程式工作流程中執行 SAP 作業之後,您可以檢閱傳送至 Application Insights 的遙測。

  1. 在 Azure 入口網站中開啟 Application Insights 資源。

  2. 在資源功能表的 [監視] 底下,選取 [記錄]

    下列螢幕擷取畫面顯示具有 Application Insights 的 Azure 入口網站,其會開啟至 [記錄] 窗格:

    顯示 Azure 入口網站的螢幕擷取畫面,其中的 Application Insights 開啟了用來建立查詢的 [記錄] 窗格。

  3. 在 [記錄] 窗格上,您可使用以您的特定需求為基礎的 Kusto 查詢語言 (KQL) 來建立查詢

    您可以使用類似下列範例查詢的查詢模式:

    customMetrics
    | extend DestinationName = tostring(customDimensions["DestinationName"])
    | extend MetricType = tostring(customDimensions["MetricType"])
    | where customDimensions contains "RfcDestinationMonitor"
    | where name contains "MaxUsedCount"
    
  4. 執行查詢之後,請檢閱結果。

    下列螢幕擷取畫面顯示範例查詢的計量結果資料表:

    此螢幕擷取畫面顯示具有計量結果資料表的 Application Insights。

    • MaxUsedCount 是如 SAP NCo 文件 (需要登入) 所述的「受監視目的地同時使用的用戶端連線數目上限」。 您可以使用此值來了解同時開啟的連接數目。

    • valueCount 資料行會針對每個讀數顯示 2,因為計量會每隔 30 秒產生一次。 Application Insights 會每分鐘彙總這些計量。

    • DestinationName 資料行包含是 Microsoft SAP Adapter 內部名稱的字元字串。

      若要進一步了解此遠端函式呼叫 (RFC) 目的地,請使用此值搭配 traces,例如:

      customMetrics
      | extend DestinationName = tostring(customDimensions["DestinationName"])
      | join kind=inner (traces
         | extend DestinationName = tostring(customDimensions["DestinationName"]),
         AppServerHost = tostring(customDimensions["AppServerHost"]),
         SncMode = tostring(customDimensions["SncMode"]),
         SapClient = tostring(customDimensions["Client"])
         | where customDimensions contains "RfcDestinationMonitor"
         )
         on DestinationName , $left.DestinationName == $right.DestinationName
      | where customDimensions contains "RfcDestinationMonitor"
      | where name contains "MaxUsedCount"
      | project AppServerHost, SncMode, SapClient, name, valueCount, valueSum, valueMin, valueMax
      

您也可以使用 Application Insights 中的這些功能來建立計量圖表或警示,例如:

此螢幕擷取畫面顯示具有圖表格式結果的 Application Insights。

來自 Microsoft SAP Adapter 的追蹤

您可以使用從 Microsoft SAP Adapter 傳送的追蹤進行問題事後分析,並尋找任何可能或可能不會從 SAP 連接器作業呈現的現有內部系統錯誤。 這些追蹤的 message 已設為 "n\a",因為它們來自早於 Application Insights 的早期事件來源架構,例如:

traces
| where message == "n/a"
| where severityLevel > 0
| extend ActivityId = tostring(customDimensions["ActivityId"])
| extend fullMessage = tostring(customDimensions["fullMessage"])
| extend shortMessage = tostring(customDimensions["shortMessage"])
| where ActivityId contains "8ad5952b-371e-4d80-b355-34e28df9b5d1"

下列螢幕擷取畫面顯示範例查詢的追蹤結果資料表:

此螢幕擷取畫面顯示具有追蹤結果資料表的 Application Insights。

下一步