S4CRM 和 C4C 的技术比较
如果您对 SAP S/4HANA for Customer Management(以下简称 S4CRM)和 SAP Cloud for Customer(以下简称 C4C)不甚熟悉,那我建议您可以先浏览我之前写的这两篇微信公众号文章。
发布了这两篇文章之后,我在后台收到很多朋友的留言,询问 S4CRM 和 C4C 相比较的各种问题。因此我写了这篇文章,统一作答。
Jerry 受家中长辈影响,从小就是一个三国演义迷,小学还未毕业,罗贯中的三国演义就已读过无数遍了。幼时也曾缠着长辈追问诸葛亮和周瑜谁在智力上更甚一筹,直到初中时我入坑“暗荣”发布的三国志 V, 才从游戏中找到了答案。为了写这篇文章,Jerry 又一次打开了玩了无数次的三国志 V。好吧,周大都督智力值只比诸葛丞相低 1 点,但是武力值高 18 点。一代儒将,文武双全,“曲有误,周郎顾”,名不虚传。
大学毕业参加工作后不久,又赶上真三国无双 V 的发布。
这部毁誉参半的作品在我这个三国迷看来却称得上又一款神作,虽然该作品也有很多我想吐槽的地方,比如周大都督的兵器居然和孙大圣的一样,而赤壁之战周公瑾借此在世界军事史以弱胜强的著名战例中留下浓墨重彩一笔的“火计”,居然分配给了陆逊这个小说中我非常讨厌的家伙,然后补了一个和赵云一样的技能“神速”,囧。不过瑕不掩瑜,我又是玩的不亦乐乎,以至于在很长的几年时间里,我的很多论坛账号的头像都是用的下图这种:
诸葛亮和周瑜这对人物,无论是在三国演义书中,还是在数不清的以三国为题材的电脑游戏里,各自都有大量的粉丝。如果要问谁更优秀,在 Jerry 看来这个问题本身就很荒谬,两人在蜀和吴担任的角色不同,这根本没有可比性。不过要问 Jerry 更喜欢哪一个,答案毫无疑问是诸葛丞相,毕竟作为一个土生土长的成都人,而且在武侯区又住了那么多年。
为了避免这篇文章成为三国游戏介绍杂文,让我们言归正传。Jerry 在 S/4HANA for Customer Management(以下简称 S4CRM)和 Cloud for Customer(以下简称 C4C)开发团队都工作过,这篇文章给出这两款产品一些技术层面的比较。
下图是我原创的表格。
注:表格中 S4CRM 指 2018 年 2 月 28 日发布的 1.0 版本。
部署方式
这一差异显而易见,本地部署和云端部署的区别导致了表格里其他比较项目的差异。
SAP 标准 UI 开发方式
S4CRM 和 C4C 的 UI 虽然看起来都是 Fiori 风格,但实现技术不同。
S4CRM 的标准 UI 采用的仍然是 SAP CRM WebClient UI 技术,只不过 SAP WebClient UI 团队的开发同事们巧妙地设计了一系列 CSS,并且对 WebClient UI 的框架做了一些调整(所谓的”Visual Harmonization”), 使得其视觉效果和体验接近于原生的 Fiori 应用。
如果看到一个界面风格和原生 Fiori 应用很类似的 UI,您不能判定该 UI 到底是基于 WebClient UI 还是 SAP UI5,可以打开 Chrome 开发者工具,倘若能找到下图红色区域所示的 CRM Application Frame 和带有/bc/bsp 的 ICF 路径,则该 UI 是基于 WebClient UI 开发的。
如果在 Sources 标签页内能看到加载了下图所示的 UI5 库文件,说明该 UI 是基于 SAP UI5 开发的。
当然也可以安装我的博客Chrome Development Tool tips used in my daily work提到的 UI5 Inspector:
安装之后在 Chrome 开发者工具会多出一个名为 UI5 的标签页,如果一个 UI 基于 SAP UI5,则该标签页会显示对应信息,否则显示空白。
而 C4C 的标准 UI 则是基于 SAP UI Designer 和 SAP UI5 协作而成的。C4C 标准 UI 也符合著名的“二八定律”,即 80%的标准 UI 布局类似,只是呈现的业务数据有差异。例如下图红色区域我们称之为工作中心(Work Center),蓝色区域为工作中心视图(Work Center View),绿色区域称为 Object Work List。
C4C 里不同的应用尽管功能各异,但用户都是通过工作中心-工作中心视图-OWL 这个统一的方式去访问。为了避免开发此类布局基本类似的 UI 模型造成的重复劳动,我们使用 UI Designer,以所见即所得的方式开发 UI 模型。
例如 Tickets 这个视图里的 OWL 基于的 UI 模型名称可以通过 Chrome 开发者工具找到: /BYD_COD/ServiceOnDemand/AgentQueue/SEOD_Ticket_SADL_OWL
该模型在 UIDesigner 里打开如下图所示。我们首先从 UI 控件工具箱里拖拽出一个表格控件放到该模型 UI 区域,再指定该表格需要显示哪些列,并维护每列需要显示 Ticket 这个 Business Object 上哪些字段的内容。
在 UI Designer 里开发的 UI 模型保存之后,在 ABAP 后台以 XML 的格式存储。运行时这些 UI 模型的内容被读到 C4C 前台,通过 C4C UI 框架翻译成 SAP UI5 控件渲染给终端用户。
对于 UI Designer 技术上不能支持的剩下 20%的需求,我们仍然会采用原生的 SAP UI5 开发。比如下图这种地图和 C4C 标准 UI 的集成,就是成都 SAP 研究院的 C4C 开发团队通过 SAP UI5 实现的。
Partner UI 开发方式
对 S4CRM 来说,因为是本地部署,Partner 可以直接登录后台进行开发,所以理论上来说,只要 SAP 标准开发能实现的功能,Partner 也能做。
有的朋友抱怨 WebClient UI 和其他开源 UI 框架相比显得比较笨重,有的特效不易实现。其实,我的个人看法是,WebClient UI 底层是基于 SAP BSP 的,而 BSP 又支持原生 HTML 和 Javascript 的开发,因此 BSP 其实也是灵活和开放的。
例如您可以参考我的这篇文章使用 WebClient UI 实现下面的效果:
Display count down in WebClient UI
以及在BSP里使用Vue:
对于 C4C 的 Partner 来说,只能使用 UI Designer 进行 UI 开发。C4C 标准的 UI5 开发那条途径没有对 Partner 开放。不过存在一个轻量级的替代方案:使用 C4C HTML mashup 扩展 C4C 标准 UI。
下面是 SAP Community 上的一篇博文,介绍了如何调用微软新闻 API,取回最新的新闻并显示在 C4C 的客户明细页面里。
SAP 后台开发方式
S4CRM 和 C4C 后台都是基于 ABAP Netweaver,因此对于 SAP 标准开发人员来说,进行这两个产品的后台开发使用的工具相同:SAPGUI 或者 ABAP Development Tools。关于更多 ABAP Development Tools 的介绍,请参考我的微信公众号文章那些年我用过的SAP IDE 。
S4CRM 的 Service Request 的实现是基于 One Order 这个技术框架,Jerry 是该开发框架的一员,而 C4C 的 Service Request 则基于 ESF(Enterprise Service Framework)框架,Jerry 在 C4C 项目中对该框架也有所了解,因此这里可以多说一句。One Order 和 ESF 这两个框架其实现都有着 Java Spring 里依赖注入和控制反转的影子,即 SAP 应用开发人员只需要专注于将具体的业务逻辑实现在框架规定的技术模型里——One Order 里称为回调(Callback), ESF 里称为 Determination,而无需操心这些模式何时调用——这些模型实例的初始化,执行上下文的准备,以及模型与模型之间的依赖,模型与框架的协同工作(orchestration)等等工作都由 ESF 框架本身完成,这极大程度地降低了应用开发的编程复杂度,提高了应用程序的健壮性。
下图是 S4CRM 里 One Order 的部分回调截图,红色区域即为具体的回调函数。
下图是 S/4HANA 里的 BO Determination 的一个例子。因为 C4C 的后台对 Partner 不可见,因此不允许在社交媒体上发布任何关于 C4C 后台的截图,这里我采用 S/4HANA 的截图代替,因为二者技术原理类似。
Partner 后台开发方式
对 S4CRM 来说,SAP 开发人员和 Partner 采用的开发工具和开发方式相同。
对 C4C Partner 来说,只允许使用 SAP Cloud Application Studio 进行后台的二次开发。这是因为 C4C 基于云的部署模式,多个客户以不同租户(tenant)的方式,共享同一物理服务器。直接用 SAPGUI 和 ABAP Development Tools 创建的后台模型均为所有租户可见。因此,SAP 提供了新的开发工具 Cloud Application Studio 供 Partner 进行后台二次开发。使用该工具创建的后台模型由所谓的 PDI(Partner Development Infrastructure)统一管理,确保其租户隔离性(Tenant Isolation)。
我在 SAP Community 上也写过很多关于 Cloud Application Studio 的文章,您可以通过这个链接获得。
与其他系统集成的技术手段
S4CRM 不存在 C4C 里开箱即用的 Web Service 和 OData Service,需要 Partner 自行将 function module 通过事务码 SOAMANAGER 暴露成 Web Service。具体步骤参考我的博客: Step by step to create, consume and trace web service in ABAP system
另一方面,虽然 S4CRM 不需要再借助 CRM 中间件进行 S4CRM 和 S/4HANA 的数据同步,但是仍然可以使用 CRM 中间件里的一个模块,XIF(External Interface) Adapter 来和第三方系统交互。XIF Adapter 在整个交互场景中扮演的角色如下:
具体例子参考我的博客:Step by step to send IDoc data into external receiver via XIF adapter
有趣的是,传统的 SAP CRM 和 C4C 也是可以通过 PI(Process Integration)和 XIF Adapter 进行集成的, 请参考我的博客: Replicate CRM Opportunity to SAP Cloud for Customer using PI and XIF Adapter
和 S4CRM 相比,作为一款云解决方案,C4C 同其他系统的交互手段要丰富得多。下图是 C4C 提供的标准集成场景一览:
SAP Help里描述的这些 OData Service 也是开箱即用的:
C4C 所有的集成方式都记录在一位印度美女同事 Sapna Ramaiah 的博客里,阅读量超过 4 万:
SAP Hybris Cloud for Customer – All About Integration
Key User Extensibility
S4CRM 没有继续使用源自 SAP CRM 的 AET(Application Extension Tool), 而是采用了 S/4HANA 的扩展工具 S/4HANA Key User Tool。该工具的一个特色就是支持在浏览器里书写 ABAP 代码,其原理在我的微信公众号文章 那些年我用过的SAP IDE里有过介绍。
C4C 里的 Key User Tool 无论从使用方式还是从功能上来说都和 S/4HANA Key User Tool 非常类似,这在我看来一点也不奇怪。这篇介绍 S/4HANA Key User Tool 的博客的作者,Thomas Schneider,曾经是大名鼎鼎的 SAP PDI 的首席架构师:
The Key User Extensibility Tools of S/4 HANA
Thomas 博士 1996 年进入 SAP 工作至今,出版过多部 SAP 技术著作。我去德国 Walldorf 总部出差时,曾看到不少同事桌上都摆着他的一两本书。
C4C 的 Key User Tool 给我留下深刻印象的一个强大功能是提供了灵活的规则(Rule)编辑功能来控制 UI 上某个元素的显示/隐藏。这种规则甚至可以通过脚本代码来定义。
因为对这个功能的实现很好奇,我做过一些研究并把结果写在了这篇博客里:
How to change UI element visibility dynamically via Rule Editor – and how it works under the hood
而 S/4HANA Key User Tool 也毫不逊色,甚至支持直接在浏览器里编写 ABAP 代码:
具体原理在我的公众号文章那些年我用过的SAP IDE里介绍。
Office integration
S4CRM 和 C4C 均支持 Excel 导出,具体实现参考我的博客:
PDF 格式的导出也是均支持的,只是具体实现方式有所区别。
C4C 除了 Excel 导出外,还支持通过 Excel 上传的方式将本地数据导入至 C4C 系统。
值得一提的是,SAP CRM 支持更为强大的 word 模板功能,即用户可以在本地开发一个 word 模板文件,将里面的字段绑定到 CRM 标准的 BO 模型字段上。比如下图我将该模板分配给 CRM Product(产品)这个 BO,然后将 BO 上需要的字段从文档右边的树形结构拖拽到文档左边:
运行时只要我从某个产品明细页面打开该模板,该模板里绑定到 BO 模型字段上的字段就会自动显示对应的 BO 模型字段的内容,如下图所示:
具体步骤参考我的博客:
Create Webservice enabled word document in attachment assignment block
这个功能 S4CRM 1.0 不支持。
成都 SAP 研究院开发团队
成都 SAP 研究院的 S4CRM 和 C4C 两支开发团队的人员组成差不多,都由在 SAP CRM 领域耕耘多年的老兵加上刚毕业的新人组成。至于两支队伍的羽毛球水平,麻将水平,K 歌水平,对美食的喜爱程度等等,均不在本文讨论范畴内,有兴趣私聊。
这里放几张成都 SAP 研究院 C4C 开发团队的青年才俊们的一些图片。您使用的 C4C RUI 里的部分 JavaScript 和 CSS 代码,就是由这些前端专家们贡献的。大家不仅写代码了得,而且也很会玩。
这张图片里有一位号称"成都 C4C 小彭于晏"的同事
中间这位众矢之的是 SAP 成都研究院 C4C 开发团队一位才华横溢的程序猿,精通 ABAP, UI5, Java,nodejs, PHP 等技术,同时擅长讲各种段子,很多段子都是原创。
比较了这么多,我想表达的观点就是,S4CRM 和 C4C 作为 SAP 推出的两款定位不同的 CRM 解决方案,均是全球 CRM 领域的佼佼者,地位就如同诸葛亮和周瑜在群英荟萃的三国时代一样,没有谁更优或者谁可以替代谁一说。
最后是一些我写过的针对一些具体的技术点,S4CRM 和 C4C 的实现差异的比较:
(1) OData Service backend implementation in C4C, CRM and S4 HANA
(2) Excel export in CRM and C4C
(3) Saved query in C4C, CRM and S/4 HANA
(4) Direct navigation in CRM WebUI, CRM Fiori and C4C
(5) Formatted Text Edit in CRM and Cloud for Customer
(6) How Table column resize works in CRM and Cloud for Customer
(7) Document flow API in SAP CRM and C4C要获取更多 Jerry 的原创技术文章,请关注公众号"汪子熙":
版权声明: 本文为 InfoQ 作者【Jerry Wang】的原创文章。
原文链接:【http://xie.infoq.cn/article/cff12966163680a54d8cadf29】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论