观察者模式在One Order回调函数中的应用

例如需求是搞清楚function module CRM_PRODUCT_I_A_CHANGE_ORGM_EC在什么样的场景下会被调用。当然最费时间的做法是设一个断点,然后跑对应的场景,观察断点何时被触发。也有另一种不通过调试的分析方法:

使用事务码CRMV_EVENT, 输入函数名称CRM_PRODUCT_I_A_CHANGE_ORGM_EC:

得到结果:

上述结果的业务含义是:每当Sales area被创建或者更新时,我们查询的function module都会自动被One Order框架调用。

观察如下调用栈:

那么为什么从业务上来说,每当一个订单的Organization Model组织架构数据发生变化之后,就需要调用这个回调函数呢?打开这个函数的源代码,在102行看到了CRM Product的settype之一, CRMM_PR_SALESG(Set type allowing you to group products for various purposes. As this set type is dependent on distribution chains, a distribution chain has to be selected before data can be maintained)的数据被读取。

关于这个settype更多说明,请参考SAP Help.

这个settype是一个Distribution Chain相关的settype, 离开了某个具体的Sales area则无意义。

因此每当订单的Organization model数据发生变化时,CRMM_PR_SALESG的数据必须根据变化后最新的Organization model数据重新读取。利用One Order框架,这种Organization model的变化和CRMM_PR_SALESG的读取这种依赖关系实际上通过设计模式里的"观察者模式"来完成的。CRM_PRODUCT_I_A_CHANGE_ORGM_EC是Organization model数据变化的众多观察者之一,通过事务码CRMV_EVENT订阅了Organization model数据变化这一事件。每当Organization ,model数据发生变化时,这个变化通过下图的CRM_EVENT_PUBLISH_OW发布出去,其他观察者就能基于这个发布者发布的事件进行对应处理,在我文章的这个例子里,就会调用CRM_PRODUCT_I_A_CHANGE_ORGM_EC根据最新的Organization model读取settype CRMM_PR_SALESG的数据。

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯Bugly的专栏

【Dev Club分享】基于RxJava的一种MVP实现

Dev Club 是一个交流移动开发技术,结交朋友,扩展人脉的社群,成员都是经过审核的移动开发工程师。每周都会举行嘉宾分享,话题讨论等活动。 本期,我们邀请了腾...

3437
来自专栏腾讯Bugly的专栏

全系统栈崩溃是什么鬼?手机管家高级工程师 jaylin,教你如何抓鬼!

Jaylin 腾讯手机管家团队,高级研发工程师,5年以上Android开发经验,擅长终端架构设计、性能和稳定性优化。 前言 Android的严重碎片化,通常会给...

3304
来自专栏杨建荣的学习笔记

持续近7个小时的索引扫描的查询优化分析 (r5笔记第44天)

昨天客户的DBA反映有一个数据抽取的任务持续了很长时间最后超时退出了,让我看看有什么地方可以调优一下。 找到了对应的日志,发现在一个大表抽取的时候,抽取持续了将...

4055
来自专栏walterlv - 吕毅的博客

当我们使用 MVVM 模式时,我们究竟在每一层里做些什么?

2017-11-29 17:29

671
来自专栏Spark学习技巧

Hive性能优化(全面)

面对这些问题,我们能有哪些有效的优化手段呢?下面列出一些在工作有效可行的优化手段:

1583
来自专栏偏前端工程师的驿站

Thinking in React Implemented by Reagent

前言  本文是学习Thinking in React这一章后的记录,并且用Reagent实现其中的示例。 概要 构造恰当的数据结构 从静态非交互版本开始 追加交...

19010
来自专栏数据和云

辞旧迎新:2018年的分区你们建了吗?

各位同学,大家好! 转眼2017年就要结束了,在这过去的一年,我们有遇到困难解决不了的苦恼,亦有处理了棘手问题的快乐,还有在云和恩墨大讲堂里得到云和恩墨舵主以及...

3359
来自专栏DeveWork

Google官方网页载入速度检测工具PageSpeed Insights 使用教程

相信有接触前端开发的大神们都听说过Google官方的PageSpeed Tools,这个网页载入速度检测工具有在线版本也有一个 Chrome 扩展,叫PageS...

3618
来自专栏数据和云

Oracle智能之SQL诊断:SQL Tuning Advisor推荐执行计划

编辑手记:在前一段,一篇智能数据库优化的论文引起广泛的关注,其实在 Oracle 数据库中,已经引入了大量自动化和智能化的方法去进行自动调节,包括在 SQL 层...

2755
来自专栏Java成神之路

Mybatis_学习_00_资源帖

634

扫码关注云+社区