1. 程式人生 > 其它 >SAP CRM organization Model(組織架構模型)自動決定的邏輯分析

SAP CRM organization Model(組織架構模型)自動決定的邏輯分析

看一下標準的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的原創文章,盡在:"汪子熙":