SAP S/4HANA Cloud SDK 入門介紹
這是 Jerry 2021 年的第 48 篇文章,也是汪子熙公眾號總共第 325 篇原創文章。
Jerry 之前的文章 SAP Fiori 應用索引大全 曾經介紹過一個網站,能夠得到 SAP 所有 Fiori 應用列表。
到2021年7月18日為止,SAP 總共釋出了 13268 個 Fiori 應用:
其中屬於 SAP S/4HANA 且 UI 基於 Fiori Elements 開發的 Fiori 應用數字為:878.
這 878 個 Fiori 應用,Jerry 之前的很多文章都曾經提到過,其架構為前臺介面採用 Fiori Elements 提供的 List Report, Object Type 等模板,後臺由 OData 服務提供業務資料。
SAP S/4HANA 標準的 OData 服務,在 SAP API Business Hub 上能夠查詢和瀏覽其明細。
這些 OData 服務,除了用於 SAP S/4HANA 標準 Fiori 應用外,也可以被 SAP Partners 在第三方應用中呼叫,方便地同 SAP S/4HANA 整合。例如,Partners 可以用自己熟悉的程式語言進行二次開發,然後將應用部署到 SAP BTP 上,即所謂的 Side-by-Side 擴充套件方式。
OData 協議基於 HTTP,在使用 OData 服務執行業務資料的建立或者修改時,需要程式設計人員在 HTTP 層面操作 POST 請求的 body 內容,步驟繁瑣且容易出錯。比如下圖是 Jerry 2019 年一個專案中用 Java 呼叫 SAP C4C OData 服務建立銷售訂單的測試程式碼片段,其中第88行變數 body,包含的就是手動拼接 HTTP Post 請求的負載內容,可讀性很差且不易維護。
為了避免以上這些缺點,提高 Partners 同 SAP S/4HANA OData 服務整合時的開發效率,SAP 釋出了 SAP S/4HANA Cloud SDK. 所謂 SDK( Software Development Kit),即一系列開發工具庫的集合,包含開箱即用的模型和 API.
藉助 SAP S/4HANA Cloud SDK,開發人員無需瞭解 S/4HANA OData 服務的設計明細,可以用類似自然語言的程式碼風格,呼叫 S/4HANA OData 服務,實現資料增刪改查的需求。
目前 S/4HANA Cloud SDK 支援 Java 和 JavaScript 兩種程式語言。在 SAP API Business Hub 上,我們可以下載 Java 版本的 SDK:
本文介紹 JavaScript 版本的 S/4HANA Cloud SDK.
執行以下命令安裝 SDK:
npm install -g @sap-cloud-sdk/cli
之後使用命令列新建一個專案:
sap-cloud-sdk init my-sdk-project
自動生成的專案檔案結構如下圖所示:
生成的專案裡,package.json 定義的依賴如下:
package.json 檔案定義的依賴,除了 sap-cloud-sdk 本身外,還包括 nestjs, 這是一個用於構建高效且可擴充套件的 Node.js 伺服器端應用的開發框架。
本文我們的目的是使用 SAP S/4HANA Cloud SDK 消費 API Business Hub Sandbox 系統中 Business Partner OData 服務。如果真實的需求是消費某個 SAP S/4HANA Cloud 系統的 OData 服務,只需要將程式碼裡指向 API Hub 的 url,改成指向 S/4HANA Cloud tenant 即可。
前文提到,使用 Cloud SDK,開發人員無需瞭解 S/4HANA OData 設計細節,因為這些細節,被 Cloud SDK 裡所謂的虛擬資料模型:Virtual Data Model,簡稱 VDM 所封裝了。每一個 SAP S/4HANA OData 服務用到的資料模型,在 Cloud SDK 裡都有對應的 npm 包進行封裝,開發人員可以按需匯入。
為了消費 Business Partner OData 服務,我們在 SAP 官網上搜索其 SDK npm 包:
根據關鍵字 partner 搜尋,找到這個安裝包,將其 id :@sap/cloud-sdk-vdm-business-partner-service 抄下來。
執行下面的命令列,將其安裝到本地:
npm install @sap/cloud-sdk-vdm-business-partner-service
現在 package.json 裡多了一個指向該包的依賴:
下面是使用 Cloud SDK 查詢 API Hub Sandbox 系統上前兩條 Business Partner 資料的完整程式碼,其中核心程式碼也就十行左右:
-
第2行程式碼,從下載的 Business Partner VDM 包裡,匯入名為 BusinessPartner 的虛擬資料模型
-
第15行程式碼,呼叫 BusinessPartner 模型的 requestBuilder 方法,構造一個 OData 資料請求。再使用鏈式呼叫 getAll 和 top(2), 為構造的 OData 資料請求指定具體的目標:返回前兩條資料。
不難看出,這裡的程式碼沒有任何直接操作 HTTP 的部分在內,而是更接近自然語言的風格。一個沒有開發背景的業務顧問,通過閱讀也能大致猜到這段程式碼的作用。
本地命令列啟動這個應用:
npm run start:dev
在瀏覽器裡測試,能夠成功取回兩條 Business Partner 資料:
OData 協議支援的操作,在 Cloud SDK VDM 裡均有對應的方法。
比如OData 協議的 select 指令,只返回指定的欄位,在 SDK 裡對應了同名的 select 方法:
執行效果:
OData 協議的 filter 指令,對應 SDK 的同名 filter 方法。
下圖程式碼的含義,代表只返回 BusinessPartnerCategory 欄位值為 2 的前20條 BusinessPartner 資料:
希望本文能讓大家對 SAP S/4HANA Cloud SDK 有一個最基本的認識。如果需要使用 SAP Cloud SDK 同 SAP S/4HANA Cloud 整合,建議大家從 SAP 官網開始,按部就班地學習。
感謝閱讀。
https://sap.github.io/cloud-sdk/docs/js/overview-cloud-sdk-for-javascript
更多Jerry的原創文章,盡在:"汪子熙":