一種輕量級的C4C業務數據同步到S/4HANA的方式:Odata通知

SAP Cloud for Customer和SAP其餘傳統產品的同步,除了使用SAP Netweaver Process Integration和SAP HANA Cloud Integration外,還有一些輕量級的同步方式。 node

本文介紹其中一種,C4C OData通知(Notification)。git

  1. 登陸C4C系統,工做中心Administrator,工做中心視圖General Settings:

選擇OData: Event Notification to External Systems github

假設A6P是個人CRM系統,client爲213,我指望的同步場景是:C4C上一旦有新的Opportunity建立成功,就會自動同步到CRM去。json

爲此,我須要建立一個新的consumer,維護一個endpoint:https://<crm host name>/sap/bc/bsp/sap/crm?sap-client=213,3d

這個endpoint指向的ICF服務須要在CRM系統A6P/213建立,負責響應C4C系統Opportunity的建立。 code

在Subscription標籤頁,選擇Opportunity對應的Business Object和OData服務。由於我只但願CRM監控到C4C Oppportunity的建立和更新,所以我只勾選Create和Update兩個checkbox。 server

  1. 到CRM系統使用事務碼SICF在路徑/sap/bc/bsp/sap/crm下面建立一個新的ICF服務:

建立一個新的處理類: blog

開發以下的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這個類的完整代碼,參考個人Githubip

如今回到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的原創文章,請關注公衆號"汪子熙":

相關文章
相關標籤/搜索