SAP CRM附件在应用服务器上的存储原理解析

History:

Content Management(CM) was introduced in basis release 6.10 and implemented in CRM 3.0. Before CM was used, CRM applications was using the Business Document Service (BDS) or Generic Object Services (GOS) to implement Document management requirement. BDS was used in most applications like Business partners, products, product catalogues, solution database, campaigns. GOS was only used in the One Order objects like activities and opportunities. All BDS applications changed to CM in 3.0, the One Order objects only in 3.1.

A document in CM consists of several objects. The most important two are so called “logical info object” (LOIO) and a “physical info object” (PHIO). A LOIO as a logical folder or bracket which holds PHIOs together, while a PHIO represents the content of a specific version of a document. Let’s use the word edit in the real world as example. If one works on a Word document and changes the document over time, each saved version would be represented by a PHIO. The LOIO would be the word document itself. This is much like if one looks at SE38 in ABAP: The program name is the LOIO and each transported version of the code is the PHIO.

Let’s see an example. I have a product ZCM_DEMO with guid 0090FA0D8DC21ED395FD7C687F99BFF7, BOR type = BUS1178.
I create one attachment for it:

SAP CRM附件在应用服务器上的存储原理解析_第1张图片

Go to table SKWG_BREL, input product guid 0090FA0D8DC21ED395FD7C687F99BFF7, and we see two entries belonging to this product. The first entry indicates a folder instance which is actually a logical container to hold all attachments for the given product.

The content of column INSTID_B has naming convention as .
The guid in the first row can be found in table CRM_FOLDER:

SAP CRM附件在应用服务器上的存储原理解析_第2张图片

The guid 0090FA0D8DC21ED395FD830F8DD9DFFF in the second row can be found in table BDSLOIO22, together with the name of attachment.

SAP CRM附件在应用服务器上的存储原理解析_第3张图片

You are asking how I get to know the name of table BDSLOIO22? If one application wants to use CM to store document, it should have its dedicated class for physical object and logical object, or use the default one CRM_L_DOC. The relationship between application and its class is maintained in tcode DMWB:

SAP CRM附件在应用服务器上的存储原理解析_第4张图片

in table BDSPHIO22, by specifying logical information object ID, we can get all phyiscal object lists.

SAP CRM附件在应用服务器上的存储原理解析_第5张图片

once you get phyical object id 0090FA0D8DC21ED395FD830F8DD9FFFF, you can find the respective entries in table BDSCONT22.

SAP CRM附件在应用服务器上的存储原理解析_第6张图片

The real content of attachment is stored in a claster way, so you cannot see its detail in SE16.

SAP CRM附件在应用服务器上的存储原理解析_第7张图片

How do I know the database table name BDSCONT22?
(1) Get the storage category BDS_DB22 by physical class name.

SAP CRM附件在应用服务器上的存储原理解析_第8张图片

(2) execute function module SCMS_SDOKSTRE_LIST to get all lists of database table. Then you can find the table name BDSCONT22 for your storage category BDS_DB22.

SAP CRM附件在应用服务器上的存储原理解析_第9张图片

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

你可能感兴趣的:(SAP CRM附件在应用服务器上的存储原理解析)