当前位置: 首页 > news >正文

一种轻量级的C4C业务数据同步到S/4HANA的方式:Odata通知

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

SAP Cloud for Customer和SAP其他传统产品的同步,除了使用SAP Netweaver Process Integration和SAP HANA Cloud Integration外,还有一些轻量级的同步方式。

本文介绍其中一种,C4C OData通知(Notification)。

  1. 登录C4C系统,工作中心Administrator,工作中心视图General Settings:

选择OData: Event Notification to External Systems

假设A6P是我的CRM系统,client为213,我期望的同步场景是:C4C上一旦有新的Opportunity创建成功,就会自动同步到CRM去。

为此,我需要创建一个新的consumer,维护一个endpoint:https://<crm host name>/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。

  1. 到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的原创文章,请关注公众号"汪子熙":

转载于:https://my.oschina.net/u/3771578/blog/2395961

相关文章:

  • 发送HTTP_GET请求 表头application/json
  • 网络文件共享-SAMBA
  • 如何辨别程序员的水平?
  • jQuery清空标签内容--防止内存泄露
  • 对“工厂方法”,突然茅塞顿开
  • 算法第三章上机实践报告
  • 2018-2019-1 20165320 《信息安全系统设计基础》第六周学习总结
  • ajax实现异步上传多图并且预览
  • Redis学习之管道机制
  • fiddler安装及抓包分析
  • TP5 对于数组使用分页的方法
  • 通过K8S Ingress Controller来实现应用的流量复制
  • 主流接口测试框架对比
  • 虚拟化网络技术
  • 跨域技术
  • [ JavaScript ] 数据结构与算法 —— 链表
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • Asm.js的简单介绍
  • hadoop集群管理系统搭建规划说明
  • JavaScript 基础知识 - 入门篇(一)
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • js数组之filter
  • Linux中的硬链接与软链接
  • nfs客户端进程变D,延伸linux的lock
  • nginx 配置多 域名 + 多 https
  • Python - 闭包Closure
  • 从PHP迁移至Golang - 基础篇
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 力扣(LeetCode)22
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 微服务核心架构梳理
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 中文输入法与React文本输入框的问题与解决方案
  • 你对linux中grep命令知道多少?
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #pragma once
  • #Ubuntu(修改root信息)
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (补)B+树一些思想
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (二)Linux——Linux常用指令
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)计算机毕业设计ssm电影分享网站
  • (规划)24届春招和25届暑假实习路线准备规划
  • (区间dp) (经典例题) 石子合并
  • (转)创业的注意事项
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .net6+aspose.words导出word并转pdf
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .Net转前端开发-启航篇,如何定制博客园主题
  • @RestControllerAdvice异常统一处理类失效原因
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用