今天终于有时间来给二级物料处理程序来个盖棺定论了。
通过二级物料处理程序,我熟悉了SAP MM 的采购订单相关表,收货记录表,MM模块的常用移动类型:
|
移库 ZMMR0066 |
一级 |
311 |
311K |
312 |
312K | |||||
|
↓ |
↓ |
↓ |
↓ | |||||||
|
二级 |
311 |
311K |
312 |
312K | ||||||
|
采购收货 ZMMR0067 |
一级 |
101 |
101K |
102 |
102K |
105 |
105K |
106 |
106K | |
|
↓ |
↓ |
↓ |
↓ |
↓ |
↓ |
↓ |
↓ | |||
|
二级 |
101 |
101K |
102 |
102K |
101 |
101K |
102 |
102K |
接中篇的内容,我提出了解决办法,需要用程序去实现,整个功能完成后和原来最初的设计有很大的变化。
原来设计的问题:
1. 顾问没有吃透这个增强,不能在这个增强中多次提交数据更新,结果还使用子函数在增强中多次提交,造成大量ABAP DUMP和凭证无法保存问题。
2. 日志混淆不清,用户后续跟踪操作困难。
全新的设计的优点:
1. 尽可能的解耦一二级物料处理机制,每一种业务对应一段简单程序,结构越简单,程序工作起来越可靠。 避免了在原来增强中多次提交数据的更新问题。
2. 日志完整:初始数据一张表,处理后的数据日志一张表。记录一一对应,非常清楚。便于用户后续使用。
采购订单智能收货,IQ达到了比较高的水平,比较有意思。
场景一:
一个物料,要求收货100件。
实际订单1可满足7件,订单2可满足200件,程序会怎么做呢?
程序会把订单1的7件收完。再去订单2收93件。
场景二:
一个物料,要求收100件。
实际订单1可满足7件,订单2可满足50件。程序会怎么做呢?
程序计算全部订单和都无法满足,罢工了,留下一段提示,全部订单总数不满足。
《ERP系统开发说明书》
一、基本信息
|
程序中文描述 |
MB11,MIGO一级物料移库和采购订单收货,增强二级物料处理 |
|
增强及程序实现 |
SE19中扩展增强MB_DOCUMENT_BADI -> ZMB_DOCUMENT_BADI1.增强程序保存一级物料移库和采购订单收货信息,写入ZMMT_015表中。 2. ZMMR0066程序定时处理二级物料移库,日志写入ZMMT_LOG020表中 3. ZMMR0067程序定时处理二级物料采购订单收货,日志写入ZMMT_LOG020表中 |
|
涉及表名1 |
ZMMT_001, 一二级供应商物料维护表 |
|
涉及表名2 |
ZMMT_015,对一级物料操作信息,增强记录在该表中 |
|
涉及表名3 |
ZMMT_LOG020,对二级物料操作信息,记录在该表中 |
|
业务顾问 |
赵杰、李俊颉 |
|
开发者 |
刘欣 |
二、版本管理
|
版本号 |
更新日期 |
更新人 |
开发请求号 |
主要更新描述 |
|
1.0 |
2015-02-02 |
刘欣 |
|
新建开发说明书 |
|
2.0 |
2015-02-06 |
刘欣 |
|
补充完成 |
|
|
|
|
|
|
|
|
|
|
|
|
三、用户签字
此处的签名,表示项目的关键用户确认本文档内容中的开发需求及功能设计。
四、业务需求,程序用途(描述编写报表的用途或目的)
有一些物料,我们对它收货入库,或在库位中移动时,希望ERP系统自动把它的子物料也一并处理。比如发动机:我们对“发动机裸机”收货时,希望也能把“发动机排气管”、“发动机排气管支架”等子物料一并处理。如果库管员把“发动机裸机”10个收入仓库,我们希望系统自动把“发动机排气管”、“发动机排气管支架”等子物料10套一并收入仓库。
五、功能设计
5.1工作原理
对于二级物料跟随一级物料的处理,设计分两步来完成:
第一步:一级(父)物料收货后,ERP系统自动触发增强, 增强中只需把父物料收货或移库信息写入ZMMT_015原始数据表,结束。
第二步: 系统定时调用一段程序,根据原始数据表ZMMT_015和一二级物料表ZMMT_001关系去处理子物料。
5.2程序设计
5.2.1增强程序记录一级物料操作写入ZMMT_015表。
增强程序流程图:
5.2.2 二级物料处理程序
对于二级物料处理有两种业务模式:移库和采购订单收货。
|
移库 ZMMR0066 |
一级 |
311 |
311K |
312 |
312K | ||||||
|
↓ |
↓ |
↓ |
↓ | ||||||||
|
二级 |
311 |
311K |
312 |
312K | |||||||
|
采购收货 ZMMR0067 |
一级 |
101 |
101K |
102 |
102K |
105 |
105K |
106 |
106K | ||
|
↓ |
↓ |
↓ |
↓ |
↓ |
↓ |
↓ |
↓ | ||||
|
二级 |
101 |
101K |
102 |
102K |
101 |
101K |
102 |
102K |
移库的处理:ZMMR0066程序,对移动类型311,311K,312,312K的一级物料操作,做出相应的二级物料移库处理。一项一级物料的货物移动可能触发多项二级物料的货物移动。
ZMMR0066程序流程图:
采购订单收货的处理:ZMMR0067程序,对移动类型101,102,105,106的一级物料操作,做出相应的二级物料移库处理。一项一级物料的采购订单收货可能触发多项二级物料的采购订单收货,一项二级物料的采购订单收货可能涉及有多项采购订单明细,一项采购订单明细涉及多个已经收货数量。
增强程序记录的一级物料数据处理表:(保存后查看大图)
二级物料处理程序完成后的日志记录:(保存后查看大图)
本文介绍了一种在SAP MM模块中处理二级物料的全新设计思路与实现方法,包括增强程序的设计与定时处理程序的功能,解决了原有设计中数据更新和日志记录等问题。
2683

被折叠的 条评论
为什么被折叠?



