CRM one order callback
上圖黃色的不帶紅框的第一行—FM CRM_PUBLISH_OW是在最初進(jìn)入CRMMAINTAIN_OW時(shí)候被調(diào)用的(注意上面只有兩個(gè)位置有這個(gè)FM CRM_PUBLISH_OW, 一個(gè)是HEADER入口, 一個(gè)是ITEM入口), 也就是你下面所提到的CRM_ORDERADM_H_PUBLISH_OW, 這個(gè)FM隨后會(huì)call CRM_EVENT_PUBLISH_OW, 在FM CRM_EVENT_PUBLISH_OW里的 internal table gt_allowed_callbacks_hdr 存放了當(dāng)前系統(tǒng)注冊(cè)的所有call back函數(shù), 然后該FM開始做plan 的工作,所以該FM的作用類似于調(diào)度安排。
PLAN_CALLBACKS具體干的活有兩大部分:
1利用Object和event信息找出哪些是需要立即執(zhí)行的, 放到內(nèi)表lt_atonce_exets里, 隨后備用
2 決定哪些是需要隨后執(zhí)行的call back, 放到gt_plan_exets里。
再回來(lái), 對(duì)于馬上執(zhí)行的call back函數(shù), 那就在CRM_EVENT_PUBLISH_OW的最下面調(diào)用執(zhí)行代碼。如你截圖所示。那么不是immediately執(zhí)行的call back怎么辦呢?
第一幅圖里面的紅框代碼, CRM_EVENT_SET_EXETIME_OW, 是用它來(lái)執(zhí)行其他的非immediately的call back,
會(huì)看到不同的位置, 都有該FM的身影, 這應(yīng)該是call back注冊(cè)的時(shí)間點(diǎn)的區(qū)別, 有如下幾種
· 1. End of header processing(對(duì)應(yīng)下圖的end_header_maitain)
· 2. End of item processing(對(duì)應(yīng)下圖的end _item_maitain)
· 3. End of document (better name would be “End of CRM_ORDER_MAINTAIN”,應(yīng)該對(duì)應(yīng)下圖的end_order_maintain)
· 4. End of all document(應(yīng)該是下圖的end of order multi_maitain)
再遍歷, 通過(guò)GUID, KIND, EXETIME找到要執(zhí)行的call back, 然后在紅框處的EXECUTE_CALLBACKS_PLANNED調(diào)用執(zhí)行
從我的trace截圖來(lái)看, 恰恰是上面說(shuō)的第三種, End of document的時(shí)候觸發(fā)的EXECUTE_CALLBACKS_PLANNED。
下面的英文注釋也解釋了這兩個(gè)FM的作用。
下面的圖也說(shuō)明了這個(gè)執(zhí)行過(guò)程, XXX_ publish_OW負(fù)責(zé)注冊(cè),調(diào)度, 如果是馬上執(zhí)行的, 那就在CRM_EVENT_PUBLISH里面執(zhí)行;
CRM_EVENT_SET_EXETIME_OW負(fù)責(zé)根據(jù)不同的時(shí)間點(diǎn)去執(zhí)行其余的call back。
除了之前提到的trace工具SE38- CRM_EVENT_TRACE
還有一個(gè)重要的表 – CRMC_EVENT_CALL
可以只查看Z的function, 其實(shí)這個(gè)表也就是之前那個(gè)SPRO里面顯示的內(nèi)容, 可能在這里面更好查詢一些, 而且可以根據(jù)客戶修改的時(shí)間檢查是否他們最近注冊(cè)的call back存在問(wèn)題, 更方便一點(diǎn)。 我不知道還有其他的功能, 僅是自己的理解
CRMV_EVENT is for predefined callbacks. The customer-defined callbacks should not be registered here. Move them to SPRO.
Restrict the number of times the callback is planned in for a certain execution time to a minimum.
Register the callback for individual transaction categories instead of for the generic transaction category BUS20001 so that the callbacks do not run unnecessarily for other transactions.
Avoid register the unnecessary callbacks to transaction category BUS2000115 -------115 我知道是CRM Sales Transaction, 注冊(cè)FM在這個(gè)上面,是不是也相當(dāng)于general的調(diào)用, 我看聯(lián)想很多fm都是注冊(cè)在這里的,
consider whether it is absolutely necessary to set the execution time “Immediately”. The other execution times are better for performance since several events might trigger the same callback.-----如果不設(shè)置成immediately,
還有很多選項(xiàng), 這個(gè)完全得看業(yè)務(wù)需要和實(shí)際邏輯了。
要獲取更多Jerry的原創(chuàng)文章,請(qǐng)關(guān)注公眾號(hào)"汪子熙":
總結(jié)
以上是生活随笔為你收集整理的CRM one order callback的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 计算机端口大全_计算机网络常见的端口号(
- 下一篇: how is object struct