`
JerryWang_SAP
  • 浏览: 1000736 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

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

 
 
0
1
分享到:
评论

相关推荐

    回调函数的具体介绍.docx

    回调函数作为一种重要的编程设计模式,在多种编程语言中都得到了广泛应用。本文将从基本概念入手,逐步深入探讨回调函数的工作原理、应用场景以及优缺点,并通过具体的示例帮助读者更好地理解和运用回调函数。 ### ...

    php观察者模式

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它允许对象在状态改变时通知其他对象。在PHP中,这种模式常用于事件驱动编程,使得对象间能进行松耦合的通信。在这个例子中,我们将探讨如何在PHP中...

    IATA ONE Order Overview_Day1_28-29August 2019.pdf

    标题中提及的“IATA ONE Order Overview_Day1_28-29August 2019”暗示了文档的主体内容是关于国际航空运输协会(IATA)在2019年8月28日至29日举办的一个会议概述。重点在于介绍ONE Order的概念、相关标准、项目状态...

    Javascript基于AJAX回调函数传递参数实例分析

    在AJAX应用中,经常会用到回调函数(Callback Function),这是一种在执行某项操作之后,系统会自动调用的函数。回调函数常用于处理异步操作的结果,确保数据在所有相关工作完成后才使用,这符合JavaScript的异步...

    PHP设计模式之观察者模式入门与应用案例详解

    观察者模式是一种软件设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态...在Web开发中,观察者模式常用于用户行为追踪、实时数据更新、异步任务处理等场景,有助于构建更加模块化和可扩展的应用程序。

    函数式编程中的设计模式.pdf

    例如,Currying和高阶函数(Higher-order functions,HOF)在函数式编程中扮演了类似工厂模式的角色,它们都是用于创建和操作函数的模式,但使用方式和OO设计模式不同。 总结来说,文档试图传达的信息是,函数式...

    one-order-transition-study.pdf

    在航空业中,“One Order”(ONE Order)是国际航空运输协会(IATA)提出的一项旨在简化航空业预订、开票及销售流程的转型项目。该项目意在用单一的订单记录来代替现今航空业中普遍存在的多重记录,包括订座记录、...

    OrderExample - MetaTrader 5EA.zip

    在实际应用中,`OrderSendAsync()`函数可以帮助交易者在市场波动剧烈时快速下单,抓住瞬息万变的交易机会。然而,异步操作也带来了一定的风险,如未及时处理回调可能导致交易状态丢失。因此,编写EA时,必须确保回调...

    设计模式(英文版)

    例如,在函数式编程中,高阶函数(Higher-Order Function)和闭包(Closure)可以视为一种无状态的策略模式,而反应式编程中的发布/订阅模式(Publish/Subscribe)与观察者模式有相似之处。 学习和理解设计模式对于...

    union all与order by用法

    在 Oracle PL/SQL 中, UNION ALL 和 ORDER BY 的使用需要遵循一定的规则和限制。本文将详细介绍 UNION ALL 和 ORDER BY 的用法,并通过实例解释其应用场景。 UNION ALL 的用法 UNION ALL 用于合并两个或多个 ...

    C-pointers-and-callback-function.zip_callback_function pointer_回

    在这个例子中,`ascendingOrder`被用作回调函数,告诉`sortArray`如何比较数组元素。通过传递不同的比较函数,我们可以轻松地改变排序策略。 总结起来,C语言中的指针、指针函数、函数指针和回调函数是构建复杂系统...

    使用一等函数实现设计模式1

    当应用于“策略”模式时,我们可以在上下文中动态地选择和应用这些函数,而不必每次都创建新的对象实例。这样做不仅减少了内存消耗,还简化了代码。例如,一个`Order`对象可以根据需要使用不同的促销策略函数,而...

    遗传算法应用中遗传算法的模式理论.ppt

    《遗传算法应用中遗传算法的模式理论》 遗传算法是一种基于生物进化原理的优化方法,其核心...在实际应用中,通过对模式的理解,可以更有效地设计适应度函数,优化遗传算法的搜索策略,从而提高问题求解的效率和质量。

    group by + order by

    在实际应用中,经常需要同时使用 `GROUP BY` 和 `ORDER BY` 来处理数据。例如,在对数据进行分组后,可能还需要对每组内的数据进行排序。 - **基本语法**: ```sql SELECT column1, column2, ..., columnN FROM ...

    排名函数NTILE高级应用

    这个函数在数据处理和分析中有着广泛的应用,尤其在需要进行分组或者分区的情况下。下面我们将详细探讨`NTILE`函数的工作原理及其高级应用。 一、`NTILE`函数的基本用法 `NTILE(组数)`函数接收一个参数,即希望将...

    微信支付(暂时实现了扫码支付、app支付、h5支付、回调辅助函数)

    这个压缩包"wxpay_sdk-master"似乎是一个Python版本的微信支付SDK实现,涵盖了扫码支付、APP支付、H5支付以及回调辅助函数等核心功能。以下是关于这些支付方式及SDK的一些详细知识点: 1. **扫码支付**: 扫码支付...

    redis过期监听.docx

    在回调函数中,可以使用`Mysql`类来查询或更新订单状态,确保在键过期时正确处理订单: ```php function onExpiredKey($redis, $pattern, $chan, $msg) { $mysql = new Mysql(); $order = $mysql->fetchOrderById...

    hibernate中one2many映射

    在Java的持久化框架Hibernate中,One-to-Many映射是一种常见的关系映射方式,它表示一个实体(比如一个用户)可以与多个其他实体(比如用户的订单)进行关联。在这个场景下,"用户"是一方,称为"One","订单"是另...

    orcale 数据库中order by 的一些高级用法

    oracle数据库中order by的一些高级用法,该文件中,从order by的基本应用到order by的高级运用,该文件中均有体现

    OneThink前台注入分析1

    在`Db.class.php`的`select()`函数中,`$options`变量用于构建SQL查询语句,其中包括了`DISTINCT`、`FIELD`、`TABLE`、`JOIN`、`WHERE`、`GROUP`、`HAVING`、`ORDER`和`LIMIT`等部分。攻击者可能通过构造特殊的输入...

Global site tag (gtag.js) - Google Analytics