观察者模式在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 条评论
登录 后参与评论

相关文章

来自专栏SDNLAB

Netvirt之流表分析(一):Netvirt介绍

1. 架构 最近在看ODL的netvirt项目,netvirt是一个完整的网络虚拟机化解决方案,几乎可以实现neutron的所有功能,包括FWaaS,VPNaa...

3477
来自专栏PHP在线

TCP/IP网络协议的通俗理解

前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑。主要是因为对网络协议不太熟悉,对一些概念也没 弄清楚。后来我花了一些时间...

3466
来自专栏云计算教程系列

如何减轻memcached的放大攻击

在2018年2月27日,Cloudflare 和 Arbor Networks 公司于周二发出警告称,恶意攻击者正在滥用 Memcached 协议发起分布式拒绝...

2354
来自专栏SDNLAB

OpenFlow网络中的路由服务

这里,所谓OpenFlow网络指的是相互连接的一组OpenFlow交换机的集合,并且这些交换机全部置于一个OpenFlow Controller或一个OpenF...

3818
来自专栏极客猴

一道关于 TCP 连接的题目

小陈点了点头表示很熟悉,然后一口气将 TCP 连接中三次握手和四次分手详细地说了一遍。心想暗笑,这问题难不倒我的,哈哈。

681
来自专栏服务器安全

DDOS攻击攻击种类和原理

不过这3种攻击方法最厉害的还是DDoS,那个DRDoS攻击虽然是新近出的一种攻击方法,但它只是DDoS攻击的变形,它的唯一不同就是不用占领大量的“肉鸡”。这三种...

1240
来自专栏小麦苗的DB宝专栏

在Oracle中,如何定时删除归档日志文件?

1、在Oracle用户下,创建归档日志删除文件del_OCPLHR1_arch.sh

1071
来自专栏JMCui

计算机网络基础知识.

    局域网(Local Area Network,LAN)是在一个局部的地理范围内(如一个企业、一个学校或一个网吧),一般是方圆几千米以内,将各种计算机、服...

1245
来自专栏林德熙的博客

win10 UWP 访问网页 设置代理WebView

Windows10 UWP 要访问 csdn博客,可以使用Windows.Web.Http.HttpClient,下面尝试访问一下我的博客 http://blo...

691
来自专栏FreeBuf

浅谈拒绝服务攻击的原理与防御[1] | 普通拒绝服务攻击

普通拒绝服务攻击是指一些传统的攻击方式,如:SYN FLOOD攻击、ACK FLOOD攻击、CC攻击、UDP FLOOD攻击 等等,下面会详细介绍。 SYN...

2386

扫码关注云+社区