文/潘勇 胡伟伟 陈军伟
为达到精细化管理和企业高效运营,制造企业采用生产订单来进行管理,但是制造企业很难做到当期开立的生产订单关闭率达到100%,所以为综合考虑准确反映生产订单Loss,必须考虑未关闭生产订单Loss 和其产品组件材料在产品数量和在产品金额。但是SAP 系统未提供标准功能计算生产订单产品组件材料及制造费用在产品数量和在产品金额,同时企业生产订单开立数量日益增多,如何从大量生产订单数据中筛选当期有效生产订单数据,快速准确计算Loss 为成本分析提供数据支持是目前亟待解决的问题。
传统生产订单Loss 计算没有考虑未关闭生产订单对应产品组件材料在产品数量和在产品金额,统计组件材料Loss 率不准确,无法为成本降低和生产环节改善提供数据支持;同时产品生产订单是日益增多,无法从海量数据提取有价值生产订单为组件材料Loss 计算提供数据准备,从而使原来的计算方法效率非常低,而且速度非常慢,适用性不强。
针对传统生产订单Loss计算方法效率低,提出新的生产订单Loss 计算方法,植入自己编写的算法,大大提高了效率;本方法主要根据输入年月、工厂、产品编码等参数,得出产品在当月组件材料投入数量、材料在产品变动数量和在产品变动金额等输出结果,从而根据输出结果字段数值计算出产品组件材料损耗率。
该方法核心功能模块是生产订单取数模块:生产订单取数模块主要是根据生产订单实际开立日期和技术关闭日期做日期限制,可以剔除出冗余的生产订单,提取有效生产订单数据,提高系统速度。
下面主要介绍本方法重要模块:生产订单取数模块。
该模块使用自己编写的取有效工单数量算法getOrNum,通过工厂、订单类型、年月份、生产版本参数,结合SAP标准后台表AFKO(订单表头数据 PP 订单)、AUFK(订单主数据)、AFPO(订单项)根据关键字订单号连接这3 个后台表,首先满足订单实际下达时间大于等于输入参数年月份减去1年后的月份的第一天并且小于等于输入参数年月份的最后一天,因为如果实际下达日期大于当期年月份的工单肯定不会在当期年月有生产数据,比如产量、投入等,可以剔除掉,同时考虑到有些工单跨周期比较长,该算法已经延长工单开立1年时间,不仅保证数据准确,防止遗漏工单数量,还能提炼有用工单数量;其次技术关闭日期大于等于输入年月份第一天,可以把之前月份关闭的工单给剔除掉,因为之前关闭的工单肯定不会在下月在进行投料生产等,缩减订单数量,通过以上结合,可以大大缩减数据量,提升系统运行速度。以下是订单取数getOrNum 具体算法:
getOrNum(p_pla,p_otp,p_mo,p_ver) // p_pla 为工厂,p_otp 为订单类型,p_mo 为年月,p_ver 为生产版本
{
Date:d1,d2,d3;//d1,d2,d3 为 时 间 类型变量
d1=lastYear(p_mo);//d1 是当前年月减去1年后的年月份的第一天
d2=finalDate(p_mo);//经过函数处理取当期月份最后一天
d3=firstDate(p_mo); //经过函数处理取当期月份第一天
select a-aufnr into gt_afko //gt_afko 为取出订单的存放内表
from afko as a
join afpo as p on a-aufnr = p-aufnr //AFPO、AUFK、AFKO 为SAP 标准后台表
join aufk as k on a-aufnr = k-aufnr
where k-werks=p_pla //werks 为工厂
and k-idat2>=d3
and p-verid=p_ver //verid 为生产版本
and d1<=a-ftrmi<=d2 //ftrmi 为订单实际下达时间
and k-auart=p_otp //auart 为订单类型
}
该算法以某公司SAP 测试机2017年1月至6月份数据实验效果表明优化前每月工单数是万级数量级,使用算法后只有千级数量级,使用getOrNum 算法显示无效生产订单数据平均降低了86%,同时通过AUFM 后台表查看行项目数算法前后保持一致,没有遗漏数据,准确率仍然保持在100%;使用新算法由原来的平均耗时60 分钟,降低为8 分钟左右,提速约6 倍多,大大提高了系统运行速度和组件材料准确率。
该方法植入自己编写的生产订单取数算法getOrNum,提取出有效的生产订单数据,剔除无效的数据,大大缩减数据量,快速提高系统运行速度;将在产品考虑至该发明中,更能真实准确反映组件材料损耗率,为产品成本分析提供快速有效的数据支持。