惯例闲话:最近中《三体》的毒很深,可能是电视剧版确实给闲人这种原著粉带来太多的感动,又一次引发了怀旧的热潮,《我的三体-罗辑传》是每天睡前必刷的视频,结尾BGM太燃了。闲人对其中一句台词感触很深——人类不感谢罗辑。问世间英雄为何物,直教人为非人。也是在重燃情怀之余,再次想起了去年自己心底的“使命”,一定要完成。《三体》真的是一本好书,至少在抵抗拖延症方面,是有很好的效果的。
闲话到此为止,这次探讨混合制生产下BOM的标准成本估算问题
应用场景
混合结构BOM的定义,是指在顶层BOM展开过程中存在,WBS-BOM和标准BOM同时存在,通常顶层为WBS-BOM,若干组件为标准BOM。这种混合BOM结构,在实际应用中会常见于MTP(按项目生产)和MTS(按库存生产)混合制生产的场景中。
在工程和装备制造企业中,通常最终交付成品是定制化的,但在成品BOM中会有一些标准化的组部件。如下图:
某成品机柜P1000039为定制产品,启用了WBS-BOM,它由三个半成品组成,其中电源模块P2000306为标准模块,在工厂内属于通用件,BOM采用通用件管理。这是一个非常典型的混合BOM,且非常常见。我们希望实现的是,SAP能进行灵活标准成本估算。
存在的问题
经过测试,我们发现系统标准功能是不能做到混合BOM展开的以及标准成本估算。
主数据准备清单:
如下图CS76展开WBS-BOM,注意到在300000000000000179的BOM无法展开到下层
CKW1对WBS做标准成本估算提示通用产品找不到价格也间接证明了展开失败
在这种混合BOM中,使用前台CKW1处理时,涉及上级是按WBS存在BOM,下级是沿用MTS的物料BOM(通过CS01创建的)。
增强点
通过DEBUG过程,我们可以找到CKW1标准成本估算控制BOM展开的关键函数——MARC_MD_SINGLE_READ。CKW1系统的逻辑是:
1、对BOM中任何一个部件做展开校验,独立集中标识MARC-SBDKZ字段起到了控制作用。
2、默认顶层BOM物料独立 = 1,按照MTP的模式对每一层物料按WBS-BOM做历边查询,如果不存在WBS-BOM,则跳过,认为物料没有BOM。这也是我们在测试过程中发现,通用模块产品的BOM无法展开的原因。
解决思路:对函数MARC_MD_SINGLE_READ做增强干预,当使用CKW1对产品做标准成本核算时,对其中的通用物料做强制赋值,引导标准程序再次执行搜索和展开标准BOM。
这里给了一个简单的判断条件:
当事务代码为CKW1时,强制 WMARC_MD-SBDKZ = ‘1’.
前台验证
第1步:搭建BOM
事务代码 CS71/CS01
业务说明 混合BOM搭建
操作内容:
继续沿用以上主数据,由于测试过程中已将300000000000000179标准成本发布,为了体现出差异,增加一个其他通用模块300000000000000183。
通用模块300000000000000183的BOM结构
图 其他通用模块BOM
第2步:标准成本估算
操作路径
事务代码 CKW1/CKW4
业务说明 混合BOM搭建及发布标准价
操作内容:
1、未启用增强前的结果为70,是前三项半成品的价格之和,第四项为0.
2、启用增强后的结果,对第四项其他标准模块进行了展开估算,结果正确。
第3步:测试入库价格
操作路径
事务代码 MIGO
业务说明 成品入库价格测试
操作内容:
使用MIGO 561Q对成品入库,库存单价为80正确。
小结:这个小增强点,起到的作用非常大,有效解决了混合制生产模式中,标准成本发布的问题。在项目制造型企业实施时,应考虑做为一个必备的增强点。本案例的演示,判断条件较为简单,在实际应用中,可能需要结合多工厂、BOM上下级等综合因素,来对WMARC_MD-SBDKZ赋值,以免产生其他的错误。