SAP API开发方法大全
Jerry之前的文章:**從SAP Leonardo到SAP Data Intelligence?**曾經(jīng)提到,SAP Leonardo Machine Learning Foundation的機(jī)器學(xué)習(xí)API已經(jīng)被標(biāo)注為deprecated狀態(tài),將由SAP新的AI產(chǎn)品,SAP Data Intelligence所替代。
在學(xué)習(xí)SAP Data Intelligence的過程中,Jerry算是了解到了一種新的API開發(fā)方式。本文首先簡單回顧一下我從事SAP開發(fā)工作13年以來,接觸過的各種SAP API的開發(fā)方式,然后再介紹SAP Data Intelligence里遵循Low Code Development(低代碼開發(fā))理念的API開發(fā)方式。
目錄
(1) ABAP function module + SOAMANAGER
(2) 基于事務(wù)碼SEGW的SAP CRM OData服務(wù)手動實(shí)現(xiàn)
(3) 基于CDS view的OData服務(wù)自動生成
(4) SAP Cloud for Customer里基于Business Object的自定義OData API創(chuàng)建
(5) 基于Java SpringBoot,Node Express等Web應(yīng)用框架的API開發(fā)
(6) Serverless 架構(gòu)
(7) SAP Data Intelligence Graph
本文提到的API,指的是通過HTTP協(xié)議暴露出來,能直接通過瀏覽器,Postman,curl等各種工具,以及各種編程語言消費(fèi)的API. 在SAP生態(tài)圈內(nèi),最常遇到的是基于SOAP的Web Service和串聯(lián)SAP S/4HANA前后臺的OData服務(wù)。
(1) ABAP function module + SOAMANAGER
最古老的技術(shù),把ABAP系統(tǒng)里的函數(shù)通過SOAMANAGER發(fā)布成Web Service. 雖然古老,但至今S/4HANA里的Service模塊的新功能開發(fā)還在使用。
https://blogs.sap.com/2014/05/20/step-by-step-to-create-consume-and-trace-web-service-in-abap-system/
我2014年的時候也寫過一篇介紹SOAMANAGER使用步驟的文章,雖然到現(xiàn)在為止,這個工具已經(jīng)更新?lián)Q代多次了。
(2) 基于事務(wù)碼SEGW的SAP CRM OData服務(wù)手動實(shí)現(xiàn)
這是我最熟悉的SAP OData服務(wù)實(shí)現(xiàn)方式,因?yàn)槲揖褪荢AP CRM OData服務(wù)的開發(fā)者之一。SAP成都研究院CRM開發(fā)團(tuán)隊(duì)在2014和2015年開發(fā)這些OData服務(wù)時,SAP Fiori Elements的前身,當(dāng)時的名稱是Smart Template,還處于發(fā)展初期,所以那時候我們沒有選擇這項(xiàng)基于元數(shù)據(jù)驅(qū)動的開發(fā)方式。
Jerry在2018年寫過一篇文章 SAP OData編程指南, 里面詳細(xì)介紹了這種方法。
(3) 基于CDS view的OData服務(wù)自動生成
再后來,隨著CDS view和Fiori Elements的成熟,我們可以基于加上了@OData.publish注解的CDS view,直接生成OData服務(wù)了,具體工作原理在我的這篇文章里有介紹:
揭開SAP Fiori編程模型規(guī)范里注解的神秘面紗 - @OData.publish工作原理解析
在S/4HANA里,除了在ABAP Development Tool里手動給CDS view加上@OData.publish注解之外,還可以采取另一種方式,純粹在瀏覽器里完成操作。
使用S/4HANA里的Custom CDS Views這個應(yīng)用,
可以選擇S/4HANA里多個標(biāo)準(zhǔn)的CDS view來創(chuàng)建新的復(fù)合視圖,
并能根據(jù)自己的需求,來挑選哪些標(biāo)準(zhǔn)視圖的字段需要包含到新的復(fù)合視圖里:
最后也是一鍵實(shí)現(xiàn)復(fù)合視圖的OData服務(wù)發(fā)布。
到了SAP云平臺ABAP環(huán)境上,基于CDS view創(chuàng)建的Service Definition和Service Binding,把OData服務(wù)和Fiori UI界面的創(chuàng)建全部包辦了。
更多關(guān)于這種基于Restful ABAP Programming模型的開發(fā)方式,請參考我的文章?30分鐘用Restful ABAP Programming模型開發(fā)一個支持增刪改查的Fiori應(yīng)用。
(4) SAP Cloud for Customer里基于Business Object的自定義OData API創(chuàng)建
前面在SAP S/4HANA Fiori Launchpad里看到的Custom CDS View這個應(yīng)用,即使不太懂技術(shù)的Key User,也能在瀏覽器里完成字段的搭配和OData服務(wù)的發(fā)布。
SAP Cloud for Customer也有類似的設(shè)計(jì),只不過供Key User選擇的不是CDS view,而是C4C里標(biāo)準(zhǔn)的Business Object.
Key User在瀏覽器的Custom OData Service應(yīng)用里能選擇將Business Object節(jié)點(diǎn)里的哪些字段發(fā)布到OData服務(wù)里,此操作同SAP S/4HANA里選擇標(biāo)準(zhǔn)CDS view字段的思路是一樣的。
在C4C的Cloud Application Studio里,還能基于標(biāo)準(zhǔn)Business Object創(chuàng)建Web Service.
總結(jié):基于ABAP技術(shù)棧的SAP產(chǎn)品,運(yùn)行于其上的OData或者Web Service這些API,本質(zhì)都是通過ABAP Netweaver的ICF(Internet Communication Framework)被外界消費(fèi)的。我們觀察其調(diào)用Url路徑,就能找到SICF事務(wù)碼里的對應(yīng)的處理節(jié)點(diǎn)。
以SAP CRM OData服務(wù)Url末尾的CRM_OPPORTUNITY為例:
在SICF事務(wù)碼里能找到對應(yīng)的同名節(jié)點(diǎn)。我們只需要在SICF里給這個節(jié)點(diǎn)綁定一個ABAP類,該節(jié)點(diǎn)對應(yīng)的Url通過瀏覽器或者Postman,或者其他編程語言訪問時,ABAP ICF框架就會自動調(diào)用綁定的ABAP類。
也就是說,應(yīng)用開發(fā)人員只需要在ABAP類里實(shí)現(xiàn)業(yè)務(wù)邏輯,至于這個類運(yùn)行時的實(shí)例如何被ICF調(diào)用,如何初始化和銷毀等生命周期管理,ABAP開發(fā)人員完全不用操心。
關(guān)于更多ABAP ICF的介紹,請參考我的文章:一個13年ABAP老兵的建議:了解這些基礎(chǔ)知識,對ABAP開發(fā)有百利而無一害。
(5) 基于Java SpringBoot,Node Express等Web應(yīng)用框架的API開發(fā)
采用此類開發(fā)方式的生態(tài)圈是全球最龐大最活躍的群體,技術(shù)成熟穩(wěn)定,相關(guān)文檔和教材非常豐富。更新更先進(jìn)的開發(fā)框架也在不斷演化。開發(fā)人員通常在本地完成開發(fā),再將應(yīng)用部署到服務(wù)器上運(yùn)行。也可以將應(yīng)用打包成容器鏡像,再以容器的方法運(yùn)行在物理服務(wù)器或者SAP云平臺,AWS,Google Cloud Platform,Azure等各種云上。容器數(shù)量到達(dá)一定規(guī)模之后,可以采用Kubernetes進(jìn)行編排管理。
Jerry這篇文章介紹了一個例子:在SAP云平臺上部署和運(yùn)行Docker應(yīng)用。
Jerry之前的項(xiàng)目里也消費(fèi)過SAP Commerce的Web Service:如何使用API的方式消費(fèi)SAP Commerce Cloud的訂單服務(wù)。
(6) Serverless 架構(gòu)
云計(jì)算行業(yè)里的一個熱門詞匯,Serverless架構(gòu),并不意味著采用這個架構(gòu)后就再也不需要服務(wù)器了,而是指應(yīng)用開發(fā)人員不用關(guān)心開發(fā)好的應(yīng)用如何部署到服務(wù)器,不需要考慮服務(wù)器的運(yùn)行狀態(tài)等運(yùn)營和維護(hù)問題。傳統(tǒng)Web應(yīng)用的開發(fā)思路,如Jerry之前介紹的那樣,通常在本地完成開發(fā)和單元測試,然后需要考慮采用何種方式,部署到何種服務(wù)器或者云上。
而基于Serverless架構(gòu)的API/服務(wù)開發(fā),根本就沒有API部署的這個步驟。以Jerry之前介紹過的SAP Kyma上的Lambda Function為例,API函數(shù)本身的代碼編寫就是在云上完成。一旦保存,只要API維護(hù)的觸發(fā)條件滿足(事件觸發(fā)或者Url觸發(fā)),該API立即被調(diào)用。
下圖是我在SAP Kyma里使用nodejs編寫的一個Lambda Function:
我設(shè)置其通過HTTPS的方式被調(diào)用:
在瀏覽器里訪問這個HTTPS-endpoint,Lambda Function立即執(zhí)行。
從這個角度講,Jerry覺得ABAP開發(fā)人員,在開發(fā)API的時候,一直就在享受著Serverless架構(gòu)帶來的便利。因?yàn)锳BAP領(lǐng)域的開發(fā),無論是通過SAPGUI,ABAP Development Tool,還是通過各種Key User工具,本質(zhì)上都是連接到ABAP Netweaver這個集應(yīng)用開發(fā)和運(yùn)行為一體的服務(wù)器上進(jìn)行的,因而根本沒有傳統(tǒng)Java/nodejs開發(fā)里的應(yīng)用部署這一環(huán)節(jié)。
關(guān)于更多如何使用Lambda Function實(shí)現(xiàn)API的介紹,請參考Jerry的文章:
-
從ABAP Netweaver的SICF到SAP Kyma的Lambda Function
-
周伯通的空明拳,米諾斯的星塵傀儡線,SAP Kyma的Serverless
(7) SAP Data Intelligence Graph
這種方式嚴(yán)格來講也算基于Serverless,使用者通過瀏覽器登錄SAP Data Intelligence控制臺,進(jìn)行Graph建模。完成后啟動,Graph就直接運(yùn)行在SAP Cloud Platform的Kubernetes基礎(chǔ)設(shè)施上了。
之所以把這種方式單獨(dú)拿出來介紹,是因?yàn)槠溆志哂蠰ow Code Development(低代碼開發(fā))的特質(zhì)。
看一個具體的例子。
假設(shè)我想實(shí)現(xiàn)一個支持CRUD的API,消費(fèi)者通過HTTP GET, POST和DELETE請求,能夠在數(shù)據(jù)庫里分別讀取,插入和刪除一條記錄。
低代碼開發(fā)平臺,通常都提供了圖形化的用戶界面,給使用者提供了通過拖拽組件和模型驅(qū)動開發(fā)的方式, 結(jié)合少量的編碼來快速創(chuàng)建應(yīng)用或者API.
訪問SAP Data Intelligence Launchpad,進(jìn)入Modeler:
我們像小朋友搭積木一樣,從左邊的工具箱里,拖拽HTTP Server和若干個JavaScript Handler到編輯頁面里。
這些積木一樣的組件搭配在一起,如何就實(shí)現(xiàn)了支持增刪改查的API功能的呢?由于篇幅原因,Jerry后續(xù)的文章會介紹,敬請繼續(xù)關(guān)注。
更多閱讀
-
SAP OData編程指南
-
30分鐘用Restful ABAP Programming模型開發(fā)一個支持增刪改查的Fiori應(yīng)用
-
一個13年ABAP老兵的建議:了解這些基礎(chǔ)知識,對ABAP開發(fā)有百利而無一害
-
在SAP云平臺上部署和運(yùn)行Docker應(yīng)用
-
如何使用API的方式消費(fèi)SAP Commerce Cloud的訂單服務(wù)
-
從ABAP Netweaver的SICF到SAP Kyma的Lambda Function
-
周伯通的空明拳,米諾斯的星塵傀儡線,SAP Kyma的Serverless
-
從SAP Leonardo到SAP Data Intelligence
要獲取更多Jerry的原創(chuàng)文章,請關(guān)注公眾號"汪子熙":
總結(jié)
以上是生活随笔為你收集整理的SAP API开发方法大全的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 探访大疆全域数字化无人巡检成果:“遍地开
- 下一篇: SAP Analytics Cloud里