one order event handling - 初始化过程

Created by Jerry Wang on Aug 19, 2014

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

 

one order event handling - 初始化过程

 

 

 

transaction type TA对应的transaction category如下:

one order event handling - 初始化过程

 

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

one order event handling - 初始化过程

 

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

one order event handling - 初始化过程

 

one order event handling - 初始化过程

 

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

one order event handling - 初始化过程

 

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

one order event handling - 初始化过程

 

one order event handling - 初始化过程

 

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

one order event handling - 初始化过程

 

 

 

当前创建的sales order

 

one order event handling - 初始化过程

 

 

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

 

one order event handling - 初始化过程

 

 

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

 

one order event handling - 初始化过程

 

 

 

one order event handling - 初始化过程

 

 

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

 

one order event handling - 初始化过程

 

 

 

lv_guid_hdr: 新创建的sales order guid

 

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

one order event handling - 初始化过程

 

one order event handling - 初始化过程

 

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

one order event handling - 初始化过程

上一篇:我可以在我的webservices发布的同时向公众提供Android APK吗?


下一篇:# Flutter发布插件遇到的问题