写点什么

SAP CRM 和 C4C 的内容管理 (Content Management)

用户头像
Jerry Wang
关注
发布于: 1 小时前
SAP CRM和C4C的内容管理(Content Management)

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 设置断点即可调试。




介绍了如何通过 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



发布于: 1 小时前阅读数: 4
用户头像

Jerry Wang

关注

个人微信公众号:汪子熙 2017.12.03 加入

SAP成都研究院开发专家,SAP社区导师,SAP中国技术大使。

评论

发布
暂无评论
SAP CRM和C4C的内容管理(Content Management)