环境: S4 hana 1709 APO模块
症状:有一个车上的零部件多投了一个。这个零件一个车上只配一个,但518个车上用了519个零件。在MB51中看到有一个车上投了2个零件。
业务背景:
解决问题之前,我一直想熟悉这块业务,这次终于如愿了。了解这块业务功能的代码有难度,所以拖累这么许久,因为得到的FS比较乱,而且并没有写得清楚。
1、LES的现场物料凭证从接口传入SAP系统。
2、对于261整车生产零部件投料,接口继续使用APO函数在报工点反冲。
CALL FUNCTION '/SAPAPO/PPC_CONF_CREATE'
EXPORTING
it_conf = lt_conf
IMPORTING
et_rc = et_rc
et_conford = et_conford
et_auto_conf = et_auto_conf
e_confid = lv_confid
3、APO自动把数据传递到S4中,产生物料凭证。投入产出报表的统计,计算实际投入时,就是取得APO中PPC相关的几张表数据。
*读取PPC反冲数据
SELECT a~headid,a~orderid,a~flg_reversal,
b~accid,b~confquant,b~confunit,
c~matid,
d~matnr,d~lgort
FROM ppc_head AS a
JOIN ppc_conf_mat AS b ON a~headid = b~headid
JOIN ppc_mat_det AS c ON b~accid = c~accid
JOIN ppc_mat AS d ON c~matid = d~matid
JOIN @gt_ords AS e ON a~orderid = e~ordid
WHERE a~flg_gr_head = ''
INTO CORRESPONDING FIELDS OF TABLE @gt_ppc_mat.
4、对于非整车的自制件投料,是用的PP报工BAPI打开工单投料。整车和自制件的订单通过类型字段区分:V01、V02整车,VP01、VP02自制件,等等。
CALL FUNCTION 'BAPI_PRODORDCONF_CREATE_TT'
IMPORTING
return = ls_return
TABLES
timetickets = lt_timetickets
goodsmovements = lt_goodsmov
link_conf_goodsmov = lt_link
detail_return = lt_detail_return.
5、在三大车间下线点,只做订单确认,和最后成品收货,而不做物料反冲消耗,这是在反冲功能上加了一个增强,在增强中清空了物料消耗的表,来实现不消耗物料。工厂因为成本核算要求一车一成本,成本归集改用生产订单的方式,所有发料和报工需要通过工单进行,而标准的过点确认会对成本收集器进行反冲和报工,需要通过增强将成本收集器的反冲和报工取消。
一、实现BADI:/SAPAPO/PPC_BADI
实现方法:GOODS_MOVEMENTS, 清空内表ct_goods_movements和ct_link_conf_gm
实现方法:ACTIVITIES,清空内表ct_activities和ct_link_conf_act
二、在包含程序/SAPAPO/LPPC0_PRF08的子例程CALL_BADI_GOODS_MOVEMENTS末尾做隐式增强,清空内表CT_GMPOS
三、在包含程序/SAPAPO/LPPC0_PRF09的子例程CALL_BADI_ACTIVITIES末尾做隐式增强,清空内表CT_ACT
可以看到,用LES的投料来代替了传统的汽车行业反冲方案,让更近现场的LES来处理物料,可以对物料的消耗更精准的控制,比如多供应商的情况,传统的反冲方案完全管不到这些物料问题,而该方案解决了。
6、LES的生产投料物料凭证源源不断的传入SAP系统,但是不是全部,因为现场物料管理和LES系统也不能做到完全一致的,总有极少部分的物料移动没有及时的产生物料凭证(类似于COGI),LES会在月底人工来发起这些补救的物料消耗。
原因:按上面的业务场景,这里出现了2个数据源,一个是接口数据操作,一个是人工发起的操作,当他们同时在操作一张表的数据时,就出现了重复投料的情况。
人工操作:
接口操作:
解决:只需加一道锁。
以上,其实主要记述的我们工厂业界首创的整车行业投料方案,我觉得它优于传统的反冲方案。
后记2022.1.9:
博主在2016年重庆潍柴汽车建设时就写过SAP生产模块整车零部件消耗反冲的程序,当时业务顾问给出FS上消耗物料的规则就很糟糕,好像只能做到物料的先进先出,更谈不上多供应商物料的控制,从那时候开始,就一直在关注这块问题。
其实零部件投料只是配额专题中的中间环节。首先,SAP中有采购配额发起对零件物料采购的比例分配,在中间执行使用环节是生产投料,在最后结算环节才能正确的同供应商结算。如果简单的在中间过程使用按BOM表反冲消耗物料,其实就生产现场脱离了,可以想象这里面的帐会越来越糟糕。
所幸,能够在现在的工厂看到这套优秀的解决方案,虽然它最初其实是一车一成本解决方案的衍生物,并不是直接针对我考虑的问题,但它确实做到了,并且你可能不知道,它是业界首创。