共用方式為


使用 Power Query 啟用即時 OData 摘要的 SAP 主體傳播

在 Microsoft Excel 或 Power BI 中使用 SAP 資料集是客戶常見的需求。

本文說明使用 Power Query 透過 OData 啟用 SAP 資料集耗用量 的必要組態和元件。 例如,SAP 資料整合會 被視為「即時」 ,因為它可以從 Microsoft Excel 或 Power BI 等用戶端重新整理,不同于資料匯出(例如 SAP 清單檢視器 (ALV) CSV 匯出)。 這些匯出本質上是 靜態 的,而且與資料來源沒有連續關聯性。

本文強調 Power Query 中的已知 Microsoft Entra 身分識別與 SAP 後端使用者之間的端對端使用者對應。 此機制通常稱為 SAP 主體傳播。

描述組態的重點在於 Azure API 管理 、SAP Gateway SAP OAuth 2.0 Server 與 AS ABAP 和 OData 來源,但用於任何 Web 型資源的概念。

重要

注意:SAP 主體傳播可確保使用者對應至名為 SAP 使用者的授權。 如需任何 SAP 授權相關問題,請連絡您的 SAP 代表。

使用 SAP 整合的 Microsoft 產品概觀

SAP 產品與 Microsoft 365 組合之間的整合範圍從自訂程式碼,以及合作夥伴附加元件到完全自訂的 Office 產品。 以下提供幾個範例:

本文所述的機制會使用 Power Query 的標準 內建 OData 功能,並強調部署在 Azure 上的 SAP 環境。 使用 Azure API 管理 自我裝載閘道 來解決內部部署環境。

如需哪些 Microsoft 產品一般支援 Power Query 的詳細資訊,請參閱 Power Query 檔

設定考慮

終端使用者可以選擇本機桌面或網頁型用戶端(例如 Excel 或 Power BI)。 用戶端執行環境必須考慮用戶端應用程式與目標 SAP 工作負載之間的網路路徑。 VPN 之類的網路存取解決方案不在Excel 網頁版等應用程式的範圍內。

Azure API 管理 反映可套用至 Azure 環境( 內部 外部 )之不同部署模式的本機和 Web 環境需求。 Internal是指完全受限於私人虛擬網路的實例,同時 external 保留對 Azure API 管理的公用存取。 內部部署安裝需要混合式部署來套用方法,就像使用 Azure API 管理 自我裝載閘道 一樣。

Power Query 需要比對 API 服務 URL 和 Microsoft Entra 應用程式識別碼 URL。 設定 Azure API 管理 的自訂網域以符合需求。

SAP 閘道 必須設定為公開所需的目標 OData 服務。 透過 SAP 交易程式碼 /IWFND/MAINT_SERVICE 探索並啟用可用的服務。 如需詳細資訊,請參閱 SAP 的 OData 組態

Azure API 管理自訂網域設定

請參閱下方的螢幕擷取畫面:使用名為 api.custom-apim.domain.com 的自訂網域搭配受控憑證和 Azure App 服務網域,API 管理中的範例組 態。 如需更多網域憑證選項,請參閱 Azure API 管理

Screenshot that shows the custom domain configuration in Azure API Management.

根據網域需求完成自訂網域的設定。 如需詳細資訊,請參閱 自訂網域檔 。 若要證明功能變數名稱擁有權並授與憑證的存取權,請將這些 DNS 記錄新增至您的Azure App 服務網域 custom-apim.domain.com ,如下所示:

Screenshot that shows custom domain mapping to Azure API Management domain.

Azure API 管理租使用者的個別 Microsoft Entra 應用程式註冊如下所示。

Screenshot that shows the app registration for Azure API Management in Microsoft Entra ID.

注意

如果 Azure API 管理的自訂網域不是選項,您必須改用 自訂 Power Query 連線or

Power Query 的 Azure API 管理原則設計

針對您的目標 OData API 使用此 Azure API 管理原則,以支援 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>

注意

如需從網際網路和 SAP 周邊網路設計保護 SAP 存取的詳細資訊,請參閱本指南 。 關於使用 Azure 保護 SAP API,請參閱這篇文章

透過 Excel Desktop 上的 Power Query 進行 SAP OData 驗證

使用指定的組態,Power Query 的內建驗證機制就可供公開的 OData API 使用。 透過 [資料] 功能區將新的 OData 來源新增至 Excel 工作表(從其他來源取得資料 - > > 從 OData 摘要取得資料)。 維護您的目標服務 URL。 下列範例使用 SAP 閘道示範服務 GWSAMPLE_BASIC 。 使用 SAP 交易 /IWFND/MAINT_SERVICE 探索或啟動它。 最後,使用 官方 OData 匯入指南 將它新增至 Azure API 管理。

Screenshot that shows how to discover the OData URL within Azure API Management.

擷取基底 URL,並插入目標應用程式中。 下列範例顯示 Excel Desktop 的整合體驗。

Screenshot that shows the OData configuration wizard in Excel Desktop.

將登入方法切換至 [組織帳戶 ],然後按一下 [登入]。 使用 SAP 主體傳播,提供對應至 SAP 閘道上具名 SAP 使用者的 Microsoft Entra 帳戶。 如需設定的詳細資訊,請參閱 此 Microsoft 教學課程 。 深入瞭解此 SAP 社群文章和 此影片系列 中的 SAP 主體傳播。

繼續選擇 Excel 上的 Power Query 應套用驗證設定的層級。 下列範例顯示將套用至目標 SAP 系統上裝載的所有 OData 服務設定(不只套用至範例服務GWSAMPLE_BASIC)。

注意

下方畫面中 URL 層級的授權範圍設定與 SAP 後端的實際授權無關。 SAP 閘道仍然是每個要求的最終驗證程式,以及對應之具名 SAP 使用者的相關授權。

Screenshot that shows the login flow within Excel for the Organizational Account option.

重要

上述指引著重于透過 Power Query 從 Microsoft Entra ID 取得有效驗證權杖的程式。 此權杖必須進一步處理 SAP 主體傳播。

使用 Azure API 管理設定 SAP 主體傳播

使用 適用于 SAP 的第二個 Azure API 管理原則,完成中介層 SAP 主體傳播的設定。 如需 SAP 閘道後端設定的詳細資訊,請參閱 此 Microsoft 教學課程

注意

深入瞭解此 SAP 社群文章和 此影片系列 中的 SAP 主體傳播。

Diagram that shows the Microsoft Entra app registrations involved in this article.

此原則依賴 Microsoft Entra ID 與 SAP Gateway 之間的已建立 SSO 設定(從 Microsoft Entra 資源庫 使用 SAP NetWeaver)。 請參閱以下示範使用者 Adele Vance 的範例。 Microsoft Entra ID 與 SAP 系統之間的使用者對應會根據使用者主體名稱 (UPN) 作為唯一的使用者識別碼進行。

Screenshot that shows the UPN of the demo user in Microsoft Entra ID.

Screenshot that shows the SAML2 configuration for SAP Gateway with UPN claim.

UPN 對應會使用交易 SAML2 在 SAP 後端維護。

Screenshot that shows the email mapping mode in SAP SAML2 transaction.

根據此名為 SAP 使用者的 設定 ,將會對應至個別的 Microsoft Entra 使用者。 請參閱下列使用交易程式碼 SU01 從 SAP 後端設定範例。

Screenshot of named SAP user in transaction SU01 with mapped email address.

如需有關具有 AS ABAP 設定之必要 SAP OAuth 2.0 伺服器的詳細資訊,請參閱此 Microsoft 教學課程,說明使用 OAuth 搭配 SAP NetWeaver 的 SSO。

使用所述的 Azure API 管理原則 任何已啟用 Power Query 的 Microsoft 產品都可能會呼叫 SAP 託管 OData 服務,同時接受 SAP 具名使用者對應。

Screenshot that shows the OData response in Excel Desktop.

透過其他已啟用 Power Query 的應用程式和服務存取 SAP OData

上述範例顯示 Excel Desktop 的流程,但此方法適用于 任何 已啟用 Power Query OData 的 Microsoft 產品。 如需 Power Query 的 OData 連接器及其支援產品的詳細資訊,請參閱 Power Query 連線ors 檔 。 如需哪些產品一般支援 Power Query 的詳細資訊,請參閱 Power Query 檔

熱門取用者包括 Power BI Excel 網頁版 Power Apps(資料流程) Analysis Service

使用 Power Automate 處理 SAP 回寫案例

所述的方法也適用于回寫案例。 例如,您可以使用 Power Automate ,透過 啟用 HTTP 的連接器 來更新 SAP 中的商務夥伴(或者使用 RFC 或 BAPIs )。 請參閱下面的範例,其中顯示 透過 值型警示 按鈕 連線到 Power Automate 的Power BI 服務 儀表板(在螢幕擷取畫面上醒目提示)。 深入瞭解從 Power BI 報表觸發流程的 Power Automate 檔

Screenshot that shows the flow-enabled Power BI service dashboard.

醒目提示的按鈕會觸發流程,將 OData PATCH 要求轉送至 SAP 閘道以變更商務夥伴角色。

注意

使用適用于 SAP 的 Azure API 管理 原則來處理流程外部權杖的驗證、重新整理權杖、 CSRF 權杖 和整體快取。

Screenshot that shows the flow on Power Automate requesting the business partner change on the SAP back end.

下一步

瞭解您可以在何處搭配 Power Query 使用 OData

在 Azure API 管理中使用 SAP OData API

設定適用于 SAP API 的 Azure API 管理

教學課程:分析 Excel 和 OData 摘要的銷售資料

使用 應用程式閘道 和 API 管理 保護 API

在內部虛擬網路中整合API 管理與 應用程式閘道

瞭解 SAP 的Azure 應用程式閘道和Web 應用程式防火牆

使用 APIOps 將 API 部署自動化