笔者的知识星球里有一位朋友提问:
关于 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 显示的界面,要找到界面上数据源,有七种不同的方法。
其中使用工具 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 技术问题时,经常收到它“一本正经的胡说八道”。
笔者后续的文章,会和大家聊聊这个问题。也欢迎大家加入我的知识星球,一起交流技术和业务问题。