SAP Cloud for Customer 如何直接消费S/4HANA API
最近有朋友在微信上問我本文標(biāo)題這個(gè)需求,如何在 SAP Cloud for Customer 里實(shí)現(xiàn)。正好我在 2018年底參加的 SAP 和沈陽自動(dòng)化研究所合作設(shè)計(jì)的一個(gè)工業(yè) 4.0 示范系統(tǒng) POC 中,曾經(jīng)用到了這個(gè)技術(shù),本文就來說一說。
關(guān)于這個(gè) POC 的詳情,在 SAP中國研究院官方公眾號(hào)這篇文章里有詳細(xì)敘述:
SAP中國研究院&中科院沈陽自動(dòng)化所重磅發(fā)布第三代自適應(yīng)模塊化智能生產(chǎn)解決方案
SAP 中國研究院和中科院沈陽自動(dòng)化研究所(沈自所)聯(lián)合打造了一套自適應(yīng)模塊化智能生產(chǎn)解決方案,作為雙方合作的第三代工業(yè)4.0智能制造解決方案,其生產(chǎn)組織形式采用世界領(lǐng)先的模塊化生產(chǎn)概念,業(yè)務(wù)流程涵蓋從個(gè)性化產(chǎn)品銷售訂單的創(chuàng)建到車間倉儲(chǔ)和物料管理和生產(chǎn)執(zhí)行與交付,在車間里傳統(tǒng)的生產(chǎn)線被解耦為模塊化生產(chǎn)單元,其機(jī)械結(jié)構(gòu)、工業(yè)網(wǎng)絡(luò)、生產(chǎn)工序可以根據(jù)產(chǎn)品設(shè)計(jì)的變化,現(xiàn)場(chǎng)設(shè)備狀態(tài),自適應(yīng)完成重構(gòu)。改造成本大大壓縮,調(diào)整周期顯著縮短。同時(shí),實(shí)現(xiàn)了智能倉儲(chǔ)系統(tǒng)、智能生產(chǎn)系統(tǒng)、智能機(jī)器人、智能 AGV 運(yùn)輸車輛等系統(tǒng)的高度集成和高效運(yùn)轉(zhuǎn),這也是 SAP 最新提出的「從設(shè)計(jì)到運(yùn)維(D2O,From Design to Operate)」的工業(yè)互聯(lián)網(wǎng)全業(yè)務(wù)流程中的重要環(huán)節(jié)。
下面這個(gè) POC 視頻,是當(dāng)時(shí)的項(xiàng)目兼產(chǎn)品經(jīng)理,我的研究院同事 Cai Carol 制作的。視頻最開頭,展示的是從 SAP Cloud for Customer里創(chuàng)建銷售訂單。SAP C4C 銷售訂單創(chuàng)建完畢之后,點(diǎn)擊訂單明細(xì)頁面的一個(gè)按鈕,觸發(fā) S/4HANA 的交貨單(Outbound Delivery)創(chuàng)建,進(jìn)而觸發(fā)接下來的制造流程的執(zhí)行。
其中SAP Cloud for Customer 部分的定制開發(fā)是由我實(shí)現(xiàn)的,里面就涉及到了本文標(biāo)題描述的場(chǎng)景,即 SAP Cloud for Customer 里直接調(diào)用 SAP S/4HANA 的 API. 整個(gè)定制開發(fā)部分均可在 C4C 的 Cloud Application Studio 里完成,這意味著 Partners 也可以完成類似場(chǎng)景的開發(fā)。
https://v.qq.com/x/page/e323674458n.html
下面是具體的實(shí)現(xiàn)步驟。
(1) 首先在 S/4HANA 里開發(fā)一個(gè) API,邏輯是接收從 SAP Cloud for Customer 傳過來的 Sales Order ID,讀出其包含的行項(xiàng)目,然后調(diào)用 SAP S/4HANA 的交貨單創(chuàng)建函數(shù),為這些行項(xiàng)目創(chuàng)建交貨單。
用關(guān)鍵字 S/4HANA Outbound Delivery,一下子就搜索到了對(duì)應(yīng)的 BAPI 名稱:BAPI_OUTB_DELIVERY_CREATE_SLS.
很快寫好了一個(gè) report:在第21行硬編碼了一個(gè) SAP Cloud for Customer 的銷售訂單 ID,測(cè)試后發(fā)現(xiàn)沒什么問題,將這個(gè)報(bào)表的源代碼拷貝到一個(gè)新的 ABAP Class 里,稍作修改,將硬編碼去掉,替換成從 SAP Cloud for Customer 傳過來的銷售訂單 ID 即可。
在 SAP S/4HANA 里新建一個(gè) SICF 服務(wù)節(jié)點(diǎn),其實(shí)現(xiàn) Class 指定成剛剛建好的包含了調(diào)用 BAPI_OUTB_DELIVERY_CREATE_SLS 的 ABAP Class. 每個(gè) ABAP SICF 節(jié)點(diǎn)會(huì)自動(dòng)生成一個(gè) url,從而將其節(jié)點(diǎn)分配的 SICF ABAP Class的業(yè)務(wù)邏輯通過 HTTP 的方式暴露給外界。
關(guān)于 ABAP SICF 的更多介紹,請(qǐng)參考我之前的文章:從ABAP Netweaver的SICF到SAP Kyma的Lambda Function.
我們當(dāng)時(shí)做 POC 的這臺(tái) S/4HANA 服務(wù)器,其 url 是可以直接被外網(wǎng)訪問到的,所以省去了使用 SAP Cloud Connector 將其暴露給外網(wǎng)這一步。對(duì)于常規(guī)的 SAP ABAP On-Premises 平臺(tái)上開發(fā)的 HTTP Service url,請(qǐng)參考我這篇文章將其暴露給公網(wǎng)使用:
使用Java+SAP云平臺(tái)+SAP Cloud Connector調(diào)用ABAP On-Premise系統(tǒng)里的函數(shù)
(2) 回到 SAP C4C,打開 Cloud Application Studio,對(duì)標(biāo)準(zhǔn)的 Sales Order BO 進(jìn)行擴(kuò)展,增添一個(gè)新的 Action.
準(zhǔn)確的說,被擴(kuò)展的 BO 名稱應(yīng)該為 CustomerQuote,因?yàn)楦鶕?jù) SAP C4C 幫助文檔介紹,Sales ORder 和 Sales Quote 共用同一個(gè) BO 模型 CustomerQuote,通過模型字段 Type Code 的不同值來區(qū)分。
對(duì) CustomerQuote 進(jìn)行擴(kuò)展,創(chuàng)建一個(gè)新的 Action:triggerOutboundDelivery:
這個(gè) Action 的實(shí)現(xiàn)邏輯當(dāng)然就是調(diào)用前一步驟里創(chuàng)建好的,SAP S/4HANA 通過 SICF 暴露出來的 API.
在動(dòng)手實(shí)現(xiàn) Action 之前,我們還需要在 SAP C4C 里創(chuàng)建一些消費(fèi) S/4HANA API 所需要的模型。
Cloud Application Studio 里新建一個(gè) External Web Service Integration:
Web Service 名稱取為 JerryExternal,類型為 REST. URL字段,填充成 S/4HANA API 的 url.
這個(gè) Web Service 模型的創(chuàng)建,會(huì)同時(shí)自動(dòng)創(chuàng)建一個(gè) Communication Scenario,名稱為 JerryExternalService:
基于該 Communication Scenario 創(chuàng)建一個(gè)新的 Communication Arrangement:
通過上圖郵件菜單,打開 Communication Arrangement 的維護(hù) UI:
將訪問 S/4HANA API 所需的用戶名和密碼,維護(hù)到新建的 Communication Arrangement 里去:
最后,實(shí)現(xiàn) CustomerQuote BO 擴(kuò)展出來的 Action,在里面通過 C4C 標(biāo)準(zhǔn)的工具庫函數(shù) WebServiceUtilities.ExecuteRESTService,消費(fèi) S/4HANA API:
從上圖 ABSL 實(shí)現(xiàn)代碼,我們也能體會(huì)到 SAP 引入 Communication Scenario & Arrangement 這些模型帶來的好處:
Code Over Configuration is better than Code Over Code - 基于配置編程優(yōu)于硬編碼。
如果 SAP S/4HANA API url 或者用戶名和密碼發(fā)生變化,我們只需修改 C4C 里 Communication Scenario 和 Arrangement 對(duì)應(yīng)的配置即可,而無需重新編譯 ABSL 代碼本身。
最后,在 SAP C4C UI 上點(diǎn)擊 Trigger Delivery 按鈕后,觸發(fā)我們?cè)?BO 上自定義的 action:
上圖是 SAP C4C ABSL 代碼的單步調(diào)試,點(diǎn)擊 Continue 之后,設(shè)置在 SAP S/4HANA SICF 實(shí)現(xiàn)類里的 ABAP 斷點(diǎn)觸發(fā),調(diào)試器里能看到 SAP C4C Sales Order ID 已經(jīng)成功傳遞到 SAP S/4HANA 端了。
之前我已經(jīng)將 SAP C4C 端的銷售訂單,通過這篇文章?一些SAP Partners能夠通過二次開發(fā)實(shí)現(xiàn)打通 SAP C/4HANA和S/4HANA 的場(chǎng)景分享?介紹的二次開發(fā)方式,同步到了 SAP S/4HANA 端,且兩個(gè)系統(tǒng)里銷售訂單的 ID 一致。因此,在 SAP S/4HANA 端,調(diào)用 S/4HANA 銷售訂單的讀取 API,讀到的是 SAP C4C 同步過來并存儲(chǔ)到 S/4HANA 的銷售訂單數(shù)據(jù)。
本文介紹了 SAP C4C 如何通過定制開發(fā),實(shí)現(xiàn)消費(fèi)第三方系統(tǒng) API 的需求。這里的第三方系統(tǒng) API,可以是 SAP S/4HANA,SAP Business Technology Platform 或者其他任何系統(tǒng)的 API,是一種比較通用的二次開發(fā)方式,希望對(duì)大家有所幫助。
更多閱讀
-
使用Java+SAP云平臺(tái)+SAP Cloud Connector調(diào)用ABAP On-Premise系統(tǒng)里的函數(shù)
-
從ABAP Netweaver的SICF到SAP Kyma的Lambda Function
-
SAP云平臺(tái)上的ABAP編程環(huán)境里如何消費(fèi)第三方服務(wù)
-
一些SAP Partners能夠通過二次開發(fā)實(shí)現(xiàn)打通 SAP C/4HANA和S/4HANA 的場(chǎng)景分享
更多Jerry的原創(chuàng)文章,盡在:“汪子熙”:
總結(jié)
以上是生活随笔為你收集整理的SAP Cloud for Customer 如何直接消费S/4HANA API的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 逾期了怎么办
- 下一篇: SAP Spartacus popove