使用 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 管理 檔 。
根據網域需求完成自訂網域的設定。 如需詳細資訊,請參閱 自訂網域檔 。 若要證明功能變數名稱擁有權並授與憑證的存取權,請將這些 DNS 記錄新增至您的Azure App 服務網域 custom-apim.domain.com
,如下所示:
Azure API 管理租使用者的個別 Microsoft Entra 應用程式註冊如下所示。
注意
如果 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>
透過 Excel Desktop 上的 Power Query 進行 SAP OData 驗證
使用指定的組態,Power Query 的內建驗證機制就可供公開的 OData API 使用。 透過 [資料] 功能區將新的 OData 來源新增至 Excel 工作表(從其他來源取得資料 - > > 從 OData 摘要取得資料)。 維護您的目標服務 URL。 下列範例使用 SAP 閘道示範服務 GWSAMPLE_BASIC 。 使用 SAP 交易 /IWFND/MAINT_SERVICE
探索或啟動它。 最後,使用 官方 OData 匯入指南 將它新增至 Azure API 管理。
擷取基底 URL,並插入目標應用程式中。 下列範例顯示 Excel Desktop 的整合體驗。
將登入方法切換至 [組織帳戶 ],然後按一下 [登入]。 使用 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 API 管理設定 SAP 主體傳播
使用 適用于 SAP 的第二個 Azure API 管理原則,完成中介層 SAP 主體傳播的設定。 如需 SAP 閘道後端設定的詳細資訊,請參閱 此 Microsoft 教學課程 。
此原則依賴 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 後端設定範例。
如需有關具有 AS ABAP 設定之必要 SAP OAuth 2.0 伺服器的詳細資訊,請參閱此 Microsoft 教學課程,說明使用 OAuth 搭配 SAP NetWeaver 的 SSO。
使用所述的 Azure API 管理原則 , 任何已啟用 Power Query 的 Microsoft 產品都可能會呼叫 SAP 託管 OData 服務,同時接受 SAP 具名使用者對應。
透過其他已啟用 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 檔 。
醒目提示的按鈕會觸發流程,將 OData PATCH 要求轉送至 SAP 閘道以變更商務夥伴角色。
注意
使用適用于 SAP 的 Azure API 管理 原則來處理流程外部權杖的驗證、重新整理權杖、 CSRF 權杖 和整體快取。
下一步
瞭解您可以在何處搭配 Power Query 使用 OData
在 Azure API 管理中使用 SAP OData API