观察者模式在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的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

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

如有侵权,请联系 zhuanlan_guanli@qq.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

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

数据库负载急剧提高的应急处理(二) (r9笔记第55天)

对于之前碰到的一个数据库负载急剧提升的问题,做了应急处理之后,我们需要再冷静下来,来看看是哪些地方出现了问题,还需要哪些改进。 首先第一个问题就是为什么会突然负...

3184
来自专栏Keegan小钢

App项目实战之路(六):数据库篇

上一篇文章[服务端篇]提到本项目的数据库采用了关系型的 MySQL,那么,本文将基于 MySQL 聊聊本项目的数据库设计。

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

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

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

4025
来自专栏平凡文摘

Java RESTful 框架的性能比较

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

通过定制orabbix监控分析潜在的Oracle问题 (r6笔记第32天)

在之前的博客中分享过 简单定制Orabbix监控项 http://blog.itpub.net/23718752/viewspace-1769773/ 定...

2444
来自专栏我是攻城师

Java学习资料汇总

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

Oracle数据误操作全面恢复实战(r11笔记第78天)

对于DBA来说,面对误操作带来的数据恢复难度,其实很大。主要有以下几个方面: 误操作的影响范围极大,很可能不是删点,改点数据的操作,有时候可能是让人望而兴叹...

3255
来自专栏瞎说开发那些事

推荐!国外程序员整理的Java资源大全

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

备库CPU使用异常优化(r6笔记第73天)

一般在一些容灾环境中,尤其是在11g的ADG非常普及的场景下,备库被赋予了更多的责任,很多时候在容忍一些延迟的情况下,有些应用的大量数据查询任务直接放到了备库,...

2774
来自专栏张善友的专栏

PostgreSQL 9.3发布

9月9日,PostgreSQL全球开发组宣布了9.3版发布的消息。从2010年9.0版开始,PostgreSQL已经连续四个版本稳定地按时在每年9月中旬发布,从...

1696

扫描关注云+社区