浅谈BOM

BOM的英文名为:Bill of Material ,物料清单。用来描述一个产品的结构和所所需的物料。BOM是ERP里很重要的一块,设计好BOM才能容易地应付客户在生产中所需的各种要求。

BOM采用树型结构来描述,只有一个根节点,节点与节点之间的关系属于父子关系。例如:爷爷->爸爸-儿子->孙子。一个爸爸可以有多个儿子,但一个儿子只能有一个爸爸。如果一个儿子有一个爸爸,那是网状关系,BOM与BOM之间的关系往往才是网状关系。

BOM数据结构:主要描述父子关系,如:MatId,PMatId;采用单表格式还是多表格式,都有各自忧点和缺点。在此讨论多表格式。BOM主表:保存BOM根节点信息。BOM明细表:保存BOM子节点信息。BOM冻结表:用于保存整个冻结BOM的信息。

以下对各表设计时需求考虑的功能进行描述:

BOM主表:
产品类型:成品,半成品,和虚拟节点。如果客户对产品有明细的分类,直接用标识就可以了否则要根据是否有父节点,是否被引用来判断。虚拟节点是指在生产中不存在的,有虚拟节点的BOM在实际应用时要去掉虚拟节点,求出真实的BOM才能使用。处理虚拟节点的BOM时可以直接使用存储过程处理,但考虑客户使用频率与编程中维护的问题,采用表来保存较合理点。在此要产生另外一张表真实BOM明细表:保存去掉虚拟节点后真实BOM信息。

BOM状态:开发,发布,冻结。当然若采用多表方式,在BOM主表里是看不到冻结BOM的。

版本号:有产品版本号,和发布版本号。发布版本号是指客户每次修改BOM后,再发布时产生的版本号,每次都不一样。客户说,这个一定要,且是用于ISO外审的。

其余的不多说,如合格率,开发日期,生效日期。是否审核

有些客户的物殊要求
有些客户还需要实现同一类产品只用同一种物料的功能,以及一个产品可以用同一类物料的功能。对于Bom数据结构来说需要增加两个标识,是否分类BOM,是否主分类物料。要实现将分类BOM转换有具体BOM的规则才是有点难度的。

还有些客户要求一个工艺线路可用于多个BOM,之所以还要提供BOM绑定工艺线路的功能。


BOM明细表:
物料类型:是否原料,如果不是原料就是成品,半成品,和虚拟节点。
虚拟节点:是否.虽然在BOM主表中存在,但在这加判断方便以后使用。或者处理在这个Bom是虚拟节点,在那个BOM不是虚拟节点的问题
损耗率:指做原料,成品,半成品的损耗率。
返工率:指成品,半成品返工率
是否有替代品:处理替代品的问题要独立一张表。

特殊要求:
是否分类物料。
是否有子节点存在问题,主要用于审核。


BOM的实现
BOM的录入与编辑:采用逐层处理的方式,左边是树,右边是录入表格。点击树节点时加载当前节点BOM的信息,编辑后,保存了才允许
加载其它节点BOM信息。

这里详细说一下填充BOM树的问题。
个人认为填充BOM树不宜采用一次性加载完的方式。应该采用逐层填充的方式。即一次只加载BOM的当前级.BOM子节点的子节点不进行加载。填写树时,如果是当前明细是成品,半成品,和虚拟节点,在树上显示一个虚构节点。用户点击虚构节点时,将虚构节点删除再加载下级,并标识本节点已加载,下次用户点击时不再加载。录入与编辑的BOM树中不需要考虑是否加载的问题。在BOM树型查询中才需要处理。


有关BOM树型查询,可以写成公用函数,第一给物料代码、版本号和Treeview就可以填充树,第二给物料代码、版本号和虚构节点的父节点信息可以自动加载当前节点的子节点信息。第三给节点返回当前节点物料的详细信息,如物料代码,版本号,名称等。可以用于树查询,逆向查询和生产计划安排(树型)

如图:

逐层加载与非逐层加载速度上有非常大的差别,本人试过,在BOM树型查询中,用非逐层加载需10分钟,改为用逐层加载只需要几秒。

在处理BOM信息时一般不要用游标,用while就可以处理了。且又不用考虑内钳游标层数的限制。

维护真实BOM,发布BOM时写入真实BOM信息,将发布的BOM转为开发的BOM和冻结的BOM时删除真实BOM信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值