解答网友疑问:聊聊 SAP MRP 中追溯需求的技术实现

文摘   2024-12-11 00:00   四川  

笔者的知识星球里有一位朋友提问:

关于 SAP S/4HANA 事务码 MD09 里物料 MRP 追溯需求(Pegging Requirement)的取数问题。

场景大致描述如下:使用事务码 MD09,输入一个 Planned Order 单号,看到该单据包含的物料数据,MRP Area, Plant 等抬头字段,以及 Pegged Requirements.

双击这个 Pegged Requirements,能看到更详细的来源数据,如下图红色区域所示。

这位朋友的需求就是,搞清楚该区域的数据是从哪里来的。

笔者从未接触过和 MRP 相关的业务。不过没关系,有 ChatGPT 老师。

先泛泛地向 ChatGPT 请教一下 MD09 数据源的问题,得到一个名叫 MD_PEGGING 的 Function Module.

笔者到 SE37 里一查,果然有这个 Function Module.

并且在里面设置断点,执行事务码 MD09 之后,设置在该 Function Module 内的断点也触发了,看来 ChatGPT 比较靠谱。

顺便从 ChatGPT 那里学习了一下 MRP Element Data,Pegged Requirement 这一块的业务数据。

"MD09 这个事务码,使企业能够清晰地了解特定物料的需求来源,以及这些需求如何被满足。通过物料需求追溯,企业可以有效地管理供应链,确保生产和采购活动的协调一致。

物料需求追溯实际就是在 MRP 中,追踪特定物料的需求来源和满足方式的过程。它帮助企业确定每个需求(如销售订单、独立需求、预留等)是由哪些供应元素(如库存、生产订单、采购订单等)来满足的。

通过这种追溯,企业可以了解需求和供应之间的关系,从而优化生产和采购计划,减少库存积压,提升供应链效率。

MD09 事务码通过动态评估物料的当前库存、需求和供应数据,生成需求追溯信息。系统不会存储这些追溯关系的索引,而是根据物料的供需情况实时计算。具体而言,系统按照时间顺序,将最早的供应元素分配给最早的需求元素,直至所有需求被满足或供应耗尽。这种方法确保了供需匹配的及时性和准确性。"

以上这段文字来自 ChatGPT.

下面开始具体分析红色高亮区域的数据来源。

笔者之前的文章曾经介绍过,已知 SAPGUI 显示的界面,要找到界面上数据源,有七种不同的方法。

SAP 错误消息调试之七种武器:让所有的错误消息都能被定位

其中使用工具 ST05 和 SAT 这两种是笔者最爱使用的两种方法,也几乎可以解决所有类似的需求。

不过本文提到的红色区域显示的数据,如果确如 ChatGPT 所说是动态计算出来的话,那么 ST05 这条路就走不通了。不过无所谓,我们还有剩下的六大武器可以用。

鼠标单击红色区域,然后选择菜单 System->Status

找到事务码 MD09 实现的 ABAP 报表名称为 SAPLM61B,Screen 编号为 1000.

到 SE80 里打开这个报表,赫然看到了之前 ChatGPT 告知我们的 Function Module:MD_PEGGING. 看来这次 ChatGPT 给力了一回。

因为红色区域的显示,是通过用户在 MD09 的 ALV 界面上双击触发的,因此我们直奔用户输入模块,PROCESS AFTER INPUT,在 check_fcode 的实现体内设置断点。

然后回到 MD09,双击一个 Pegged Requirement,断点触发。此时 OK Code 的值对应为 PATH:

PATH 分支会进入名叫 get_path_ord_2_req_alv 的 subroutine 处理,这个 subroutine 就负责生成红色区域待显示的数据,可以进入单步调试来深入研究了。

省流版:查看 Include LM61BFA2 里实现的 GET_PATH_ORD_2_REQ_ALV.

当然,ChatGPT 并不总是这么给力。笔者经常听群里的朋友吐槽,向 ChatGPT 求助 ABAP 技术问题时,经常收到它“一本正经的胡说八道”。

笔者后续的文章,会和大家聊聊这个问题。也欢迎大家加入我的知识星球,一起交流技术和业务问题。

汪子熙
企业管理软件领域开发专家
 最新文章