其他分享
首页 > 其他分享> > one order event handling - 初始化过程

one order event handling - 初始化过程

作者:互联网

Created by Jerry Wang on Aug 19, 2014

通过UI创建一个transaction type为TA的sales order为例:

 

clipboard1

 

 

 

transaction type TA对应的transaction category如下:

clipboard2

 

Order修改的所有操作都是通过FM CRM_ORDER_MAINTAIN 统一trigger:

clipboard3

 

最终会调用CRM_ORDER_H_MAINTAIN_OW 或者 CRM_ORDER_I_MAINTAIN_OW处理Header或者Item:

clipboard4

 

clipboard5

 

里面的FM CRM_ORDERADM_H_PUBLISH_OW统一raise Order header level的各种事件,从而调用事件上注册的callback。

clipboard6

 

在该function module内搜索关键字 CRM_EVENT_PUBLISH_OW,能找出该FM 负责raise的所有支持的event:

clipboard7

 

clipboard8

 

internal table gt_allowed_callbacks_hdr 存放了当前系统注册的所有call back信息。系统理一次进入CRM_EVENT_PUBLISH_OW时,该内表是空的,通过subroutine register_callbacks 初始化。

clipboard9

 

 

 

当前创建的sales order

 

clipboard10

 

 

gt_pr_assign包含两个从SPRO里维护的category 再加上一个generic的BUS20001:

 

clipboard11

 

 

register完毕后针对transaction type TA,有411个可用的callback:

 

clipboard12

 

 

 

clipboard13

 

 

CRM_EVENT_PUBLISH_OW的执行逻辑就是找出这411个callback中有哪些是注册在Order的header level,且event为after_create:

 

clipboard14

 

 

 

lv_guid_hdr: 新创建的sales order guid

 

lt_atonce_exets: 需要立即执行的function module name

clipboard15

 

clipboard16

 

真正的function module 执行发生在这里:

clipboard17

标签:handling,PUBLISH,event,transaction,OW,ORDER,order,CRM
来源: https://blog.csdn.net/i042416/article/details/95059259