看一下规范的OPPT是如何determine organization的:
查看Transaction Type OPPT的配置,找到Organization Data Profile:
SPRO->CRM->Transactions->Basic Settings->Define Transaction Types
发现配的profile为000000000005,双击进入,找到对应的profile:
能够看到对应的Organizational Model Determin. Rule为10000144, 而Responsibilities Determin. Rule没有配。
参考CR100上的解释:
Organizational Model Rule是须要依据search的后果来确定Organizational Unit. Responsibilities Rule是间接指定对应的Organizational Unit.
查看Determination Rule:
SPRO->CRM->Master Data->Organizational Management->Organizational Data Determination->Maintain Determination Rules
找到对应的10000144的rule:
能够看到对应的determination用的FM是CRM_ORGMAN_ORGOBJECTS_FIND_4
点击Container tab能够看到rule 10000144配置的parameter:
阐明在执行FM CRM_ORGMAN_ORGOBJECTS_FIND_4须要的两个参数为BP Number和Transaction Type:
SPRO文档外面有对规范的determination function的解释:
前两个是针对Sales Transaction的,后两个是Service Transaction,依据解释FM CRM_ORGMAN_ORGOBJECTS_FIND_4是依据BP的Sales Area来查找对应的Organizational Unit。
进入CRM_ORGMAN_ORGOBJECTS_FIND_4的代码:
从Container外面拿到BP Number, 在依据BP Number拿到对应的GUID:
依据BP GUID获取对应的Sales Area:
从CRMM_BUT_LNK0011表外面拿BP Number对应的Sales Area
上一步没有找到Sales Area的状况下从CRMM_BUT_LNK0031表外面拿
E.g. 拿到BP 4103080的Sales Area:
下面讲到的Container配的另外一个参数Transaction Type在这里只是用来查看依据BP Number拿到的Sales Area是否valid:
而后调用FM CRM_ORGMAN_ORGOBJECTS_FIND_1依据Sales Area的attribute来查找organization。参考下面的文档,CRM_ORGMAN_ORGOBJECTS_FIND_1其实是一个通用的依据organization attribute来查问的FM
这里的attribute就是Organizational Unit在Web UI外面保护的attribute:
留神在这里并没有用Transaction Type去间接跟Organizational Unit保护的Transaction Type attribute作比拟。
E.g. 最初依据BP 4103080失去的Organization为50000732:
还有一个更形象的查问Org的API FM: CRM_ORGMAN_DETERMINE_ORGOBJS,该API返回sales areas后果集。
更多Jerry的原创文章,尽在:"汪子熙":