SAP CRM内容管理

SAP CRM使用Attachments这个UI给用户提供内容管理的功能。通过新建按钮可以上传本地文档到CRM系统:

该内容管理支持简单的版本管理功能,用户可点击Check Out将一个文档导出到本地,编辑结束之后通过Check In按钮将修改版本导入至CRM。

每次Check Out / Check In会生成一个新的版本。

从技术上来说,每一个文件上传到CRM后,会自动生成一个Logical Info Object(LOIO)和Physical Info Object(PHIO)。仅从这对概念的名称就能猜到它们的用途:LOIO是一个逻辑上的概念,描述一个文件的客观存在。PHIO则承载一个文件的具体内容,每次Check In之后,用户在UI上看到一个新版本的生成,而后台则对应一个新的PHIO实例的生成。这也是为什么查看Content Management对应的API CL_CRM_DOCUMENTS, 会发现很多方法的参数里都有LOIO/PHIO出现的原因。

CRM内容管理系统的内容存储实现

内容管理系统要实现的一个重要功能就是内容存储。我给CRM系统里某个product上传了一个文本文件。

点击文件名”Jerry”这个超链接,在浏览器里打开了文本文件。

那么这个文本文件如何存储在CRM服务器上的?仔细查看这个浏览器链接:

/sap/bc/contentserver/001/jerry?get&pVersion=0045&contRep=BDS_DB22&docId=FA163EE56C3A1EE8908EFBAA20D4FC6C&compId=jerry.txt

  • /sap/bc/contentserver:事务码SICF,Service Name输入contentserver,可以找到这个Service对应的ABAP处理类CL_HTTP_EXT_CSIF。

在其方法HANDLE_REQUEST设置断点即可调试。

  • contRep=BDS_DB22:我的博客How is attachment physically stored in database table in CM framework

介绍了如何通过BDS_DB22这个编号找到对应的后台数据库表名称。通过文章里介绍的步骤,找到数据库表BDSCONT22。

docId=FA163EE56C3A1EE8908EFBAA20D4FC6C

把这个docId放到BDS_DB22这张表里根据PHIO_ID查询,即可找到上述例子里文本文件jerry.txt在这张表里存储的内容。

因为除了文本文件,内容管理系统还需要支持其他诸如PDF或视频文件的存储,因此数据库表对应字段采用了特殊的数据类型INDX_CLSTR和INDX_CLUST,因此文件的具体内容无法直接通过在事物码SE16查表浏览。

而需要使用function module SCMS_R3DB_IMPORT。如果查看其代码,会发现这个函数正是使用了ABAP关键字IMPORT去操作这两个特殊的表字段从而读取出文件的实际内容。

作为企业级管理软件的一个模块,病毒扫描的支持是必不可少的。SAP在CRM内容管理系统里实现了病毒扫描的框架,而具体执行病毒扫描的引擎由客户自行配置:

在我的公众号文章SAP S4CRM vs C4C, 诸葛亮和周瑜?里提到SAP CRM内容管理的一个特色功能:用户可以点击下图step 1中的”With Template”按钮,在本地开发一个word模板文件,将里面的字段绑定到CRM标准的BO模型字段上,如下图step 2所示。运行时渲染的word文件里就会显示其从属的业务文档里的对应数据,如图step 3所示。

这个运行时word文件的渲染实现,其技术原理在我的博客Manipulate Docx document with ABAP里介绍过。

关于SAP CRM内容管理的更多介绍,请参考我的博客合集:

A collection of technical details about Content Management

C4C 内容管理

作为一款云产品,用户从浏览器里无法像在SAP CRM那样,能够轻易地查看其服务器端的存储明细。在Chrome开发者工具里看到文件的超链接是一个简单的”#”。

实际情况是,每次点击超链接,C4C的ABAP后台会动态计算出该文件供用户下载或者预览的url:

https://xxxxx.crm.ondemand.com/sap(cz1TSUQlM2FBTk9OJTNhdmFhaTAza3ZjX0tWQ18wMCUzYXpkMUFiM1FIQ1VfR2pUU2NWbEZBUzk5NWtydVBnaF9GWXNBaXhBWUMtQVRU)/ap/ds/wd/doc/00163E11A66C1ED8909167D838730A19/clipboard1.png?sap-client=331&Ctxt=QlVTSU5FU1NfUEFSVE5FUl9UTVBMOkFUVEFDSE1FTlRfRk9MREVS&Shm=00163E11A66C1ED8909167D838730A19

因为C4C的后台对客户和Partner不可见,因此这个url的计算逻辑不便透露。

C4C同CRM一样,对于上传的文件和发送的邮件均有内置的病毒扫描引擎以确保C4C解决方案的安全性。

除此之外,您也能通过Business Configuration工作中心里配置允许哪些MIME Type的文件上传到C4C系统。

对于在Cloud Application Studio里自己创建的Custom BO,也可通过简单的步骤即可同样支持文件上传的功能。具体步骤参考我的博客:

Step by step to enable your custom BO with attachment upload functionality

如果上传的文件是图片,您甚至可以在Cloud Application Studio里做些简单的开发,将这些图片和Custom BO的数据合并起来,渲染成一个PDF文件。

具体步骤参考我的博客:

How to render PDF which displays picture from the image attachment of your custom BO

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

SAP CRM和C4C的内容管理(Content Management)相关推荐

  1. SAP CRM的市场营销(Marketing)管理简介(VI)

    SAP CRM的市场营销(Marketing)管理简介 Marketing Project(市场营销项目) 在SAPCRM 中, Marketing Project(市场营销项目)泛指在市场营销规划和 ...

  2. 如何将Twitter的内容导入到SAP CRM和C4C

    2019独角兽企业重金招聘Python工程师标准>>> Twitter的内容导入SAP CRM Interaction Center呼叫中心 具体步骤查看我的博客Twitter(al ...

  3. Account Hierarchy in SAP CRM and C4C

    SAP CRM CRM Account hierarchy的编辑方式是采用直接修改hierarchy树状结构进行的,这一点和CRM里其他的树状结构编辑比如product hierarchy和IBASE ...

  4. SAP CRM and C4C PDF print

    SAP CRM CRM PDF form 的preview,通过这个按钮trigger: 调试细节在文末. SAP C4C see my blogHow to render PDF which dis ...

  5. SAP CRM和C4C的订单Number range

    SAP CRM 事务码SNRO SAP Cloud for Customer 当然Partner在C4C里也可以通过二次开发的方式实现自定义的Number range,see my blog

  6. SAP CRM和C4C的产品主数据price维护

    SAP CRM 点了Edit List之后,可以直接修改产品主数据的Price信息: C4C 在C4C的product administration工作中心里: 点击Edit按钮进入编辑模式,Pric ...

  7. SAP CRM和C4C的客户主数据修改历史记录查询

    SAP CRM 随便修改一个字段,比如给Search Term维护值"webpack": Change History assignment block里显示出了这条修改记录: 根 ...

  8. SAP CRM和C4C message category配置

    SAP CRM Transactions->Basic Settings->Define Attribute for Systems Messages 可以用新的Message Type去 ...

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

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

最新文章

  1. python用哪个软件好-4个备受欢迎的Python程序库 你用哪个?
  2. BZOJ1227 [SDOI2009]虔诚的墓主人 【树状数组】
  3. 动态二级下拉菜单html,js实现简洁大方的二级下拉菜单效果代码
  4. 若依管理系统导出Excel时添加没有的列和关联码表显示中文进行导出
  5. Windows下VS2013 C++编译测试faster-rcnn
  6. Django(part14)--模板的继承
  7. JQUERY学习第二天之制作横纵向导航菜单
  8. python3.7输出语句_python3.4用循环往mysql5.7中写数据并输出的实现方法
  9. 常见鸟的种类及特点_常见乌龟的品种及图片大全!
  10. PHP中的数组(拆分与合并)
  11. 国内首个!阿里云发布容器ATTCK攻防矩阵 | 凌云时刻
  12. 操作系统课程设计 模拟磁盘文件系统实现
  13. 计算机ip地址和用户名和密码忘记了怎么办,192.168.1.112这是IP地址 我把密码忘了 怎么处理啊 电脑室现在还...
  14. html5在线+网站,15个在线HTML5网页设计工具
  15. QQ魔法卡片辅助工具外挂silverlight版
  16. Cloudera Manager介绍
  17. 使用百度ai识别身份证信息
  18. windows下图像标注软件Labelme安装及使用教程
  19. 希捷 sshd 微型计算机,希捷2TB SSHD拆解/核心技术分析_希捷 Desktop 2TB 7200转 8GB混合硬盘_内存硬盘-中关村在线...
  20. 关于:请求中含有特殊字符,被禁止(已解决,可供参考)

热门文章

  1. 苹果高通和解后,华为5G芯片市场地位稳了?
  2. freemarker 字符串格式化
  3. 2022年最新最全的Java零基础入门,零基础入门springboot,MySQL的学习
  4. 学习JSP——在虚拟机中建立一个JSP网页,通过Tomcat服务器发布,并通过虚拟机的宿主机浏览器访问虚拟机上所发布的JSP网页
  5. Vue element 下拉框 可输入可选择(无bug)
  6. 大数据Hive集成python分析框架—搜狗实验室(用户查询日志)—电影评分分析
  7. qt中的out与in
  8. 基于node的智能家居
  9. Web安全之CTF测试赛
  10. DFS(深度优先搜索)算法实现