CRM 系统里销售订单模型的 Item Category 的计算逻辑解析
One Order的行项目里有个字段叫Item Category,我们在行项目里加入一个product后,就会自动带出Item Category来。这个值是怎么计算出来的?
检查CRMD_ORDERADM_I,能发现后台OBJECT_TYPE字段存储的值为BUS2000130.
Item Category Determination的配置:
在我的例子里,我创建的Opportunity的Transaction type为OPPT,我插入行项目的Product "JerryWang"上维护的item category的值为NORM。因此按照上图的配置,会自动带出OPPT - Opportunity Item。而OPPT对应的object type BUS2000130维护在如下配置里:
具体细节可以通过调试函数CRM_ORDER_ITEM_TYPE_SELECT_CB来理解.
关键字
CRMD_ORDERADM_I, OBJECT_TYPE, CRM_ORDER_ITEM_TYPE_SELECT_CB
另外,如何处理错误信息 Pricing procedure could not be determined?
当给一个SAP CRM Quotation文档的行项目维护一个产品时,遇到如下错误信息:
When I inserted one product to a quotation, I meet with the following error message: Pricing procedure could not be determined
通过调试得知错误消息在function module CRM_PRIDOC_COM_PRCPROC_DET_SEL第55行抛出:
在subroutine DETERMINE_PROCEDURE内,得知CRM系统里计算出一个对应的pricing procedure需要5个输入参数,依次列于第81行到85行:
-
Sales Organization ID
-
distribution channel ID
-
division ID
-
custom pricing procedure标志位
-
document pricing procedure
这5个参数联合起来得出的pricing procedure的名称存储在第87行的输出参数ls_prcproc_det里。
错误消息的解决方案
根据调试得出的5个输入参数的值,到SPRO里维护一个pricing procedure即可。这里我使用的procedure为0CRM02。
Document pricing procedure的值A意为Standard。
如下是我维护的Procedure,之后错误消息消失。
我们在product overview page里能看到很多的assignment block。但是runtime的时候真正显示出来的内容只是configuration里面看到内容的一个子集。
Product category能够assign很多settype和relationship,每个settype和relationship都对应一个UI view.
runtime的时候,我们会根据product category找到上面assign的settype和relationship,再把对应的UI以assignment block的形式显示出来。具体逻辑:
(1) 首先在这个方法GET_LIST_OF_STATIC_VIEWS里拿到Workbench configuration里面看到的view list:
(2) 这个GET_VIEWS_TO_DISPLAY方法会determine出运行时真正应该显示给最终用户看的view list:
调试GET_VIEWS_TO_DISPLAY能获得更多信息。
首先找到product的category分配的settype和relationship list:
表CRMC_PRIL_UIU存放了settype和UI view的映射关系:
- 点赞
- 收藏
- 关注作者
评论(0)