SAP CRM和C4C的内容管理(Content Management)-阿里云开发者社区

开发者社区> -技术小能手-> 正文

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




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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 | LoadedApk 源码分析 )
【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 | LoadedApk 源码分析 )
1 0
【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 | ActivityThread 源码分析 )
【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 | ActivityThread 源码分析 )
1 0
Visual Studio 2017 15.7 下的.NET Core
Visual Studio 2017 15.7版本发布,对.NET Core项目的主要相关改变如下, 同时对Xamarin、Android和iOS项目的支持上也做了较大改进。
5 0
【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 )
【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 )
5 0
【Android 安全】DEX 加密 ( 代理 Application 开发 | 交叉编译 OpenSSL 开源库 )(一)
【Android 安全】DEX 加密 ( 代理 Application 开发 | 交叉编译 OpenSSL 开源库 )(一)
4 0
ASP.NET Core : 九.从Windows发布到CentOS的跨平台部署(下)
本文聊一下如何在Windows上用VS开发并发布, 然后将其部署到CentOS上。对于我们一些常在Windows上逛的来说,CentOS用起来还真有些麻烦。MSDN官方有篇文章大概讲了一下(链接),按照MSDN上面的例子用vs创建个hellomvc项目,还是踩了好多坑,将整个过程和遇到的坑说一下,希望对有需要的朋友有所帮助。
3 0
【Android 安全】DEX 加密 ( 代理 Application 开发 | 交叉编译 OpenSSL 开源库 )(二)
【Android 安全】DEX 加密 ( 代理 Application 开发 | 交叉编译 OpenSSL 开源库 )(二)
7 0
【Android 安全】DEX 加密 ( 代理 Application 开发 | 项目中配置 OpenSSL 开源库 | 使用 OpenSSL 开源库解密 dex 文件 )(一)
【Android 安全】DEX 加密 ( 代理 Application 开发 | 项目中配置 OpenSSL 开源库 | 使用 OpenSSL 开源库解密 dex 文件 )(一)
3 0
【Android 安全】DEX 加密 ( 代理 Application 开发 | 项目中配置 OpenSSL 开源库 | 使用 OpenSSL 开源库解密 dex 文件 )(二)
【Android 安全】DEX 加密 ( 代理 Application 开发 | 项目中配置 OpenSSL 开源库 | 使用 OpenSSL 开源库解密 dex 文件 )(二)
4 0
【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 | ActivityThread 源码分析 )
【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 | ActivityThread 源码分析 )
3 0
1727
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载