简介:这份PDF是面向制造企业研发、工程、计划、采购、生产等岗位的BOM管理规范文件,由BOM管理规定与物料规格描述规范两部分构成。内容系统梳理了BOM搭建的“产、供、销、存、虚、委”六大原则,明确工程部、计划部、生产、采购等部门职责边界,并给出BOM编制依据、变更流程、核查与审批发放要求,有助于提升BOM清单准确性,减少因物料构成错误对生产排程与成本核算的影响。物料规格描述部分按电子料、结构物料、包装物料、产成品及裸机等类别展开,其中电子料进一步覆盖PCBA、LCD、TP、摄像头模组、电阻、电容、电感、二极管、三极管、传感器、变压器、IC、灯、天线、开关、连接器等常用物料,统一名称与规格描述规则,便于研发、采购、生产、销售各环节高效沟通。该资源为单个PDF文件,大小1.73MB,无需解压即可直接阅读,适合需要建立或优化BOM管理体系的企业管理人员、BOM工程师及物料标准化相关人员参考。目前已有140人学习下载。
1. 为什么 V3.0 会把“BOM 管理规定”和“物料描述规范”放在一份文件里
一个制造企业如果 ERP 已经上线两三年,BOM 往往还处于“能跑就行”的状态。等计划、采购、财务都开始依赖系统数据做决策,问题就集中暴露出来了:同一个 10K 电阻在主数据里存在三四个料号,描述分别写成“10K贴片”“0603 10K 1%”“电阻10K”,BOM 工程师随手挂一个,采购按另一个料号下单,库存却积压在第三个上。此时回头检查 BOM 结构,层级没错、数量没错,错的是物料描述这个最不起眼的字段。V3.0 把“管理规定”和“物料规格描述规范”合成一份文件,等于同时锁定了两个层面:BOM 怎么维护、怎么变更;物料怎么命名、描述怎么写。前者管动作,后者管数据,拆开任何一边都落不了地。这篇按企业内部推进这套规范最常见的路径,把物料编码、结构层级、描述字段设计、SQL 和脚本检查手段,以及版本切换期的增量控制讲透。
2. BOM 管理规定要管什么:物料编码、结构层级与变更流程
2.1 物料编码先跟描述解耦,BOM 才不会越管越乱
很多企业的物料编码习惯是“描述性编码”,比如 R-0603-10K-1%,刚建的时候直观好认,但维护两三年就会出问题:阻值精度升级后编码没有位置表达新参数,只能在后面追加后缀甚至重编料号;更麻烦的是,不同人对同一规格的写法不一致,很快就会出现同规格多料号。BOM 管理规定里如果不对编码规则做约束,后端的替代关系、成本核算会跟着一起乱。
更稳妥的做法是“分类码 + 子类码 + 流水码”。物料编码只承担身份识别,把规格细节全部放进描述字段,两者彻底解耦。
| 编码段 | 含义 | 示例 |
|---|---|---|
| 分类码 | 物料大类 | RES(电阻)、CAP(电容)、MECH(结构件) |
| 子类码 | 封装或工艺 | 0603、THT、CNC |
| 流水码 | 顺序号 | 000123 |
具体形式如:RES-0603-000123。子类码只是辅助分类,不承载阻值、精度这类电气参数。这样做的好处是规则简单、扩展性好,未来出现新规格规格不占用编码含义,也不会因为编码写不下而被迫造新料号。V3.0 里一旦把这条定成硬规则,BOM 维护时对比料号就只需要关心是否同一个码,不用再解析编码里的业务含义。
2.2 单层 BOM 维护、多层 BOM 展开,结构层级必须有明确约束
BOM 管理规定里另一个核心是层级规则。常见做法是:所有 BOM 统一按“单层”维护,也就是表里只存放父子两级的直接关系,多层结构靠程序递归展开获得。t_bom 表只保留四个关键字段:父项料号、子项料号、单位用量、替代组标识。
在 SQL Server 里做多层展开,一条递归 CTE 就够:
WITH BOM_CTE AS ( SELECT parent_item, comp_item, qty_per, 1 AS lvl FROM t_bom WHERE parent_item = 'FA-001' -- 起始成品料号 UNION ALL SELECT b.parent_item, b.comp_item, b.qty_per * c.qty_per, c.lvl + 1 FROM t_bom b INNER JOIN BOM_CTE c ON b.parent_item = c.comp_item ) SELECT parent_item, comp_item, qty_per, lvl FROM BOM_CTE;这段 SQL 里 qty_per 做的是逐层累乘,得到单台成品对底层物料的总用量;lvl 用于识别当前展开到第几层,排查时经常靠它定位层级异常。这里有两个常见坑:一是 BOM 里出现循环引用会导致递归死循环,SQL Server 默认会报错拦截,但 MySQL 8 之前不支持 WITH RECURSIVE,只能靠自关联和临时表绕;二是父项和子项填反,展开后第一层直接缺料,所以拿到结果后要先核对 lvl=1 的记录是否和成品的直接子项一致。规定里通常还会要求“虚拟件”单独标识,比如把一组线束作为一个装配节点挂在下层,但不建物料编码,这类节点在递归时也要有专门标记,避免被当成真实物料去扣库存。
2.3 ECR/ECN 变更流程:关键字段与状态流转
工程变更在不同企业叫法不一,但 V3.0 通常会把流程固定成 ECR(变更申请)和 ECN(变更通知)两步。ECR 记录“为什么改”,ECN 记录“改成什么”,两者通过变更单号关联。一张变更单上至少要包含下面这些字段:
| 字段 | 说明 | 示例 |
|---|---|---|
| 变更原因 | 降本、质量、新供应商、设计优化 | 电阻降本,更换品牌 |
| 影响范围 | 哪些成品料号受影响 | FA-001, FA-002 |
| 生效方式 | 立即生效或指定批次生效 | 批次生效,批号 B20260701 |
| 旧料处置 | 消耗完 / 冻结 / 报废 | 库存消耗完 |
| 替代关系 | 新料是否可完全替代旧料 | 完全替代 |
审批流一般是工艺工程师起草、研发经理审核、计划确认库存影响、授权人批准,最后由 BOM 管理员在系统里执行。执行时最容易忽略的是生效方式。直接改当前 BOM 会让在制品和已备料全部错位;更保守的做法是让 BOM 带“生效日期”或“生效批次”字段,旧版本保留到切换完成。这一条在 V3.0 里属于管理规定层的硬约束,没有它,后面做历史追溯和成本重算都没有依据。
3. 物料规格描述规范:字段模板、分类规则与用词收敛
3.1 描述结构模板:把自由文本改成公式化描述
物料描述是最容易被随意填写的字段,但它同时是采购询价、仓库标识、财务归集的共同依据。规范的第一步,是把“想到哪写到哪”改成“套模板”。常见模板是:
[物料类别] [封装/尺寸] [主参数] [精度/等级] [其他关键属性]以贴片电阻为例,书写顺序固定为类别、封装、阻值、精度、功率、温漂系数。
| 描述是否符合规范 | 描述内容 |
|---|---|
| 不符合 | 10K贴片电阻 0603 1% 1/8W |
| 不符合 | 电阻0603 10K 0.125W ±1% |
| 符合 | RES 0603 10K ±1% 0.125W 25ppm |
前两条的问题不只是顺序不统一。第一条漏了类别简写和温漂系数,第二条把阻值和精度位置调换,按描述字符串做排序或分组时,10K 和 0603 会落到不同的分组里,后续查重完全没法做。第三种写法用空格做分隔符、参数顺序固定、单位符号统一,任何一个字段都能被正则拆出来单独匹配。实际执行时,模板里每个位置允许填什么内容、哪些参数必填、哪些可省略,要配一张字段说明表,否则工艺人员还是会凭感觉填。
3.2 分类别描述规则:电子料、结构件、辅料不能共用一套字段
统一模板不等于所有物料都用同一套参数。电子料的核心是电气参数,结构件的核心是图纸号和表面处理,辅料包材关心的是材质和尺寸。分类别定义必填字段,可执行性会比一套规则走天下好很多。
| 物料类别 | 必填要素 | 示例 |
|---|---|---|
| 电子料 | 类别、封装、主参数、精度 | RES 0603 10K ±1% |
| 结构件 | 类别、图号、材质、表面处理 | MECH DWG-88213 AL6061 阳极氧化 |
| 辅料/包材 | 类别、材质、长宽厚 | BAG PE 200x300x0.05mm |
结构件的描述里必须带图号,这一点很多企业会忽略。结构件没有“10K”这类电气参数,它的规格完全由图号定义,材质和表面处理只是辅助确认。如果描述只有“外壳”“上盖”这种中文名,没有图号,采购下单时只能靠人工去图档目录里翻,BOM 里引用的是哪一版图纸根本无法追溯。辅料则相反,描述要关注物理尺寸和材质,品牌和颜色不要写进描述,否则换了颜色就得重新建料号。
3.3 描述用词黑名单与同义词收敛
规格描述最大的敌人是同一参数有无数种写法。10K、10KΩ、10千欧、10000欧同时存在时,按描述字段做 SQL 分组查重基本失效。V3.0 里通常会附带一张同义词收敛表:
| 不规范写法 | 规范写法 |
|---|---|
| 10KΩ 贴片 | RES 0603 10K ±1% 0.125W 25ppm |
| 103 电容 | CAP 0402 10nF ±10% 25V |
| 杜邦线 母对母 | WIRE DUPONT 母-母 200mm 28AWG |
规定里还要明确几条禁令:描述里禁止出现供应商品牌,品牌要放到单独的厂商字段;禁止颜色描述,除非颜色本身就是功能属性;禁止中文单位,统一用 SI 符号;禁止“等、约、类似”这类模糊词。品牌写进描述的直接后果就是同一规格更换第二供应商时必须新建料号,而不是在主数据里加一条供应商记录,这是典型的把主数据和采购数据混在一起。黑名单词表要跟着版本走,V3.0 发布后再发现新冒出来的写法,应该有个补充渠道,而不是等下一次升版本才更新。
4. 用 SQL 与正则在 ERP 里执行描述规范体检
4.1 按描述分组查一物多码
规范发布之后最有效的动作,是把系统里的历史物料全部跑一遍体检。第一步是查“描述相同但料号不同”的记录:
SELECT item_desc, COUNT(*) AS cnt, STRING_AGG(item_code, ',') AS code_list FROM item_master WHERE item_status = 'ACTIVE' GROUP BY item_desc HAVING COUNT(*) > 1 ORDER BY cnt DESC;这段 SQL 在 SQL Server 里用 STRING_AGG 拼接料号,MySQL 里要换成 GROUP_CONCAT。重点关注 cnt 大于 1 的记录,它们很可能就是一物多码。注意“很可能”三个字:有些是完全相同而重复建码,也有的物料描述相同但实际规格不同,说明该补描述字段却没补。所以查重结果只能当候选清单,必须回采规格书确认,不能直接在系统里合并。跑完这一轮,再看描述里的单位、大小写、分隔符是否统一,就把体检从“有没有重复”推进到“写得到底规不规范”。
4.2 用 Python 正则校验描述格式
描述是否按模板写,用正则就能批量判定。下面这段脚本按 3.1 的模板结构做检查:
import re pattern = re.compile( r"^(RES|CAP|IND|CONN|MECH|BAG|WIRE)\s+" r"[A-Za-z0-9±%.]+(\s+[A-Za-z0-9±%.]+)*$" ) samples = [ "RES 0603 10K ±1% 0.125W 25ppm", # 合规 "电阻0603 10K ±1%", # 类别不符合且含中文 ] for s in samples: print(s, "=>", "OK" if pattern.match(s) else "FAIL")pattern 第一段是物料类别白名单,第二段要求参数之间以空格分隔,每个参数段只能包含字母、数字和 ± % . 这几个符号。跑批时直接把 item_master 全表拉出来套正则,FAIL 的导出成 Excel 发给工艺部门逐条修订,比人工翻主数据快很多。需要强调一点:正则只能保证“格式合规”,不能保证“规格正确”。比如有人把 RES 写成 RESI,正则校验会放行,所以还要配一份类别简写词表和黑名单词表做二次检查。更完整的做法是把同义词收敛表也读进脚本,把“10KΩ”这类写法直接标记为疑似违规。
4.3 从候选到定案:重复物料处理的四步
查出来的重复料不能直接合并。库存、采购订单、BOM 引用都挂在料号上,贸然停用会直接卡住领料流程。常见的处理次序如下。
第一步,冻结重复料号的“新建单据”权限,只允许发料和收货。第二步,由工艺或研发调出两份规格书做实物比对,确认是否同一物料。第三步,若是同一物料,选一个主料号,把 BOM 和未结采购订单里的旧料号统一替换为主料号。第四步,做库存转储,把旧料库存转入主料号,最后停用旧料号。转移库存时注意,旧料号如果还有在途采购,要先把在途订单改料或等到货后再合并,否则财务结算会同时挂两个料号的成本。整个流程每一步都要留操作记录,哪一步做了调整都能回溯。
5. 版本切换期的增量校验与 BOM 变更影响分析
V3.0 发布到完全执行之间通常有几个月过渡期。这个阶段最容易出问题的不是存量清洗,而是新规范还没养成习惯时产生的增量数据。把 4.2 的脚本做成定时任务,每天凌晨跑一遍当天新增或修改的物料描述,把违规清单推到 BOM 管理员的工作台,是成本最低的守门方式。增量校验范围可以控制在“只查当天变更过的记录”,避免每天全量跑消耗数据库资源;跑完把结果按不符合类型分类,类别错误、单位错误、黑名单词各自汇总,方便按责任人分发。
另一类实用技巧是 BOM 变更影响分析。ECN 执行后,哪些成品成本会变、哪些在制品会受影响,不展开 BOM 根本看不到。把变更前后的 BOM 快照各存一张表,用 SQL 做差集,结果按“变更子项”“涉及成品”“层级深度”三列展示,直接作为变更评审附件。
SELECT snap_new.comp_item, snap_new.parent_item, snap_new.lvl FROM bom_snapshot_new snap_new LEFT JOIN bom_snapshot_old snap_old ON snap_new.parent_item = snap_old.parent_item AND snap_new.comp_item = snap_old.comp_item WHERE snap_old.comp_item IS NULL;这段 SQL 找出新快照里有、旧快照里没有的子项,也就是本次变更真正新增的物料节点。反过来把 LEFT JOIN 换方向,就能找出被移除的节点。快照 diff 的核心不是写 SQL,而是约定快照时机:旧快照取 ECN 批准时刻,新快照取系统生效时刻,中间夹着的任何手工调整都不算数,否则对比结果会混入无关变动。V3.0 这类文件本身不提供工具,但把快照对比变成流程里的固定动作,执行层才会把它当成和数据一致性有关的事。定时校验、快照比对这两件事坚持跑两个迭代周期,规范才算真正从纸面落到了系统里。
本文还有配套的精品资源,点击获取