`
JerryWang_SAP
  • 浏览: 1042242 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

Jerry眼中的SAP客户数据模型

阅读更多

本文Jerry将介绍八款SAP产品中的客户模型。希望您在阅读完本文之后,能对SAP客户模型设计的思路有一个最最粗浅的了解。

由于Jerry水平和精力所限,本文不会详细阐述这些产品里的客户模型设计细节,而是介绍了一种方法,如果您对这些模型设计感兴趣,可以按照该方法自行深入研究。

  • SAP CRM
  • SAP CRM Fiori
  • SAP Hybris Cloud for Customer
  • SAP S/4HANA On Premise
  • SAP S/4HANA On Cloud
  • SAP Hybris Enterprise Commerce Platform
  • SAP Hybris Revenue Cloud
  • SAP Hybris Engagement Center

除SAP S/4HANA On Cloud之外,其他七款产品在SAP成都研究院均存在对应的开发团队。如果您对这些产品有进一步的问题需要咨询,欢迎留言。

SAP CRM

可以按照客户的类型是Corporate或Individual来搜索。在SAP的很多产品里,这两种类型的客户共用同一个技术模型,通过模型上某个类型字段进行区分。本文只着重介绍Corporate Account。

 

下图是SAP CRM里某个Corporate Account明细页面的抬头区域。

 

客户明细页面的抬头区域下部由若干可以通过点击小三角符号来展开的区域组成。SAP的技术文档里称这些区域为Assignment Block。

 

如何查看SAP CRM的客户模型呢?在上图客户页面按F2,会显示如下弹出窗口,显示该页面实现的BSP应用视图名称为BP_HEAD/BPHEADOverview。

 

在BSP开发工具里打开该视图,能看到每一个Assignment Block的技术明细。

 

假设我想深究下图名为Address的Assignment block实现明细,在上图中得知其BSP实现为BP_ADDR/CorpAccountAddresses。在开发工具里打开此视图,找到地址数据是来自模型节点BuilAddress。

 
 

这个BuilAdress节点是SAP CRM客户模型的子节点。SAP很多产品都有所谓Business Object(下文简称BO)的概念,这些模型从技术上来说是一棵树,由若干节点组成,节点与节点之间存在父子关系或者跳转关系。每个节点由若干字段组成,这些节点组成的模型,再加上节点上定义的一系列能够执行的动作(action)就构成了一个BO,实际上是sap对某一业务流程及参与实体的高度抽象的产物。

 

CRM客户模型的底层数据库表:BUT000。用于区分Corporate还是Individual Account的字段名称: TYPE。

 

通过模型单元测试工具,能够清楚地看到客户的地址信息是维护在节点BuilAddress里的。下图是CRM Business Object测试工具截图,左上显示了该模型的节点集合,左下显示了当前选中节点为BuilAddress,右边区域显示了这个节点所有字段的内容。

 

SAP CRM Fiori

前一章节介绍里使用CRM Web Client UI打开了一个Corporate客户。这里用SAP CRM Fiori再次打开它。

 

可以看出CRM Fiori和CRM UI显示的思路类似,都是把抬头类型的信息和各个维度的明细信息分开显示。同CRM相比,稍稍不同的是CRM Fiori的客户明细页面并不像CRM那样,各个维度的数据从上到下依次全部显示在一个页面上。因为要照顾到使用平板电脑或者手机访问系统的Fiori用户,所以CRM Fiori页面上只会显示某一维度的客户数据。不同维度的数据展示通过下拉菜单来切换。

 

例如选中Marketing Attributes维度后,在Chrome开发者工具里能观察到一个HTTP请求,观察其路径发现CRM_BUPA_ODATA,这其实是OData服务的技术名称。

 

在网关系统根据该服务名称搜索,能查到提供该OData服务的后台服务器。

 

让我们再来重温我的公众号文章SAP Fiori应用的三种部署方式里提到的这张架构图。网关服务器就是下图红色方框的ABAP Frontend Server,而OData服务的实现位于后台服务器,如下图蓝色方框所示。

 

SAP Hybris Cloud for Customer

工作中心视图Accounts和Individual Customers分别对应了SAP CRM里的Corporate Account和Individual Account。

 

页面风格和SAP CRM稍有不同,但是思路一致:客户的抬头信息显示在页面左部,其他维度的信息显示在页面右部。每个维度的信息通过不同的标签页进行切换。

 

使用我公众号文章Jerry和您聊聊Chrome开发者工具提到的技巧找到客户明细页面的UI模型地址:

/BYD_COD/SalesOnDemand/Account/UI/COD_Account_TI.TI.uicomponent

在Cloud Application Studio里打开该UI模型,点击Data Model即可查看C4C客户模型的设计明细。

 

这里可以看出C4C的客户模型仍然是一个BO,位于命名空间http://sap.com/xi/AP/FO/BusinessPartner/Global

 

该命名空间内部还包含一些其他BO,例如Customer和Employee。

 

这几个模型有什么区别和联系?借用面向对象程序设计的思路来解释C4C里客户模型的设计:类似面向对象编程语言里的父类一样,Business Partner这个BO定义了一些最基本最通用的字段,如下图正中的虚线框所示:Generic Attribute,Addresses和Relationships。其他模型Customer,Employee和Supplier,则在这些通用字段基础上定义了一些新的字段。对于Customer模型,其区别于Business Partner模型之处就在于需要维护一些和销售相关的信息,比如销售数据,销售区域和销售线索。对于Employee,关注点则在于工作地址,工作部门,领导等信息。

借用面向对象编程语言的继承概念,C4C的Customer和Employee BO继承了Business Partner BO上定义的通用字段,同时本身又定义了新的字段,这些字段将其自身和其他BO从业务上区分开来。

 

作为一款云解决方案,您可以通过一些非常简易的步骤,在短短几分钟之内通过OData Service或者Web Service,实现您的第三方应用和C4C客户模型的各种交互。例如您可以将C4C的客户数据暴露出来供第三方应用读取,或者通过第三方应用对C4C客户数据进行写操作。

 
 

SAP S/4HANA On Premise

在SAP R/3里,创建不同角色的业务伙伴需要使用不同的事务码:

 

这些模型在SAP全球客户多年使用过程中,暴露出一些局限性和不足,例如一个Customer/Vendor只能维护一套地址信息;没有角色的概念,一个业务伙伴没法维护成既是Customer又是Vendor;没办法维护一些和时间相关的属性。

这些不足到了S/4HANA得到了妥善解决。在S/4HANA里,所有不同类型的业务伙伴使用统一的Business Partner模型。R/3的Customer和Vendor使用各自的模型和数据库表,到了S/4HANA,这些模型统一成Business Partner,通过BP Role来区分其角色,底层的数据库表也统一使用Business Partner的数据库表。

 

客户数据的创建也统一使用事务码BP来完成。R/3那些五花八门的业务伙伴创建的事务码全部标注成Obsolete。一旦执行,会自动重定向到事务码BP去。

 

为了确保大量源自R/3的基于Customer/Vendor旧模型的应用能够继续工作,S/4HANA引入了Customer Vendor Integration(CVI)的概念,简单地说即每次S/4HANA应用使用新的Business Partner对应的API进行写操作时,数据不仅仅存储到新的Business Partner模型的对应的数据库表里,同时仍然会存储一份到旧的数据模型表里,如下图所示:

 

关于CVI的更多介绍,请参考博客:

SAP S/4HANA on Cloud

和S/4HANA On Premise使用的客户模型相同,例如下图ID为1010的客户明细数据,

 

通过OData服务MD_CUSTOMER_MASTER从ABAP服务器读取。

 

切换标签页时,会触发该标签页对应的明细数据读取请求。

 

每个标签页对应客户模型上的一个子节点。通过Chrome开发者工具查看请求结果字段即可了解到该子节点上建模了哪些字段。

 

SAP Hybris Enterprise Commerce Platform

Hybris ECP backoffice里也存在Customer和Employee模型。因为是backoffice的使用场景,所以和前文介绍的SAP CRM和SAP C4C不同,这里的客户页面还包含一些其他维度的信息维护,比如密码策略和密码重置功能。

 

Hybris的模型定义很有意思,定义在xml文件里。在Hybris文件夹\bin\platform\ext\core\resources下面有core-items.xml:

 

该xml文件定义了Customer这个模型是另一个模型User的扩展,具体扩展的字段名称为customerID。

 

在执行命令ant build后,会自动生成一个以Model结尾的.java文件,位于文件夹\bin\platform\bootstrap\gensrc\de\hybris\platform\core\model:

 

查看CustomerModel.java,发现xml文件第1757行定义的code Customer出现在了Java文件的第40行,xml文件第1763行为Customer模型定义的新字段customerID, 出现在Java文件的第43行。

 

而User模型的实现文件UserModel.java和CustomeModel.java位于同一个文件夹。打开UserModel.java, 发现它又是扩展自模型PrincipalModel。

 

这个扩展关系也是在core-items.xml里定义的。

 

同理,User模型较之Principal模型,新定义的字段如下图attributes标签里所示:

 

按照同样的逻辑再从Principal往上追溯,可以得到完整的类型继承链:

Customer->User->Principal->GenericItems->LocalizableItem->ExtensibleItem->Item。

由此得知Hybris的类型系统,对于Customer和User这些业务模型的关系描述采用的是继承的思路,而ABAP Dictionary里的类型模型则采用的是组合的思路。若干业务上相关的字段被放到一个结构体里,若干结构体再组合(include)成一个规模更大的结构体,最终形成一个给外界消费的结构体。

 

SAP Hybris Revenue Cloud

SAP Revenue Cloud是SAP最近发布的一款云解决方案。该方案能动态地规划、创新和调整系统,从云端自动管理和配置定价,报价,计费和订购等流程,从而超越报价到收款流程,通过变革实现盈利。

点击Customer tile查看客户主数据:

 

客户明细页面是典型的Master Detail风格。

 

从Chrome开发者工具里发现明细页面加载时,会有一个请求向后台读取40个客户的抬头信息:客户ID,客户类型和客户名称,显示在左边的Master List区域内。

 

选中Master List里某个客户,会触发另一个HTTP请求向后台读取选中客户的明细:分别是客户地址,客户联系人和客户市场信息。这三类明细分别是Revenue Cloud客户模型的三个子节点,通过expand指令读取。

 

在Chrome开发者工具里展开节点即可查看该节点的字段。例如地址节点包含的字段如下:

 

这些数据请求由部署在SCP上基于Java实现的Revenue Cloud微服务负责响应并返回给UI5前台。

SAP Hybris Engagement Center

SAP Hybris Engagement Center是SAP新一代全渠道呼叫中心SaaS产品。在坐席和客户的交互场景里,坐席需要在最短的时间内搜索出系统里存在的客户或完成新客户的创建工作。

 

实际上Engagement Center里的Corporate客户模型上的字段一个屏幕就能够全部显示出来,如下图所示:

 

客户明细页面渲染之前,所需要的数据通过如下HTTP请求读取:

 

通过expand指令在一个请求里将客户模型的抬头信息及地址信息一并取回。观察HTTP请求的响应结构,得知Engagement Center的客户模型里,地址信息维护在子节点Addresses上。

 

从响应结构也能看出地址和客户角色都支持维护多个记录,这个观察结果也和UI上提供的功能一致。

 

这篇文章简要介绍了SAP几款产品中客户模型的建模情况。通过SAP不同产品里客户数据模型的比较,我们了解到这些模型的复杂程度随使用场景的不同而有所区别。您也可以按照本文介绍的使用Chrome开发者工具这一方法,自行研究您感兴趣的SAP产品里的模型设计。甚至,您可以用同样的方法看看Salesforce的客户模型是怎样设计的。

感谢阅读。

 

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

 
 
0
0
分享到:
评论

相关推荐

    SAP MM模块思维导图-Jerry

    总结SAP MM 模块各业务流程重点,帮助理解和学习SAP MM模块。

    SAP日常运维BASIS

    SAP日常运维BASIS

    SpringMVC处理模型数据-2.docx

    ### SpringMVC 处理模型数据详解 #### 模型数据类型 在SpringMVC框架中,模型数据是指从控制器传递到视图层的数据。这些数据可以被用来填充页面,或者进行其他业务逻辑处理。SpringMVC提供了多种方式来处理模型...

    jerry语言的编译器和对应的虚拟机

    Jerry语言是一种基于C++设计的编程语言,它的主要特点是提供了类似C++的语法结构,但其编译结果并不直接生成机器代码,而是转化为一种中间表示(Intermediate Representation, IR)。这种IR被称为Jerry字节码,是一...

    Jerry Smit

    BBC News with Jerry Smit

    数据挖掘工具rapidminer

    预处理包括数据清理(去除重复项、修正错误、处理缺失值等)、数据集成(合并多个数据源中的数据)、数据变换(数据规范化、标准化等)、数据约简(降低数据规模,简化数据模型)等。RapidMiner提供了丰富的操作符来...

    hypermesh官方教程的模型文件hm.zip

    《Hypermesh官方教程模型文件解析》 Hypermesh是一款由Altair公司开发的高性能、全方位的几何建模和网格划分工具,广泛应用于汽车、航空、航天、能源等多个工程领域。该软件以其强大的前处理功能,高效准确的网格...

    Tom和Jerry钟表网页版

    这个项目以我们熟知的卡通人物Tom和Jerry为主题,为用户呈现了一款具有互动性和娱乐性的在线钟表。通过简单的逻辑设计,实现了时钟的实时显示功能,带给用户一种新颖的查看时间的方式。 首先,HTML5是现代网页开发...

    jerry说明文档

    Jetty 是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立...

    毕设&课程作业_Jerry Jin的智能AI系统.zip

    4. **训练脚本**:用于训练机器学习模型的代码,包括数据预处理、模型构建、训练过程和评估指标。 5. **模型文件**:经过训练得到的模型,可以用于实际的预测或决策任务。 6. **测试用例**:用于验证系统功能是否...

    Tom and Jerry(Python版)

    《Tom and Jerry(Python版)》是一款基于Python编程语言开发的、致敬经典的同名小游戏。在这款游戏中,玩家可以体验到与Scratch版本相似但功能更加强大的游戏体验。使用Python进行开发,开发者利用了其强大的灵活性和...

    数据集.pdf数据集.pdf数据集.pdf

    数据集的质量与多样性直接影响着模型的性能表现,因此,在实际操作中,数据预处理和特征工程成为整个工作流程中的关键环节。 #### 二、数据集的处理工具与技术 在Python环境中,开发人员常常利用诸如NumPy、Pandas...

    内含monkaa、driving、flyingchairs数据集

    标题中的“内含monkaa、driving、flyingchairs数据集”表明这是一个包含多个特定数据集的压缩包,这些数据集可能被用于训练深度学习模型,特别是与计算机视觉和3D渲染相关的任务。monkaa、driving、flyingchairs这三...

    使用SAP WebIDE给SAP UI5应用添加data source

    添加一个新的Data source: 选择之前配置的指向northwind OData的Destination, 注意,在Neo和CloudFoundry环境里都要创建同名Destination才行。在Neo里创建的Destination还需要带...要获取更多Jerry的原创文章,请关

    C# 编写的TOM and Jerry

    在“TOM and Jerry”中,音乐的加载和播放可能是通过创建NAudio的MediaFoundationReader实例,然后使用ReadSamples方法读取音频数据并播放。 此外,游戏逻辑的实现离不开C#的事件驱动编程。游戏循环通常是一个无尽...

    互连线长分布计算模型

    标题《互连线长分布计算模型》指向的是一篇关于芯片上互连线长分布模型的学术论文,而描述中提到的Jerry Davis教授和他的同事们发表的这篇经典论文,是建立在一种已经确立的经验关系——Rent’s Rule之上,对片上...

    VB.net-DG_To_Excel.rar_Jerry_soft.dll_excel_vb.net excel

    5. **使用Jerry_soft.dll**:如果使用Jerry_soft.dll,可能是为了简化上述步骤,提供更方便的方法来快速导出数据。该库可能封装了一些常见的操作,比如自动创建Excel文件、填充数据、保存文件等,从而避免了直接操作...

    Jerry Cuomo Dockercon Presentation

    而“负责任”则可能意味着云计算提供者应该对数据安全、隐私保护和合规性承担责任。整体来看,Jerry Cuomo在演讲中可能将就如何实现这些云计算特性,以及IBM在云计算方面的努力和计划进行讲解。 标签:“Docker ...

    Diffusion Models: 生成扩散模型数学推导

    这种模型通过一系列逐步的噪声添加过程,即“扩散过程”,来模拟数据的生成,然后通过反向的噪声去除过程,即“逆扩散过程”,恢复出原始数据。这种模型在图像生成领域表现出了卓越的能力,能够生成高质量的非条件...

    Handbook of Simulation Jerry BANKS(3)

    仿真理论的经典手册,详细讲了仿真实现的具体理论,以及具体的仿真软件是如何实现的,对于仿真初学者具有很高的价值,对于仿真研究者也有很好的参考价值,由于上传大小限制故分为三个压缩包上传,请下载完后解压

Global site tag (gtag.js) - Google Analytics