使用 Power Query 為即時 OData 摘要啟用 SAP 主體傳播
許多客戶經常需要在 Microsoft Excel 或 Power BI 中使用 SAP 資料集。
本文說明使用 Power Query (機器翻譯) 啟用透過 OData 進行的 SAP 資料集取用作業所需的設定和元件。 SAP 資料整合之所以被視為「即時」,是因為可以視需求從 Microsoft Excel 或 Power BI 等用戶端進行重新整理,不像資料匯出 (例如 SAP List Viewer (ALV) (英文) CSV 匯出)。 這類匯出本質上是靜態的,而且與資料來源沒有連續不間斷的關係。
本文強調 Power Query 中已知Microsoft Entra 身分識別與 SAP 後端使用者之間的端對端用戶對應。 這項機制通常稱為「SAP 主體傳播」。
前述設定將焦點放在 Azure APIM (機器翻譯)、SAP 閘道 (英文)、SAP OAuth 2.0 Server with AS ABAP (英文) 與 OData 來源,但是其概念適用於所有 Web 型資源。
重要
注意:SAP 主體傳播可確保使用者對應至已授權具名 SAP 使用者。 如有任何 SAP 授權相關問題,請連絡您的 SAP 代表。
使用 SAP 整合的 Microsoft 產品概觀
SAP 產品與 Microsoft 365 產品組合之間的整合,涵蓋自訂程式碼、合作附加元件,以及完全自訂的 Office 產品。 以下提供幾個範例:
本文介紹的機制使用標準的 Power Query 內建 OData 功能 (機器翻譯),且主要著墨於部署在 Azure 上的 SAP 環境。 使用 Azure APIM 自我裝載閘道 (機器翻譯) 解決內部部署環境。
如需進一步了解一般哪些 Microsoft 產品會支援 Power Query,請參閱 Power Query 文件 (機器翻譯)。
設定考量
終端使用者可以選擇本機桌面或 Web 型用戶端 (例如 Excel 或 Power BI)。 針對用戶端應用程式與目標 SAP 工作負載之間的網路路徑,用戶端執行環境必須納入考量。 VPN 等網路存取解決方案不在 Excel 網頁版等應用程式的範圍內。
Azure APIM (機器翻譯) 會使用可套用至 Azure 環境 (內部 (機器翻譯) 或 外部 (機器翻譯)) 的不同部署模式反映本機和 Web 型環境的需求。 Internal
是指完全受限於私人虛擬網路的執行個體,external
則會保留 Azure APIM 的公用存取權。 內部部署安裝需要採用混合式部署來套用方法,如同使用 Azure APIM 自我裝載閘道 (機器翻譯) 時一樣。
Power Query 需要比對 API 服務 URL,Microsoft Entra 應用程式識別碼 URL。 為 Azure APIM 設定自訂網域 (機器翻譯) 即可滿足這項需求。
SAP 閘道 (英文) 必須設定為公開所需目標 OData 服務。 請透過 SAP 交易代碼 /IWFND/MAINT_SERVICE
探索及啟動服務。 如需詳細資訊,請參閱 SAP 的 OData 設定 (英文)。
Azure APIM 自訂網域設定
下方螢幕擷取畫面所顯示的 APIM 設定範例,使用了名為 api.custom-apim.domain.com
的自訂網域、受控憑證與 Azure App Service 網域。 如需了解更多網域憑證選項,請參閱 Azure APIM 文件 (機器翻譯)。
根據網域需求完成自訂網域的設定。 如需詳細資訊,請參閱自訂網域文件 (機器翻譯)。 若要證明網域名稱所有權,並授與憑證存取權,請將 DNS 記錄新增至 Azure App Service 網域 custom-apim.domain.com
,如下所示:
Azure API 管理 租用戶的個別Microsoft Entra 應用程式註冊如下所示。
注意
若您不打算使用 Azure APIM 的自訂網域,則必須改用 自訂 Power Query 連接器 (機器翻譯)。
針對 Power Query 設計的 Azure APIM 原則
讓您的目標 OData API 使用這項 (英文) Azure APIM 原則,以支援 Power Query 的驗證流程。 請在下方查看該原則中的程式碼片段,其中醒目提示了驗證機制。 您可以參閱這篇文章 (機器翻譯),找出 Power Query 的已使用用戶端識別碼。
<!-- if empty Bearer token supplied assume Power Query sign-in request as described [here:](/power-query/connectorauthentication#supported-workflow) -->
<when condition="@(context.Request.Headers.GetValueOrDefault("Authorization","").Trim().Equals("Bearer"))">
<return-response>
<set-status code="401" reason="Unauthorized" />
<set-header name="WWW-Authenticate" exists-action="override">
<!-- Check the client ID for Power Query [here:](/power-query/connectorauthentication#supported-workflow) -->
<value>Bearer authorization_uri=https://login.microsoftonline.com/{{AADTenantId}}/oauth2/authorize?response_type=code%26client_id=a672d62c-fc7b-4e81-a576-e60dc46e951d</value>
</set-header>
</return-response>
</when>
除了支援組織帳戶登入流程外,此原則還支援 OData URL 回應重寫 ,因為目標伺服器會以原始 URL 回覆。 請於下方查看先前提及原則的程式碼片段:
<!-- URL rewrite in body only required for GET operations -->
<when condition="@(context.Request.Method == "GET")">
<!-- ensure downstream API metadata matches Azure API Management caller domain in Power Query -->
<find-and-replace from="@(context.Api.ServiceUrl.Host +":"+ context.Api.ServiceUrl.Port + context.Api.ServiceUrl.Path)" to="@(context.Request.OriginalUrl.Host + ":" + context.Request.OriginalUrl.Port + context.Api.Path)" />
</when>
透過 Power Query 在 Excel 桌面應用程式上進行 SAP OData 驗證
只要採用指定的設定,公開 OData API 就能使用 Power Query 的內建驗證機制。 透過 [資料] 功能區 ([取得資料] -> [從其他來源] -> [從 Odata 摘要]),將新的 OData 來源新增至 Excel 工作表。 目標服務 URL 請維持不變。 下方範例使用的是 SAP 閘道示範服務 GWSAMPLE_BASIC。 請使用 SAP 交易 /IWFND/MAINT_SERVICE
探索或啟動該服務。 最後,按照官方 OData 匯入指南的說明,將該服務新增至 Azure APIM。
擷取基底 URL,並插入目標應用程式中。 下方範例顯示的是與 Excel 桌面應用程式的的整合體驗。
將登入方法切換為組織帳戶,然後按一下 [登入]。 使用 SAP 主體傳播,提供對應至 SAP 閘道上具名 SAP 使用者的Microsoft Entra 帳戶。 如需設定的詳細資訊,請參閱這門 Microsoft 教學課程 (機器翻譯)。 如要深入瞭解 SAP 主體傳播,請參閱這篇 SAP 社群文章 (英文) 以及這系列影片 (英文)。
繼續選擇要在 Excel 上使用 Power Query 套用驗證設定的層級。 下方範例顯示會套用至所有裝載在目標 SAP 系統上之 OData 服務的設定 (不只套用至範例服務 GWSAMPLE_BASIC)。
注意
下方畫面中 URL 層級的授權範圍設定,與 SAP 後端的實際授權是各自獨立的。 針對每項要求以及對應具名 SAP 使用者的相關授權,SAP 閘道仍然是最終驗證程式。
重要
上述指引著重於透過Power Query 從 Microsoft Entra ID 取得有效驗證令牌的程式。 為使用 SAP 主體傳播,此權杖還必須經過其他處理流程。
使用 Azure APIM 設定 SAP 主體傳播
使用第二項 SAP 的 Azure APIM 原則,在中介層上完成 SAP 主體傳播的設定。 如需 SAP 閘道後端設定的詳細資訊,請參閱這門 Microsoft 教學課程 (機器翻譯)。
注意
如要深入瞭解 SAP 主體傳播,請參閱這篇 SAP 社群文章 (英文) 以及這系列影片 (英文)。
此原則依賴Microsoft Entra ID 與 SAP Gateway 之間的已建立 SSO 設定(從 Microsoft Entra 資源庫使用 SAP NetWeaver)。 請查看下方示範使用者 Adele Vance 的範例。 Microsoft Entra ID 與 SAP 系統之間的用戶對應,會根據用戶主體名稱 (UPN) 作為唯一的使用者識別符進行。
這項 UPN 對應是使用交易 SAML2 保留在 SAP 後端。
根據此名為 SAP 使用者的組態,將會對應至個別Microsoft Entra 使用者。 請參閱下方使用交易代碼 SU01 在 SAP 後端指定的設定範例。
如需必要 SAP OAuth 2.0 Server with AS ABAP (英文) 設定的詳細資訊,請參閱這門 Microsoft 教學課程 (機器翻譯),了解 SSO 與使用 OAuth 的 SAP NetWeaver。
採用前述 Azure APIM 原則後,任何已啟用 Power Query 的 Microsoft 產品都能呼叫 SAP 裝載 OData 服務,同時執行 SAP 具名使用者對應。
透過其他已啟用 Power Query 的應用程式和服務存取 SAP OData
前述範例呈現了 Excel 桌面應用程式的流程,但這種方法其實適用於所有支援 Power Query OData 的 Microsoft 產品。 如需進一步了解 Power Query 的 OData 連接器,以及哪些產品提供支援,請參閱 Power Query 連接器文件 (機器翻譯)。 如需進一步了解一般哪些產品會支援 Power Query,請參閱 Power Query 文件 (機器翻譯)。
熱門取用者包含 Power BI (機器翻譯)、Excel 網頁版、Power Apps (資料流程) 與分析服務 (機器翻譯)。
使用 Power Automate 處理 SAP 回寫案例
前述方法也適用於回寫案例。 例如,您可以使用 Power Automate ,透過已啟用 HTTP 的連接器 (英文) (或者使用 RFC 或 BAPI) 使用 OData 更新 SAP 中的商務合作夥伴。 請查看下方範例,這是透過以值為基礎的警示 (機器翻譯) 和按鈕 (機器翻譯) (螢幕擷取畫面中醒目顯示的部分) 連線至 Power Automate 的 Power BI 服務儀表板。 如需進一步了解如何從 Power BI 報表觸發流程,請參閱 Automate 文件。
醒目提示的按鈕會觸發流程,將 OData PATCH 要求轉送至 SAP 閘道,以變更商務合作夥伴角色。
注意
請使用適用於 SAP 的 Azure APIM 原則 (英文) 處理驗證、重新整理權杖、CSRF 權杖 (英文) 和流程外部權杖的整體快取。
下一步
了解在哪些情況可以將 Power Query 與 OData 搭配使用 (機器翻譯)
在 Azure APIM 中搭配 SAP OData API
教學課程:分析來自 Excel 與 OData 摘要的銷售資料 (機器翻譯)
瞭解 Azure 應用程式閘道和 SAP 的 Web 應用程式防火牆
使用 APIOps 自動部署 API (機器翻譯)