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

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

SAP CRM和C4C的内容管理(Content Management)的更多相关文章

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

    Twitter的内容导入SAP CRM Interaction Center呼叫中心 具体步骤查看我的博客Twitter(also Facebook) is official integrated i ...

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

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

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

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

  4. Document flow API in SAP CRM and C4C

    Document flow API in CRM 以一个具体的例子来说明.在Appointment的Overview page上能看见一个名叫Reference的区域,这里可以维护一些其他的业务文档的 ...

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

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

  6. 查看SAP CRM和C4C的UI technical信息

    CRM 比如我们想看Quantity这个字段到底是绑在哪个模型上,选中该字段按F2: 就能知道是绑在Context node BTADMINI的QUANTITY字段上. C4C 同理,使用debugM ...

  7. SAP S4CRM和C4C的技术比较

    如果您对SAP S/4HANA for Customer Management(以下简称S4CRM)和SAP Cloud for Customer(以下简称C4C)不甚熟悉,那我建议您可以先浏览我之前 ...

  8. SAP成都研究院C4C光明左使:SAP Cloud for Customer 使用SAP UI5的独特之处

    大家好,今天的文章来自我的同事,Yang Joey. 2017年7月,SAP成都研究院C4C开发团队刚刚建立.某个周一早晨的Scrum meeting,新出现一位眉清目秀的小伙子,向大家自我介绍:&q ...

  9. SAP CRM 最新简介文字(2007年、中英文)

    以下内容是SAP CRM功能的精简描述,摘自SAP官方文档,附上中英文版本,可以对SAP CRM的主要功能有大致了解. 营销 - 使用营销资源管理.客户细分及列表管理.营销活动管理.线索管理.贸易促销 ...

随机推荐

  1. 012-Spring Boot web【一】web项目搭建、请求参数、RestController、使用jsp、freemarker,web容器tomcat和jetty

    一.项目搭建 同:http://www.cnblogs.com/bjlhx/p/8324971.html 1)新建maven项目→使用默认配置即可 定义好项目名称等 2)修改jdk版本 <pro ...

  2. logback 和 log4j对比,及相关配置

    Logback 一.logback的介绍 Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback-core,logback- classic和log ...

  3. pycharm中指定ip和端口

    pycharm中指定ip和端口 环境: 系统:win7 本机ip:192.168.0.100 1.建立工程请参照:https://www.cnblogs.com/effortsing/p/103945 ...

  4. ubuntu kylin 18.04 使用 wine 安装 EasyConnect 的windows版本

    首先下载wine: sudo apt-get install wine-stable 然后使用wine安装安装包EXE文件(安装包你自己去下): wine EasyConnectInstaller.e ...

  5. TensorFlow.资料

    1.ZC:看来  要用 TensorFlow,基本逃不过 Python了... TensorFlow物体识别——通过机器学习搭建属于自己的物体识别库 - 迷途无归的博客 - CSDN博客.html(h ...

  6. C++.控制台_界面颜色

    1.c++中system(_color )怎样用?-CSDN论坛.html(https://bbs.csdn.net/topics/390758320) 2. 2.1. 颜色属性由两个十六进制数字指定 ...

  7. centos7服务搭建常用服务配置之二:Rsync+sersync实现数据实时同步

    目录 1.RSYNC数据备份 1.1 rsync服务简介 1.2 rsync特点和优势 1.3 rysnc运行模式简介 1.4 数据同步方式 2 Rsync实验测试 2.1 实验环境说明 2.2 服务 ...

  8. Java核心第五章继承

    5.1类 超类(父类.基类)  子类(派生类) 使用关键字extends来继承 对于子类想访问父类的私有域,则必须要借助公有接口,在父类中的公有方法正是这样的接口 为了防止子类定义了与父类一样的成员函 ...

  9. 类型限定符volatile

    目录 类型限定符volatile 强制内存读取 禁止编译优化 注意:volatile不能够保证线程同步 volatile bool flag; volatile int a; 添加volatile限定 ...

  10. java学习(东软睿道)2019-09-07(预课html基础)《随堂笔记》

    1. 文件名称.html 2. 后缀表示文件类型.txt .doc .ppt 3. 标签<html> <head> <body> 显示内容 <font siz ...