Unlike settype, relationship does not have a dedicated read function module maintained in its metadata table. Instead, the generic read function module COM_IL_DB_READ is used.

SAP CRM Relationship API设计原理-LMLPHP

Below is a simple explanation about each parameter of FM COM_IL_DB_READ, using read on relationship PRDCPN for example.

# IV_RELTYPE

PRDCPN - relationship name

# IV_ATTR_TYPE

COMT_IL_PRDCPN_ATTR_TYPE - contains relationship specific business data, in this example, the customer product id is stored in field PRID_VENDOR

SAP CRM Relationship API设计原理-LMLPHP

# IT_LINK_IDENTS

sourceguid or destiguid contains product guid. This will be used by the generic read API to select against DB table using OPEN SQL.

SAP CRM Relationship API设计原理-LMLPHP

The exporting parameter:

SAP CRM Relationship API设计原理-LMLPHP


# ET_INTERLINKAGE - relationship header data - generic data

SAP CRM Relationship API设计原理-LMLPHP


# ET_IL_ATTR

Relationship specific data, in this example, PRID_VENDOR, stores the detail value.

SAP CRM Relationship API设计原理-LMLPHPSAP CRM Relationship API设计原理-LMLPHPSAP CRM Relationship API设计原理-LMLPHP

# Approach1

If we can enhance COM_IL_DB_READ, we then redirect the read from CRM relationship storage table to S4 relationship storage table.

Since it is not allowed to enhance SAP_ABA function module, we have to consider CDS view redirect.

Further research is needed here: compare the structure of both storage table in CRM and S4 and evaluate whether view direct is feasible or not.

SAP CRM Relationship API设计原理-LMLPHP

# Approach2

Since we can only make changes on BBPCRM, we have to copy the whole implementation which are in SAP_ABAP listed below into new function & subroutine, make needed changes ( table redirect ) and let FORM UI_GETDETAIL call those new implementations. This approach takes huge effort.

SAP CRM Relationship API设计原理-LMLPHP
12-18 02:09