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

一种轻量级的C4C业务数据同步到S4HANA的方式:Odata通知的更多相关文章

  1. RabbitMQ数据同步一致性解决方案

    1.概述 我们知道在使用RabbitMQ时,生产者将消息发布出去之后,消息是否顺利到达broker代理服务器呢?默认情况下发布操作没有任何信息返回给生产者,也就是生产者是不知道消息有没有顺利到达bro ...

  2. 搭建中小规模集群之rsync数据同步备份

    NFS重要问题 1.有关NFS客户端普通用户写NFS的问题. 1)为什么要普通用户写NFS. 2)exports加all_squash. Rsync介绍 什么是Rsync? Rsync是一款开源的.快 ...

  3. SAP CRM和C4C数据同步的两种方式概述:SAP PI和HCI

    SAP Cloud for Customer(C4C)和SAP其他传统产品进行数据同步的方式,如下图所示,可以使用SAP Netweaver Process Integration或者SAP HANA ...

  4. [币严区块链]ETH搭建节点区块数据同步的三种模式:full、fast、light

    ETH  全节点Archive(归档)模式数据量增长图 上述图表可通过链接查看:https://etherscan.io/chartsync/chainarchive 通过上表,可以看到截止2019年 ...

  5. 实现web数据同步的四种方式

    http://www.admin10000.com/document/6067.html 实现web数据同步的四种方式 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 ...

  6. Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步。

    Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步. ogg要实现的功能: 同步可以细化到单个表,满足特定的where条件rows同步,称号column同步. ...

  7. python开发_json_一种轻量级的数据交换格式

    以下是我做的对于python中json模块的demo 运行效果: Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.16 ...

  8. JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式

    JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 它基于JavaScript(Standard ECMA-262 3rd Edition - D ...

  9. SQL 2008提供几种数据同步方式

    SQL 2008提供几种数据同步的方式如下. 1.日志传送(Log Shipping),定时将主数据库的日志备份,恢复到目标数据库. 2.数据库镜像(Database Mirror),原理同日志传送, ...

随机推荐

  1. Hash Join是Oracle CBO时代经常出现的一种连接方式

    Hash Join是Oracle CBO时代经常出现的一种连接方式,对海量数据处理时经常出现在执行计划里.本篇的上篇(http://space.itpub.net/17203031/viewspace ...

  2. 转 sql profile 绑定 litera and move profile to another db l for spa

    SQL TYPE 1:for bind value sql , first create a good plan with literal and with good  profile. then u ...

  3. Kafka monitoring监控

    一.Metrics kafka有两个metrics包,在看源码的时候很容易混淆 package kafka.metrics package org.apache.kafka.common.metric ...

  4. Big Data Opportunities and Challenges(by周志华)论文要点

    大数据环境下的机器学习 三种误解:模型不再重要(大量数据上复杂模型依然提升显著,大数据是的复杂模型充分利用数据且难以过拟合),相关性就足够了(因果关系重要性无法被替代),以前的研究方向不再重要(高性能 ...

  5. 性能测试工具LoadRunner16-LR之Controller 负载运行时设置

  6. Flyweight_pattern--reference

    http://en.wikipedia.org/wiki/Flyweight_pattern In computer programming, flyweight is a software desi ...

  7. statfs获得硬盘使用情况 模拟linux命令 df

    转自:http://blog.csdn.net/mociml/article/details/5335474 先说statfs结构:#include <sys/vfs.h>    /* 或 ...

  8. Devexpress Xtrareport 创建主从报表

    效果 xtrareport 布局 From 代码 private DataSet Getdata() { DataSet ds = new DataSet(); //config配置字符串 strin ...

  9. C# DialogResult的用法

    在程序中,经常会弹出一个对话框来让用户填写一些信息,填写完成后,当用户点击“确定”按钮后,在主窗体中进行其他的处理.比如一个简单的例子,在主窗体中有一个菜单,是“增加用户”,当点击这个菜单之后,我们需 ...

  10. cf868F. Yet Another Minimization Problem(决策单调性 分治dp)

    题意 题目链接 给定一个长度为\(n\)的序列.你需要将它分为\(m\)段,每一段的代价为这一段内相同的数的对数,最小化代价总和. \(n<=10^5,m<=20\) Sol 看完题解之后 ...