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系统里某个product上传了一个文本文件。框架
点击文件名"Jerry"这个超连接,在浏览器里打开了文本文件。函数
那么这个文本文件如何存储在CRM服务器上的?仔细查看这个浏览器连接:工具
/sap/bc/contentserver/001/jerry?get&pVersion=0045&contRep=BDS_DB22&docId=FA163EE56C3A1EE8908EFBAA20D4FC6C&compId=jerry.txturl
在其方法HANDLE_REQUEST设置断点便可调试。spa
介绍了如何经过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
做为一款云产品,用户从浏览器里没法像在SAP CRM那样,可以轻易地查看其服务器端的存储明细。在Chrome开发者工具里看到文件的超连接是一个简单的"#"。
实际状况是,每次点击超连接,C4C的ABAP后台会动态计算出该文件供用户下载或者预览的url:
https://xxxxx.crm.ondemand.co...
由于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