SAP S/4HANA Customer Management(CRM)模块的Partner模型设计
In SAP CRM we can maintain multiple business partners with different partner functions to an order header or item level. This from technical point of view means the relationship of root object(header or item) to the records of Partner component is 1:N. As a result we can Partner component as “complex set” in One Order model.
Take the following Service Order for example. Suppose I could like to read all its header partners by CRM_ORDER_READ:
The code is exactly the same as written in SAP CRM:
REPORT zread.
DATA: lt_guid TYPE crmt_object_guid_tab,
lv_id TYPE crms4d_btx_h-object_id VALUE '8000000362',
lt_partner TYPE crmt_partner_external_wrkt.
SELECT SINGLE guid INTO @DATA(guid) FROM crms4d_btx_h WHERE object_id = @lv_id.
APPEND guid TO lt_guid.
CALL FUNCTION 'CRM_ORDER_READ'
EXPORTING
it_header_guid = lt_guid
IMPORTING
et_partner = lt_partner.
SELECT * INTO TABLE @DATA(lt_partner_fct) FROM crmc_partner_ft AS a
FOR ALL ENTRIES IN @lt_partner WHERE a~partner_fct = @lt_partner-partner_fct AND
spras = @sy-langu.
LOOP AT lt_partner ASSIGNING FIELD-SYMBOL(<partner>) WHERE ref_kind = 'A'.
READ TABLE lt_partner_fct ASSIGNING FIELD-SYMBOL(<fct>) WITH KEY partner_fct =
<partner>-partner_fct.
IF sy-subrc = 0.
WRITE:/ |Partner No: { <partner>-partner_no }, 'Role:' { <fct>-description }| COLOR COL_GROUP.
ENDIF.
ENDLOOP.
The report output just matches what we observe in WebClient UI assignment block “Parties Involved”.
If we check the flat table CRMS4D_SERV_H for Service document header data, we can only find the partner ID of corresponding role.
The detail information of each kind of partners are stored in table CRMS4D_PARTNER instead.
As a result if we directly read from CRMS4D_PARTNER, we can get exactly the same output as reading from function module CRM_ORDER_READ.
REPORT z_crms4d_partner.
DATA: lt_guid TYPE crmt_object_guid_tab,
lv_id TYPE crms4d_btx_h-object_id VALUE '8000000362',
lt_partner TYPE TABLE OF crms4d_partner.
SELECT * INTO TABLE lt_partner FROM crms4d_partner WHERE object_id = lv_id AND number_int = 0.
SELECT * INTO TABLE @DATA(lt_partner_fct) FROM crmc_partner_ft AS a
FOR ALL ENTRIES IN @lt_partner WHERE a~partner_fct = @lt_partner-partner_fct AND
spras = @sy-langu.
LOOP AT lt_partner ASSIGNING FIELD-SYMBOL(<partner>).
READ TABLE lt_partner_fct ASSIGNING FIELD-SYMBOL(<fct>) WITH KEY partner_fct =
<partner>-partner_fct.
IF sy-subrc = 0.
WRITE:/ |Partner No: { <partner>-partner_id }, 'Role:' { <fct>-description }| COLOR COL_GROUP.
ENDIF.
ENDLOOP.
In fact if you set a breakpoint on COM_PARTNER_SELECT_M_DB, you can find out that indeed CRM_ORDER_READ internally reads all partners belonging to a Service document HEADER with the where statement in code below from line 71 to 73. Records in CRMS4D_PARTNER with number_int = 0 represents the partners of header level, and those with number_int > 0 for partners of item level.
So next question is: when, where and how the records in CRMS4D_PARTNER are stored?
Execute the report mentioned in my blog Create Mass Service document in S/4HANA for Customer Management to create a service order with Sold to party specified:
The created partner data are persisted via function call COM_PARTNER_SAVE_OB, which has been adapted to call new function module designed for S/4HANA: CRMS4_PARTNER_UPDATE_DU
You might have observed that although only Sold to party ID is specified by my report, still totally six partners with different party roles are populated. all other five roles are determined by standard partner determination logic which is the same as in SAP CRM.
It is still possible for customers to define their own partner functions in S/4HANA for Customer Management, whose details will be introduced in a separate blog.
Jerry’s other blogs on S/4HANA for Customer Management
- S/4HANA for Customer Management 1.0 introduction from technical point of view
- CRM One Order Model Redesign in S/4HANA for Customer Management 1.0 – Part 1
- CRM One Order Model Redesign in S/4HANA for Customer Management 1.0 – Part 2
- Create Mass Products by code in S/4HANA for Customer Management
- Create Mass Service document in S/4HANA for Customer Management
- One order extensibility in S4HANA for Customer Management
- One Order Partner Component model in S/4HANA for Customer Management
- Step by step to create custom partner function in S4HANA for Customer Management
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
相关文章
- SAP Commerce Cloud Accelerator 的响应式 Theme 介绍
- 关于 SAP 电商云 Spartacus UI 里 Router 模块的 forRoot 方法
- 来自某知名药企资深SAP大师级专家的总结
- 如何用 ABAP 代码创建 SAP CRM IBase
- 关于 SAP UI5 所有控件的共同祖先 - sap.ui.base.ManagedObject
- SAP UI5 sap.ui.base.ManagedObject 的构造函数参数讲解
- 使用 SAP UI5 sap.ui.export.Spreadsheet API 进行 Excel 导出的一些限制
- SAP UI5 OData 请求的自定义 HTTP header 设置方法
- SAP MM模块-主要的采购业务
- SAP UI5 响应式表格 sap.m.Table 根据不同宽度的屏幕动态决定显示或隐藏 Column 的实现源代码讲解试读版
- SAP Fiori Launchpad url 参数 sap-app-origin-hint 的含义
- 使用 SAP ABAP API 读取内表变量占用的 ABAP 内存空间大小
- 关于 SAP ABAP OData 服务响应里的 d,results 和 __metadata 这几个字段的作用
- 安装SAP,Linux获台前瞻未来(linux安装sap)
- Oracle购买SAP: 开启新数据时代(oracle收购sap)
- SAP ERP中权限参数和角色相关表详解编程语言
- SAP查询事务、表属于哪个模块详解编程语言
- SAP 预制发票时扣除已预制的数据详解编程语言
- SAP ABAP常见错误记录之二:specify reference table AND reference field详解编程语言
- SAP- MM 委外加工(Subconctracting)流程详解编程语言
- SAP笔记-LSMW 导入工具 录屏问题详解编程语言
- SAP SD模块调研问卷详解编程语言
- SAP ABAP详解编程语言
- SAP在Linux系统的安装与使用(sap安装linux)
- Oracle与SAP权衡利弊比较之路(oracle与sap比较)
- 对比Oracle和SAP价格比较哪个是更值得投入的选择(oracle与sap价格)
- Oracle SAP系统深入探索管理系统之魅力(oracle sap系统)