上图黄色的不带红框的第一行—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.

  1. 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.

  2. Avoid register the unnecessary callbacks to transaction category BUS2000115 -------115 我知道是CRM Sales Transaction, 注册FM在这个上面,是不是也相当于general的调用, 我看联想很多fm都是注册在这里的,

  3. 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,

还有很多选项, 这个完全得看业务需要和实际逻辑了。

  1. Consider carefully which value you set for the parameter Call Callback and restrict the number of times the callback is planned in for a certain execution time to a minimum. ------这个是在哪里设置????是我第一个界面吗?如何限制调用次数?
    要获取更多Jerry的原创文章,请关注公众号"汪子熙":

CRM one order callback相关推荐

  1. CRM One Order事件注册的准确位置

    where is SAP CRM One Order event callback registered Created by Wang, Jerry on Apr 24, 2017 要获取更多Jer ...

  2. 基于若依框架的二次开发_SAP Commerce(原Hybris)的订单处理框架和SAP CRM One Order框架...

    最近工作重点转移到了SAP Commerce上来,正好有机会把该产品里由Java实现的订单处理框架和我之前长期工作过的,ABAP实现的SAP CRM One Order框架做个比较:基于Spring的 ...

  3. SAP CRM One Order函数CRM_Object_FILL_OW的设计原理

    标题:SAP CRM One Order函数CRM_FILL_OW的设计原理 There are totally 60 function modules in One order with namin ...

  4. SAP Commerce(原Hybris)的订单处理框架和SAP CRM One Order框架

    最近工作重点转移到了SAP Commerce上来,正好有机会把该产品里由Java实现的订单处理框架和我之前长期工作过的,ABAP实现的SAP CRM One Order框架做个比较:基于Spring的 ...

  5. SAP CRM One Order里item quantity和CUMULAT_H的联动

    本文介绍SAP CRM One Order里item quantity和CUMULAT_H的联动机制. Created by Wang, Jerry, last modified on Apr 26, ...

  6. SAP CRM One Order scheduline buffer handling

    本文介绍SAP CRM One Order scheduline的缓存处理. 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  7. SAP CRM One order appointment duration table

    本文介绍SAP CRM One order appointment duration的存储表. 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  8. CRM One Order Appointment里start Date的存储原理

    本文介绍CRM One Order Appointment里start Date的存储原理 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  9. SAP CRM One Order 根据联系人姓名搜索的实现原理

    本文介绍SAP CRM One Order 根据联系人姓名搜索的实现原理 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

最新文章

  1. 两亿多用户,六大业务场景,知乎AI用户模型服务性能如何优化?
  2. Leetcode 322. 零钱兑换 (每日一题 20210824)
  3. NYOJ 123 士兵杀敌(四)
  4. 三运放差分放大电路分析_信号源内阻对差动放大电路共模抑制比的影响分析与改善方法...
  5. Robocode教程2——你的第一个robo,取个好名字哦
  6. Java 代码性能优化总结
  7. HTTP协议扫盲(一)HTTP协议的基本概念和通讯原理
  8. 【Linux】索引式文件系统
  9. python可以在多种平台运行、这体现了python语言的,Python可以在多种平台运行,这体现了Python语言的可移植特性...
  10. 如何保持最佳 MacBook 温度?
  11. oracle with as用法_关于Oracle with语句用法说明
  12. 微信小程序图片转换成文字_怎么利用微信小程序把图片上的文字转到word文本中?...
  13. OpenCV学习cvtColor函数
  14. 把故事收回到一杯茶里,不知不觉,茶已经凉了
  15. Mac 开启 HIDPI 设置各种分辨率 HIDPI mac high sierra 2k
  16. WoShop跨境电商USDT支付语言插件全开源无加密商城源码
  17. Jupyter Notebook 五大效率插件
  18. 如何三平台win/安卓/ios同步日历日程
  19. 大数运算(4)——大数乘法
  20. Dynamics Ax 微软官方社区地址

热门文章

  1. spring - -
  2. Zookeeper相关知识
  3. 那些零碎的感悟,那些成长的事【壹】
  4. FragmentStack
  5. 高等数理统计(part1)--随机变量及其分布函数
  6. Django从理论到实战(part18)--配置templates文件夹路径
  7. 第三次学JAVA再学不好就吃翔(part25)--成员变量赋值
  8. ddr4 dqs 频率_一张图看懂如何选择DDR4内存的频率和容量
  9. SAP UI5 初学者教程之十五 - 对话框和 Fragments 的使用方式试读版
  10. Express engine 学习笔记 - 工作在反向代理背后的 Express 设置