SAP Cloud for Customer和SAP其餘傳統產品的同步,除了使用SAP Netweaver Process Integration和SAP HANA Cloud Integration外,還有一些輕量級的同步方式。 node
本文介紹其中一種,C4C OData通知(Notification)。git
選擇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
建立一個新的處理類: 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的原創文章,請關注公衆號"汪子熙":