日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在 Excel 里使用 ODBC 读取 SAP BTP 平台上 CDS view 的数据

發布時間:2023/12/19 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在 Excel 里使用 ODBC 读取 SAP BTP 平台上 CDS view 的数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這是 Jerry 2021 年的第 59 篇文章,也是汪子熙公眾號總共第 336 篇原創文章。

Jerry 之前曾經給大家分享過,如何使用各種工具和編程語言,消費 SAP API Business Hub 上羅列的 API.


在 SAP API Business Hub 網站上,SAP 這些 API,分為 SOAP,OData 和 REST 三類。


Jerry 的文章 SAP Cloud for Customer 如何直接消費 S/4HANA API 介紹了如何在 SAP Cloud for Customer 里通過 Restful API 工具庫,消費 SAP S/4HANA 暴露的 Restful API:

而下面這幾篇文章,介紹了 SAP OData API 的開發與消費:

  • SAP OData 編程指南

  • 在 SAP BTP CloudFoundry 環境下消費 ABAP On-Premise OData API

  • 使用 SAP Cloud Application Programming 模型開發 OData API 的一個實際例子

  • SAP C/4HANA Sales Cloud 使用 OData 服務和第三方系統集成的一個具體例子

OData 協議基于 HTTP,在使用 OData 服務進行業務數據的創建或者修改時,需要開發人員在 HTTP 層面操作 POST 請求的 body 內容,步驟繁瑣且容易出錯。

比如下圖是 Jerry 2019 年一個項目中使用 Java 消費 SAP C4C OData 服務創建銷售訂單的測試代碼片段,其中第88行變量 body,包含的就是手動拼接 HTTP Post 請求的負載內容,代碼可讀性很差且不易維護。


為了避免這些缺點,提高開發人員使用 SAP S/4HANA OData 進行集成的開發效率,SAP 發布了 SAP S/4HANA Cloud SDK.

借助 SAP S/4HANA Cloud SDK,開發人員無需了解 S/4HANA OData 服務的設計細節,可以采用類似自然語言的代碼風格,調用 S/4HANA OData 服務,實現數據的增刪改查。

下圖的例子使用 S/4HANA Cloud SDK 讀取BusinessPartnerCategory 字段值為 2 的前20條 BusinessPartner 數據,并且只返回這些數據的 Partner Name, FullName 和 Customer 等字段。代碼采用 Declarative 即聲明式的方式編寫,可讀性大大優于直接操作 HTTP Post 負載的做法。

關于 SAP Cloud SDK 的更多細節,請參考我的文章:SAP S/4HANA Cloud SDK 入門介紹

而另一大類 SAP SOAP API 的消費方式,請參考 Jerry 之前的文章:如何在 SAP BTP 平臺 ABAP 編程環境里消費基于 SOAP 的 Web Service.

除了 SAP API Business Hub 上提到的這三種 API 之外,Jerry 之前的文章:在 SAP BTP 上體驗 SAP HANA Cloud 試用版本,還提到過使用 HANA Client 工具庫,直接把待執行的 SQL 語句發送給 SAP HANA Cloud 實例;后者執行完畢后,將結果返回給 HANA Client:

這種方式類似 ADBC 和 JDBC,細節可以參考 Jerry 這篇文章:在 SAP BTP 上體驗 SAP HANA Cloud 試用版本


本文介紹一種類似的數據消費方式:Open Database Connectivity 即 ODBC,開放數據庫互連。

ODBC 提供了一種標準的 API 方法來訪問數據庫管理系統即 DBMS. ODBC API 利用 SQL 來完成絕大多數數據庫操作。

下面我們通過一個實際的例子來了解 ODBC 的用法。這個例子的場景是,在 SAP BTP 平臺 ABAP 運行環境里,創建數據庫表和對應的 CDS view,然后使用本地的 Excel 文件,通過 ODBC 訪問 CDS view 的內容。

首先在 SAP BTP ABAP 運行環境里創建兩個簡單的數據庫表,存放訂單抬頭和行項目信息:


插入一些測試數據:

然后創建對應的 CDS view:

下面我們需要通過 Service Definition 將這兩個 CDS view 的數據暴露給外部消費者。

Jerry 之前的文章?30分鐘用 Restful ABAP Programming 模型開發一個支持增刪改查的 Fiori應用,曾經介紹過如何基于 RAP 模型,快速基于 CDS view 創建出一個 Fiori 應用出來。

  • Service Definition
  • Service Binding
  • Communication Scenario
  • Communication Arrangement

而通過 ODBC 將 CDS view 暴露給外部消費者,仍然需要按照上述順序創建對應的開發對象。

首先創建 Service Definition,將之前創建的兩個 CDS view 通過關鍵字 expose 暴露出去,通過 as 關鍵字設置別名為 Orders 和 OrderItems:

基于這個 Service Definition 創建一個新的 Service Binding:

Binding 類型,從下拉菜單里選擇 SQL1,以支持 ODBC:

Service Binding 的名稱起名為 ZORDERS,在文章最后通過 Excel 消費這個 Service 時,能在 Excel 里看到同名的節點,其下包含了通過 Service Definition 暴露出來的 OrderItems 和 Orders 兩個視圖:

創建新的 Communication Scenario:

在該 Scenario 的 Inbound 標簽頁里,分配標準的 Inbound Service S_PRIVILEGED_SQL1,用于支持對 CDS view 的 SQL 訪問操作。

切換到 Authorization 標簽頁,添加新的 Authorization 對象 S_SQL_VIEW,并分別維護其三個字段的值:

  • SQL_SCHEMA: ZORDERS,即我們要授予訪問權限的 Service Binding 名稱。
  • SQL_VIEW: *. 這個值意味著允許訪問 Service Binding ZORDERS 關聯的 Service Definition 中,通過 expose 關鍵字暴露的所有 CDS view.
  • SQL_VIEWOP: SELECT,只讀訪問。

點擊 Publish Locally:

創建一個新的 Communication System,取名 SQL_ACCESS:

給其分配一個新建的 Communication User. 稍后我們在 Excel 里使用 ODBC 讀取 CDS View 數據時,會要求輸入該用戶的訪問密碼。

最后,創建 Communication Arrangement,把生成的 Service URL 即下圖黃色高亮區域的字段抄下來,后續創建 Data Source 時,會填寫該值。

在本地安裝 ABAP ODBC Driver,訪問 SAP Support Portal,輸入關鍵字 ODBC DRIVER FOR ABAP 進行搜索:

https://launchpad.support.sap.com/#/softwarecenter

根據操作系統的類型下載對應版本的驅動:

同時下載 SAPCRYPTOLIB:

安裝完下載的驅動后,啟動操作系統的 ODBC Data Source Administrator 應用,添加一條新的 User Data Source Name(簡稱為 User DSN):

ABAP ODBC 驅動安裝成功后,在新建向導里能看到新的驅動類型:ODBC driver for ABAP.

在 DSN 創建向導中維護 Data Source 的明細。其中 Hostname 字段,來自 Communication Arrangement 的 Service Url 字段值。Crypto Library 字段,為前文從 SAP Support Portal 下載的 SAPCRYPTOLIB 解壓到本地后的絕對路徑:

Data Source 創建好之后,新建 Excel 文件,選擇 From ODBC 進行導入:

選擇剛剛建好的名為 Jerry-ABAP 的 Data Source,輸入 Communication Scenario 里維護的用戶名和密碼:

點擊 Connect,即可預覽 SAP BTP ABAP 環境里 Service Definition 暴露出來的 CDS view 的數據:

點擊 Load 按鈕,將這些數據導入到 Excel 中。

在 Advanced options 里,我們可以自由編寫 SQL 語句,將 Excel 當成一個簡單的 SQL 控制臺使用:

上圖編寫的 SQL 語句,將訂單行項目的數量進行求和,并顯示結果到 Excel 里:

相信通過本文的例子,大家能對如何通過 ODBC 消費 SAP BTP 平臺 ABAP 環境的 CDS view 數據有了一個直觀的認識,感謝閱讀。

更多閱讀

  • SAP Cloud for Customer 如何直接消費S/4HANA API

  • SAP OData 編程指南

  • 在 SAP BTP CloudFoundry 環境下消費 ABAP On-Premise OData API

  • 使用 SAP Cloud Application Programming 模型開發 OData API 的一個實際例子

  • SAP C/4HANA Sales Cloud使用 OData 服務和第三方系統集成的一個具體例子

  • SAP S/4HANA Cloud SDK 入門介紹

  • 如何在 SAP BTP 平臺 ABAP 編程環境里消費基于 SOAP 的 Web Service

  • 在 SAP BTP 上體驗 SAP HANA Cloud 試用版本

  • 30分鐘用 Restful ABAP Programming 模型開發一個支持增刪改查的 Fiori應用

更多Jerry的原創文章,盡在:“汪子熙”:

總結

以上是生活随笔為你收集整理的在 Excel 里使用 ODBC 读取 SAP BTP 平台上 CDS view 的数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。