例如需求是搞清楚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的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:
相关推荐
回调函数作为一种重要的编程设计模式,在多种编程语言中都得到了广泛应用。本文将从基本概念入手,逐步深入探讨回调函数的工作原理、应用场景以及优缺点,并通过具体的示例帮助读者更好地理解和运用回调函数。 ### ...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它允许对象在状态改变时通知其他对象。在PHP中,这种模式常用于事件驱动编程,使得对象间能进行松耦合的通信。在这个例子中,我们将探讨如何在PHP中...
标题中提及的“IATA ONE Order Overview_Day1_28-29August 2019”暗示了文档的主体内容是关于国际航空运输协会(IATA)在2019年8月28日至29日举办的一个会议概述。重点在于介绍ONE Order的概念、相关标准、项目状态...
在AJAX应用中,经常会用到回调函数(Callback Function),这是一种在执行某项操作之后,系统会自动调用的函数。回调函数常用于处理异步操作的结果,确保数据在所有相关工作完成后才使用,这符合JavaScript的异步...
观察者模式是一种软件设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态...在Web开发中,观察者模式常用于用户行为追踪、实时数据更新、异步任务处理等场景,有助于构建更加模块化和可扩展的应用程序。
例如,Currying和高阶函数(Higher-order functions,HOF)在函数式编程中扮演了类似工厂模式的角色,它们都是用于创建和操作函数的模式,但使用方式和OO设计模式不同。 总结来说,文档试图传达的信息是,函数式...
在航空业中,“One Order”(ONE Order)是国际航空运输协会(IATA)提出的一项旨在简化航空业预订、开票及销售流程的转型项目。该项目意在用单一的订单记录来代替现今航空业中普遍存在的多重记录,包括订座记录、...
在实际应用中,`OrderSendAsync()`函数可以帮助交易者在市场波动剧烈时快速下单,抓住瞬息万变的交易机会。然而,异步操作也带来了一定的风险,如未及时处理回调可能导致交易状态丢失。因此,编写EA时,必须确保回调...
例如,在函数式编程中,高阶函数(Higher-Order Function)和闭包(Closure)可以视为一种无状态的策略模式,而反应式编程中的发布/订阅模式(Publish/Subscribe)与观察者模式有相似之处。 学习和理解设计模式对于...
在 Oracle PL/SQL 中, UNION ALL 和 ORDER BY 的使用需要遵循一定的规则和限制。本文将详细介绍 UNION ALL 和 ORDER BY 的用法,并通过实例解释其应用场景。 UNION ALL 的用法 UNION ALL 用于合并两个或多个 ...
在这个例子中,`ascendingOrder`被用作回调函数,告诉`sortArray`如何比较数组元素。通过传递不同的比较函数,我们可以轻松地改变排序策略。 总结起来,C语言中的指针、指针函数、函数指针和回调函数是构建复杂系统...
当应用于“策略”模式时,我们可以在上下文中动态地选择和应用这些函数,而不必每次都创建新的对象实例。这样做不仅减少了内存消耗,还简化了代码。例如,一个`Order`对象可以根据需要使用不同的促销策略函数,而...
《遗传算法应用中遗传算法的模式理论》 遗传算法是一种基于生物进化原理的优化方法,其核心...在实际应用中,通过对模式的理解,可以更有效地设计适应度函数,优化遗传算法的搜索策略,从而提高问题求解的效率和质量。
在实际应用中,经常需要同时使用 `GROUP BY` 和 `ORDER BY` 来处理数据。例如,在对数据进行分组后,可能还需要对每组内的数据进行排序。 - **基本语法**: ```sql SELECT column1, column2, ..., columnN FROM ...
这个压缩包"wxpay_sdk-master"似乎是一个Python版本的微信支付SDK实现,涵盖了扫码支付、APP支付、H5支付以及回调辅助函数等核心功能。以下是关于这些支付方式及SDK的一些详细知识点: 1. **扫码支付**: 扫码支付...
在回调函数中,可以使用`Mysql`类来查询或更新订单状态,确保在键过期时正确处理订单: ```php function onExpiredKey($redis, $pattern, $chan, $msg) { $mysql = new Mysql(); $order = $mysql->fetchOrderById...
在Java的持久化框架Hibernate中,One-to-Many映射是一种常见的关系映射方式,它表示一个实体(比如一个用户)可以与多个其他实体(比如用户的订单)进行关联。在这个场景下,"用户"是一方,称为"One","订单"是另...
oracle数据库中order by的一些高级用法,该文件中,从order by的基本应用到order by的高级运用,该文件中均有体现
在`Db.class.php`的`select()`函数中,`$options`变量用于构建SQL查询语句,其中包括了`DISTINCT`、`FIELD`、`TABLE`、`JOIN`、`WHERE`、`GROUP`、`HAVING`、`ORDER`和`LIMIT`等部分。攻击者可能通过构造特殊的输入...
one_cap_volterra_3rd_order_LMS.rar_Volterra-LMS_Volterr" 提供的信息表明,这是一个与Volterra-LMS算法相关的项目,具体应用于一个单电容(cap)的三阶Volterra非线性均衡器(nonlinear equalizer),主要在可见...