SAP S/4HANA Cloud SDK 入門介紹

2022-01-09 汪子熙

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

Jerry 之前的文章 SAP Fiori 應用索引大全 曾經介紹過一個網站,能夠得到 SAP 所有 Fiori 應用列表:

https://fioriappslibrary.hana.ondemand.com/

到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

更多閱讀

相關焦點

  • 聽我說說SAP S/4 HANA Cloud
    想必大家都聽說過SAP S/4 HANA,也聽說過Cloud,但是否聽說過SAP S/4 HANA Cloud(後文簡稱S4HC)呢?其實S4HC不光是將S/4 HANA放在雲端部署那麼簡單,它其實是SAP基於以往的ERP產品,優化整合後推出的一項基於公有雲的SaaS產品。
  • 【乾貨攻略】SAP HANA Cloud Platform帳號獲取、應用生成……
    部分功能開放存儲空間1GB只能運行JAVA程序一個HANA Tenant資料庫程序不可通過平臺銷售功能無限制存儲空間根據需求購買程序不可通過平臺銷售功能無限制存儲空間根據需求購買程序可通過平臺銷售登陸HanaTrial Landscape (hanatrial.ondemand.com
  • 基於 SAP 雲平臺的雲應用授權管理 (上)
    mvn archetype:generate -DarchetypeGroupId=com.sap.cloud.sdk.archetypes -DarchetypeArtifactId=scp-cf-spring -DarchetypeVersion=LATEST提供 GroupId 和 ArtifactId,然後按多次回車生成最新版本的
  • SAP HANA: 持續創新十周年 (下)
    您可以將其視為 「CF / 4HANA」。  SAP 是開源 Cloud Foundry 的早期贊助商與主要貢獻者,該技術是 SAP Cloud Platform (雲平臺) 的核心。SAP HANA 2.0 - An Introductionhttps://www.sap-press.com/sap-hana-20_4884/SAP HANA as a Service (HaaS, SAP HANA 服務)SAP HANA 的雲版本最初起源於 2012 年在 AWS (Amazon Web Services
  • SAP HANA: 持續創新十周年(上)
    openSAP課程 – SAP HANA 介紹在早期,我們發現在代碼、發布說明和市場營銷資料中,我們使用了不同的名稱。例如:IMCE 或者是 IMDB 指代內存計算引擎,HDB 指代混合資料庫(行、列和對象存儲)。NewDB 作為開發代號,當然還有高性能分析設備(High Performance Analytic Appliance) 。
  • HANA安裝過程
    -4.7.2_20130108-0.15.45libgcc_s1-32bit-4.7.2_20130108-0.15.45libgcc46-4.6.9-0.11.38libgcc46-32bit-4.6.9-0.11.38libgcc43-4.6.9-0.11.38libgcc43-32bit-4.6.9-0.11.38
  • SAP S/4HANA BP功能介紹
    我們在S/4HANA中學到的第一件事是客戶 - 供應商集成(CVI),也稱為業務合作夥伴(BP)。在傳統SAP ERP中,客戶和供應商是作為兩個不同的功能存在的。而在SAP S/4 HANA中,將兩者統一維護為Business partner。所以傳統的ERP系統中的事務代碼都將被廢棄。
  • SAP HANA:持續創新十周年
    這次 BW 與 BS 的發布順序恰恰相反,2015 年 S/4HANA 發布,而 SAP BW/4HANA 則是在 2016 年。這些應用充分利用 HANA 的優勢,消除聚合表,對於數據進行自動壓縮等,極大提升了運行效率。對於 2010 年代初併購的雲 SaaS 解決方案,則需要更長的時間進行遷移,不過至今為止,所有 SAP 軟體都已經在 SAP HANA 上運行。
  • 通過實例了解SAP Cloud Platform Integration
    SAP的雲產品有S/4HANA Cloud, SAP Ariba, SAP Concur, SAP Hybrise, C/4HANA等等,但是它們目前還是各個相對孤立的存在, SAP雲平臺將是各個解決方案的中樞神經系統,一種膠水,把SAP智慧企業粘和到一起。SAP Cloud Platform Integration作為雲平臺的集成服務解決方案,必將是重中之重。
  • SAP S4 HANA Cloud Support-Incident
    SAP圍繞Help、Community、Support、BP、Roadmap等已構建了一個相對完整的生態,本期介紹Support中常用的Incident功能。1.   功能模塊BUG在系統操作過程中,某個功能模塊出現BUG,可以通過Report Incident途徑去解決。
  • 紀念特洛伊英雄 Sinon - SAP UI5 Mock Server 使用步驟和工作原理介紹
    登錄 SAP UI5 官方網站,輸入關鍵字 Mock Server,即可找到其使用文檔:https://sapui5.hana.ondemand.com/https://sapui5.hana.ondemand.com/下面通過實際例子來介紹 Mock Server 的使用步驟。
  • SAP AMDP介紹 - ABAP託管的HANA資料庫過程
    實際上AMDP不是一個新事物,早在2013年這個功能剛剛隨著ABAP 7.40 SP05發布之時,我就第一時間試用並且寫了一篇學習筆記:https://blogs.sap.com/2013/12/10/an-example-of-amdp-abap-managed-database-procedure-in-740/
  • 微軟Azure+SAP:與時遷移,應物變化
    三年前,微軟和SAP聯合宣布,微軟在Azure上運行SAP S/4 HANA,SAP將遷移大量核心業務系統到Azure上,以提高效率、靈活性和創新性。同時雙方各自部署對方的雲服務(包括S/4HANA,Azure,Office365),並共同投入工程師團隊,將優秀的解決方案推向市場,為客戶提供更好的雲體驗。
  • 基於 SAP Cloud Application Programming Model 快速構建 MTA 工程
    請前往 https://account.hanatrial.ondemand.com 註冊試用帳戶。Step 1: 在 SCP Cockpit 頁面中創建一個子帳戶,然後再在子帳戶中創建一個新 Space。
  • 「SAP S/4HANA 升級你準備好了嗎?」Part4 SAP 企業級支持助您一臂之力
    How can SAP Enterprise Support help you upgrade SAP S/4HANA? 今天是我們有關 SAP S/4HANA 升級主題的最後一篇博文,我們將圍繞 SAP 企業級支持服務助力您的 SAP S/4HANA 升級展開討論。
  • 使用abapGit在ABAP On-Premises系統和SAP雲平臺ABAP環境之間進行代碼傳輸
    為此,Jerry新建一個代碼倉庫:test-sap-abap-cloud.上圖的意思是我在On-Premises系統裡新創建的開發包,$ZJERRYPACKAGE裡面的代碼,會和github.com的test-sap-abap-cloud這個倉庫建立關聯。
  • SAP S/4HANA 洞察系列播客第一集:走進 SAP S/4HANA
    近來 SAP 在全球範圍內推出了 SAP S/4HANA 洞察系列播客,通過分享第一手產品洞察和項目觀點,拉近您與 SAP S/4HANA 產品專家合作夥伴和客戶的距離
  • 把裝有SAP Fiori APP的手機變成一隻掃搶
    我們稍後將在本文中介紹如何生成許可證密鑰。配置WebIDE首先,我們必須配置WebIDE以支持HAT。這是在WebIDE的插件部分完成的。獲取Anyline許可證密鑰要獲得試用版的許可證密鑰,您必須先在這裡註冊:https://www.anyline.io/sdk-register
  • 芋道 Spring Cloud Alibaba 介紹
    先來一起看看 Spring Cloud 官方對自己的簡短介紹:FROM https://github.com/spring-cloudTools for building common patterns in distributed systems with Spring基於 Spring 構建分布式系統的
  • SAP S/4 Basis之SAP內存管理(Memory Management)
    本系列基於 SAP S/4 HANA version 1709 - On Premise 本文基於 官方幫助文檔 SAP Memory