我们都知道物料编码是ERP系统工作的基本前提条件,绝大多数业务物料编码比较容易,有什么物料就先确定一个编码然后录入系统即可。我今天要讨论的话题是,在某些行业的物料编码可没有那么简单,而众所周知的ERP产品软件,似乎也不支持解决这种问题的好方案。让我们看下是什么样的物料编码如此困难吧。
在珠宝行业里面,比如钻石这种物料就存在手工编码非常困难的场景,认定一个钻石是否和另外一个钻石是相同的,要通过比较钻石的9个参数属性才能确定,具有相同参数的钻石价格相同,配料什么的可以通用,如果其中任何一个参数的值不同,那就是不同的钻石,价格也不同,配料也不能通用。
钻石的9个参数如下图所示:
其中克拉参数的范围值是0-999分,理论上是没有上限的,但公司实际业务上用到的钻石大小就是这个范围,只能取整数,也就是钻石大小有999种可能了。其他的参数的值都算有限的集合。公司的业务是顾客可以选购任意一种参数值的组合,我们可以计算出实际上公司业务中钻石物料可能有多少呢?很简单的一个数学题就是排列组合了,计算公式为:999X6X10X12X5X5X4X7X9=4531464000种钻石物料可用于系统中,这么多种物料,想象一下用手工方式一个个录入系统那是一种怎样的情境,估计没有公司愿意有人干这事的。以上图中钻石参数属性值,部分不完整,因为太多我就没有一一例举出来了。
那我们该如何解决呢?我所知道的SAP解决方案是一个叫做”可配置制造“这么个东西,大概做法是钻石物料编码只定义到克拉一个参数,那就会有999个物料编码,这样就大大缩小了录入范围,其他的参数通过对物料编码Z50(假设代表50分的钻石)进行进一步详细描述来作为最终确定是某种钻石。相当于我们在订单明细中,对这个50分的钻石,进行了详细的描述,其他订单的每个明细钻石,我们都要做这样的工作,其他8个参数值作为该订单明细钻石的附属信息和明细关联在一起,后面的采购加工等环节都从订单明细的这个附属信息表中获取这个Z50物料的附属信息。
以上SAP的解决方案也确实能解决那些参数众多,难以手工一一编码的物料类型,但是这个方案有个很大的缺点,就是整个系统以一种非常不精确的状态在运行着,比如说,配料的时候不能直接通过物料编码Z50来寻找库存,而是先要找到所有50分的钻石,然后一个个对其他参数部分进行逐个比较,直到其余8个参数值都一样才算匹配到了库存。在统计钻石销量的时候,也没有办法很快统计出哪种钻石销量最好,等等这些情况下,都是因为物料编码不精准造成的。
我认为的好的解决方案就是系统按照一种规则通过识别钻石的9个参数值,进行自动物料编码。规则如下所述,定义克拉参数为3位数字,范围是000~999,如050代表钻石克拉值是50分。其余参数都用2位数字表示,范围是00~99,如荧光02代表VG值,00则表示该项参数值为空值。然后根据以上图中各个参数的排列次序将这些数字连接组合在一起就构成了一个具体钻石的唯一编码了,如0500102040203010102编码代表钻石参数为克拉:50分,切工:IDEAL,净度:VVS1,颜色:H,荧光:VG,抛光:MED,对称:EX,形状:圆形,外观颜色:红,的钻石商品。
那什么时候导入呢?因为钻石理论上的排列组合实在太多(45亿),而实际业务中常用的可能就20万左右,但是哪20万类型的钻石常用,这个是不可知道的,客户选到什么钻石就是什么钻石,而且有些参数组合的钻石实际上也不存在(世界上还没有出现过这种钻石)。所有的都是不可预测和知道的,系统也没有必要将这45亿钻石全部先自动生成好存入物料库中。应该是在实际用到什么钻石就及时生成这样的钻石物料编码才对,所以一般只对采购入库和客户下订单那两个地方系统通过识别钻石参数值,然后按照定义好的规则自动生成物料编码即可。
通过这样的方式解决参数众多的物料编码问题,系统后面的配料、领料、库存查询、销售统计等模块就能很好的工作了,系统效率也会得到大大提升。以上方法来自实践经验所得,如有雷同纯属巧合,有不妥之处,还望专家学者批评指正。