CRM one order callback
上圖黃色的不帶紅框的第一行—FM CRM_PUBLISH_OW是在最初進入CRMMAINTAIN_OW時候被調用的(注意上面只有兩個位置有這個FM CRM_PUBLISH_OW, 一個是HEADER入口, 一個是ITEM入口), 也就是你下面所提到的CRM_ORDERADM_H_PUBLISH_OW, 這個FM隨后會call CRM_EVENT_PUBLISH_OW, 在FM CRM_EVENT_PUBLISH_OW里的 internal table gt_allowed_callbacks_hdr 存放了當前系統注冊的所有call back函數, 然后該FM開始做plan 的工作,所以該FM的作用類似于調度安排。
PLAN_CALLBACKS具體干的活有兩大部分:
1利用Object和event信息找出哪些是需要立即執行的, 放到內表lt_atonce_exets里, 隨后備用
2 決定哪些是需要隨后執行的call back, 放到gt_plan_exets里。
再回來, 對于馬上執行的call back函數, 那就在CRM_EVENT_PUBLISH_OW的最下面調用執行代碼。如你截圖所示。那么不是immediately執行的call back怎么辦呢?
第一幅圖里面的紅框代碼, CRM_EVENT_SET_EXETIME_OW, 是用它來執行其他的非immediately的call back,
會看到不同的位置, 都有該FM的身影, 這應該是call back注冊的時間點的區別, 有如下幾種
· 1. End of header processing(對應下圖的end_header_maitain)
· 2. End of item processing(對應下圖的end _item_maitain)
· 3. End of document (better name would be “End of CRM_ORDER_MAINTAIN”,應該對應下圖的end_order_maintain)
· 4. End of all document(應該是下圖的end of order multi_maitain)
再遍歷, 通過GUID, KIND, EXETIME找到要執行的call back, 然后在紅框處的EXECUTE_CALLBACKS_PLANNED調用執行
從我的trace截圖來看, 恰恰是上面說的第三種, End of document的時候觸發的EXECUTE_CALLBACKS_PLANNED。
下面的英文注釋也解釋了這兩個FM的作用。
下面的圖也說明了這個執行過程, XXX_ publish_OW負責注冊,調度, 如果是馬上執行的, 那就在CRM_EVENT_PUBLISH里面執行;
CRM_EVENT_SET_EXETIME_OW負責根據不同的時間點去執行其余的call back。
除了之前提到的trace工具SE38- CRM_EVENT_TRACE
還有一個重要的表 – CRMC_EVENT_CALL
可以只查看Z的function, 其實這個表也就是之前那個SPRO里面顯示的內容, 可能在這里面更好查詢一些, 而且可以根據客戶修改的時間檢查是否他們最近注冊的call back存在問題, 更方便一點。 我不知道還有其他的功能, 僅是自己的理解
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, 注冊FM在這個上面,是不是也相當于general的調用, 我看聯想很多fm都是注冊在這里的,
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.-----如果不設置成immediately,
還有很多選項, 這個完全得看業務需要和實際邏輯了。
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":
總結
以上是生活随笔為你收集整理的CRM one order callback的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机端口大全_计算机网络常见的端口号(
- 下一篇: Flash AS3 个性的旋转圆形网页导