一種輕量級的C4C業務資料同步到S4HANA的方式:Odata通知
SAP Cloud for Customer和SAP其他傳統產品的同步,除了使用SAP Netweaver Process Integration和SAP HANA Cloud Integration外,還有一些輕量級的同步方式。
本文介紹其中一種,C4C OData通知(Notification)。
- 登入C4C系統,工作中心Administrator,工作中心檢視General Settings:
選擇OData: Event Notification to External Systems
假設A6P是我的CRM系統,client為213,我期望的同步場景是:C4C上一旦有新的Opportunity建立成功,就會自動同步到CRM去。
為此,我需要建立一個新的consumer,維護一個endpoint:https:///sap/bc/bsp/sap/crm?sap-client=213,
這個endpoint指向的ICF服務需要在CRM系統A6P/213建立,負責響應C4C系統Opportunity的建立。
在Subscription標籤頁,選擇Opportunity對應的Business Object和OData服務。因為我只希望CRM監控到C4C Oppportunity的建立和更新,因此我只勾選Create和Update兩個checkbox。
- 到CRM系統使用事務碼SICF在路徑/sap/bc/bsp/sap/crm下面建立一個新的ICF服務:
建立一個新的處理類:
開發如下的ABAP程式碼:
METHOD if_http_extension~handle_request. DATA(lv_payload) = server->request->get_cdata( ). CALL METHOD zcl_c4c_crm_integration_tool=>parse_json_to_internal_table EXPORTING iv_json = lv_payload IMPORTING et_node = DATA(lt_node). READ TABLE lt_node ASSIGNING FIELD-SYMBOL(<event>) WITH KEY attribute = 'event'. DATA(lv_event) = <event>-value. READ TABLE lt_node ASSIGNING FIELD-SYMBOL(<opp>) WITH KEY attribute = 'odataServiceEndpoint'. DATA(lv_opp_detail) = zcl_c4c_crm_integration_tool=>get_opp_detail( <opp>-value ). CLEAR: lt_node. CALL METHOD zcl_c4c_crm_integration_tool=>parse_json_to_internal_table EXPORTING iv_json = lv_opp_detail IMPORTING et_node = lt_node. ENDMETHOD.
zcl_c4c_crm_integration_tool這個類的完整程式碼,參考我的Github
現在回到C4C系統,隨便修改一個Opportunity,比如修改name欄位,將值改為 “Jerry change demo”:
然後C4C系統裡註冊的CRM的endpoint指向的ICF服務的handler處理類的HANDLE_REQUEST會自動被呼叫:C4C發生修改的Opportunity的ID和修改型別(新建還是更新)也會自動從C4C傳入CRM。
Opportunity的明細也包含在內。可以通過這些資訊用One Order API比如CRM_ORDER_MAINTAIN在CRM裡建立或者更新對應的Opportunity。
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":