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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

SAP C/4HANA Sales Cloud使用OData服务和第三方系统集成的一个具体例子

發布時間:2023/12/19 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAP C/4HANA Sales Cloud使用OData服务和第三方系统集成的一个具体例子 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

出于工作需要,Jerry寫了這篇文章,給某些SAP Partner做參考。

以前Jerry曾經介紹過SAP C/4HANA的五朵云到底包含哪些具體產品,其實在SAP官網上有更權威的中文解釋:

https://www.sap.com/china/products/crm-commerce/c4-hana-cx-suite.html

其中明確提到銷售云包含SAP Cloud for Customer(C4C),SAP Revenue Cloud和Callidus Cloud。

有Partner詢問有沒有更詳細的步驟介紹,關于如何在第三方系統里調用SAP C4C暴露出的Restful API進行集成。本文就給出一個具體的例子,將SAP C4C銷售訂單的創建功能通過自定義的OData服務暴露出來,然后Partner可以根據項目需要選擇合適的編程語言(本文選擇JavaScript)來消費。

Jerry以前發布過一個視頻,演示了如何在SAP C4C里手動創建一個銷售訂單,步驟可以說簡單易懂。

https://v.qq.com/x/page/d0809f4tswl.html

現在我們通過OData的方式將銷售訂單的創建功能暴露出來,就能在第三方系統或者應用里完成C4C的訂單創建。

大家如果對SAP OData還不太了解,可以先讀一讀我這篇文章開頭的部分:

SAP OData編程指南

下面是詳細步驟。

登錄C4C系統,訪問工作中心Administrator,工作中心視圖OData Service Explorer,這里可以在SAP發布的標準OData服務和客戶自定義的OData服務之間切換。

因為客戶自定義OData服務能夠允許客戶自行決定從哪一個Business Object的哪一些節點,選擇哪一些字段來生成OData模型,通過這種靈活的方式可以避免Business Object上客戶業務場景里不需要的字段出現在OData模型中。

點擊New按鈕新建一個OData服務:

給Work Center View字段指定一個用來做權限控制的視圖,只有分配了這個視圖的用戶才有權限訪問這個OData服務。

點擊Select Business Object從彈出對話框中選擇基于哪一個Business Object創建OData模型。

下圖就是一個已經創建好并處于Active狀態的OData服務。左邊顯示的是CustomerQuote這個BO的Root節點的所有字段,每個字段都有一個可以勾選或取消的Select屬性,勾選則該BO字段會出現在右側的OData模型里。

除了Root節點之外,BO的其他子節點上的字段當然也是可以出現在OData模型里的,比如我上圖右邊OData模型的子節點CustomerQuoteItem, CustomerQuoteParty和CustomerQuoteText等,就是分別從左邊BO的同名節點選中后自動帶到右邊的OData模型中去的。

理論上,完成基于BO模型進行OData模型的創建并激活后,這個OData服務就可以使用了,這體現了SAP C4C OData服務自定義框架的強大之處。然而我也收到了一些朋友從后臺給我提的一些問題,羅列如下。

問題1: 仍然以本文銷售訂單創建這一場景為例,假設我希望我創建的OData服務能夠允許消費者調用時指定External Reference的值,但是我找遍整個BO列表,也沒發現銷售訂單的BO上有叫這個名稱的字段啊?

**Jerry答:**External Reference是UI文本,不是BO字段的技術名稱。

給C4C系統在瀏覽器里的url添加參數debugMode=true, 然后刷新頁面,按住Ctrl鍵再單擊External Reference字段,

就能看到這個UI字段綁定到UI模型上哪一個字段了。

在這個UI模型字段上再點擊Show Model,就能看到這個UI模型字段綁定到的BO字段名稱為BuyerID。

所以我們在OData開發工具里,只需把BO字段BuyerID選中,移動到右邊的OData模型里即可。

問題2:我想讓我的OData服務支持行項目數據的創建,比如指定產品ID,描述和購買數量等等。我怎么知道哪些BO節點上的字段需要添加到OData模型中去?

**Jerry答:**現在我們換一種方法,打開Cloud Application Studio的UI Designer,定位到銷售訂單創建頁面的UI模型COD_SALESORDER_QC, 找到Product ID字段,在它的Properties面板里即可看到這個Product ID字段綁定的BO字段的名稱和完整路徑:

Root-.ItemProposal-ProductUUID-content

因此我們需要將BO對應路徑下面的ProductUUID字段添加到OData模型中去。這里能觀察到ProductID的Create和Update是沒有勾選上的,而ProductUUID則支持Create和Update,這個行為和C4C銷售訂單行項目創建的標準實現有關——消費者需要提供待創建行項目包含的產品UUID,然后C4C會根據UUID到系統中查詢出對應的產品,顯示其ID到UI上。如果消費者在調用OData服務時,沒有指定ProductUUID,則行項目創建邏輯不會執行。

OData模型創建好之后,在用編程語言消費之前,我們可以先用工具Postman(或者C4C自帶的測試工具)進行測試。

因為SAP C4C后臺對Cross-site request forgery(跨站請求偽造)這種攻擊采取的防御實現和SAP CRM,SAP S/4HANA一樣,采取的是CSRF token驗證機制,因此我們在調用OData服務進行銷售訂單創建時,需要將一個合法的CSRF token一并傳遞給C4C系統。

如何得到一個合法的CSRF token呢?在Postman里構造一個HTTP GET請求,頭部字段名為

x-csrf-token, 值為fetch:

發送這個HTTP GET請求,服務器端會生成一個CSRF token,通過HTTP響應結構頭部字段x-csrf-token返回給消費者:

sNwnYC9cV4xeGSYZmJ8Dtw==

下面我們再在Postman里新建一個HTTP Post請求,將之前通過HTTP GET拿到的CSRF token,以HTTP Post請求頭部字段的方式發送給C4C系統。

關鍵在于HTTP Post請求的請求體。下圖高亮部分是我在HTTP Post請求里指定的創建銷售訂單的輸入數據:

在Postman里發送這個Post請求,幾秒鐘后得到C4C的響應,訂單創建成功,ID為9000000451:

為了方便大家對比,下面是我用Postman消費我創建的OData服務生成的銷售訂單在系統里的顯示。字段1~6對應的Postman輸入字段可以在前文找到。

藍色區域高亮顯示的字段,我在Postman里構造的輸入里并沒有維護,而是通過SAP C4C系統的各種determination配置,自動決定出來的。最典型的有SAP老司機們天天打交道的Partner determination,Organization determination,Pricing determination等。

Postman里測試通過后,就可以寫代碼消費了。

如果想直接復制粘貼我下面列出的代碼,可以從我的github上獲得:

https://github.com/i042416/KnowlegeRepository/blob/master/ABAP/C4COData/create_SalesOrder.js

注意本代碼只用于演示目的,缺少健壯的出錯處理,不能直接用于生產環境中。

下面的代碼使用nodejs提供的request模塊向C4C請求CSRF token。注意第3行的url和第11行的Authorization頭部的值,我都是用的虛假值,請大家替換成自己實際使用的C4C url和認證信息。

Token拿到之后,將其放入第41行構造的HTTP Post請求的頭部結構中,作為字段x-csrf-token的值。第47行發送該POST請求,C4C響應的數據存放于JavaScript變量data中。

最后我通過簡單的console.log打印出創建成功的銷售訂單ID:

在命令行里用node執行這個js文件,會打印出從C4C獲取到的CSRF token,以及成功創建的訂單ID。

我們再回顧一下用SAP C/4HANA Sales Cloud中的C4C OData同外部系統做集成的三個主要步驟:

1. 在C4C的OData模型編輯頁面里,根據業務需要,從對應的BO節點里選擇合適的字段,添加到OData模型中。

2. 用Postman或者C4C自帶的OData測試工具對OData模型進行測試,確保其正常工作。

3. 根據項目需要選擇合適的編程語言消費OData服務。

如果對于SAP C4C OData有更多的問題需要討論,歡迎留言。感謝閱讀。

Jerry關于OData的更多文章

  • SAP OData編程指南

  • OData服務同步模式和異步模式的討論

  • https://blogs.sap.com/2015/06/19/a-test-on-fiori-odata-request-synchronous-mode-vs-asynchronous-mode/

  • OData服務的性能分析
  • https://blogs.sap.com/2015/07/01/how-to-find-odata-performance-trace-and-payload-trace-functionality/

    https://blogs.sap.com/2016/01/13/measure-the-performance-of-your-odata-service/

  • 基于SAP CDS view生成OData服務
  • https://blogs.sap.com/2016/03/12/my-cds-view-self-study-tutorial-part-4-how-does-annotation-odatapublish-work/

  • OData的offline支持
  • 5.1 https://blogs.sap.com/2016/08/04/how-is-odata-request-routed-to-offline-data-store-by-odata-offline-plugin/

    5.2 https://blogs.sap.com/2016/08/04/how-is-javascript-code-in-odata-offline-plugin-delegated-to-native-java-code-in-android/

    5.3 https://blogs.sap.com/2016/08/05/how-is-odata-offline-store-opened-in-android-platform/

  • 使用ABAP消費SAP C4C標準OData服務
  • https://blogs.sap.com/2017/08/04/consume-standard-c4c-odata-service-via-abap-code/

  • SAP CRM,C4C和S/4HANA里OData服務實現的橫向比較
  • https://blogs.sap.com/2017/08/07/odata-service-backend-implementation-in-c4c-crm-and-s4-hana/

  • 使用Java和jMeter對需要支持CSRF驗證的OData服務進行高并發性能測試
  • https://blogs.sap.com/2017/08/28/odata-service-parallele-performance-measurement-how-to-deal-with-xsrf-token-in-java-program-and-jmeter/

  • 使用C4C OData + ABSL消費自定義BO的邏輯
  • https://blogs.sap.com/2017/12/07/expose-custom-bo-logic-implemented-by-absl-via-custom-odata-service/

    要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的SAP C/4HANA Sales Cloud使用OData服务和第三方系统集成的一个具体例子的全部內容,希望文章能夠幫你解決所遇到的問題。

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