2. 多层级BOM结构:单层BOM与多层BOM的区别、父件与子件的关系、BOM的层级编码规则

在制造物料协同体系中,BOM(Bill of Materials,物料清单)的结构深度直接决定了物料需求计算、成本核算与生产排程的精度。本章聚焦于BOM的两种基本结构形态——单层BOM与多层BOM,剖析父件与子件的层级关系,并给出标准化的层级编码规则,为后续分配策略设计奠定结构基础。

2.1 单层BOM与多层BOM的核心区别

单层BOM仅描述一个父件与其直接子件的关系,不展开子件自身的下级结构;多层BOM则递归展开至最底层原材料或外购件,形成完整的树形清单。两者的适用场景与信息粒度差异显著。

对比维度 单层BOM 多层BOM
结构深度 仅1级(父件→直接子件) ≥2级,递归至原材料/外购件
数据冗余 低,每个装配关系只存一次 高,子件结构在多个父件下重复存储
查询效率 快,无需递归 慢,需逐层展开或预计算
变更影响范围 局部,仅影响直接父件 全局,底层变更可能波及所有上层父件
典型应用 简单装配、维修BOM、快速报价 复杂制造、MRP运算、成本滚算
ERP/MES实现方式 单表结构,父件ID+子件ID 多表关联或单表加层级字段

关键认知:单层BOM是“关系记录”,多层BOM是“结构树”。在分配策略设计中,单层BOM适合按订单配置的快速分配,多层BOM则支撑基于通用件、替代料的全局优化分配。

2.2 父件与子件的关系模型

父件(Parent Item)与子件(Child Item)是BOM中最基本的二元关系。每个关系包含三个核心属性:数量关系(用量)、位置关系(工序/工位)、时序关系(提前期偏移)。

  • 数量关系: 1个父件需要N个子件,支持固定用量、可变用量(如按长度/重量)、损耗率。
  • 位置关系: 子件在父件中的装配工位或工序节点,影响物料配送的物理路径。
  • 时序关系: 子件相对于父件开工/完工的提前或滞后天数,用于拉动式配送。

工程提示:在多层BOM中,同一个物料可能在不同层级中既作为父件(在下一级)又作为子件(在上一级)。这种“中间件”身份是BOM递归展开的核心,也是分配策略中“层级穿透”的难点。

2.3 BOM的层级编码规则

层级编码(Level Code)是BOM结构数字化的基础。常见的编码方案有三种:缩进式编码、点分式编码、整数层级码。以下为推荐的标准规则:

编码方案 格式示例 优点 缺点
缩进式 L0, L1, L2, … 直观,适合人工阅读 不便于程序排序
点分式 1, 1.1, 1.1.1, … 保留父子路径信息 层级深度受限,字符串排序需特殊处理
整数层级码 0, 1, 2, 3, … 排序快,适合MRP递归 丢失路径信息

推荐实践:在制造执行系统中采用整数层级码 + 父件ID索引的组合方式。整数层级码用于快速过滤某一深度的所有物料,父件ID索引用于向上追溯完整路径。

-- 示例:BOM层级编码表结构(整数层级码方案)
CREATE TABLE bom_structure (
    bom_id          INT PRIMARY KEY,
    parent_item_id  VARCHAR(50),      -- 父件物料编码
    child_item_id   VARCHAR(50),      -- 子件物料编码
    quantity        DECIMAL(10,4),    -- 用量
    level_code      INT,              -- 整数层级码:0=顶层成品,1=一级子件,2=二级子件...
    sequence_no     INT,              -- 同一父件下的排序号
    effective_date  DATE,
    expire_date     DATE
);

避坑提醒:不要将层级编码与物料编码混用。物料编码应保持全局唯一且与层级无关,层级编码只描述BOM结构中的位置。混用会导致物料重用(通用件)时编码冲突。

2.4 多层级BOM结构图(单层 vs 多层对比)

以下SVG图展示了一个典型产品“电动工具”的单层BOM与多层BOM结构对比,直观呈现父件-子件关系及层级编码的分配方式。

单层BOM与多层BOM结构对比 单层BOM vs 多层BOM 结构对比 单层BOM(仅1级) 成品:电动工具 电机组件 外壳 电池包 层级码:L0 → L1(仅1级展开) 多层BOM(递归展开) 成品:电动工具 层级码:0 电机组件 层级码:1 外壳 层级码:1 转子 层级码:2 定子 层级码:2 硅钢片 层级码:3 铜线 层级码:3 多层BOM特点 递归展开至原材料/外购件,层级码逐级递增 中间件(如电机组件)既是父件又是子件

2.5 层级编码在分配策略中的关键作用

层级编码不仅是BOM结构的数字化标签,更是物料分配策略中“按层分配”与“跨层穿透”的操作锚点。以下为三个典型应用场景:

  1. 按层齐套分配: 同一层级码的物料必须同时齐套才能开始装配,层级码作为分配批次的分组键。
  2. 通用件跨层分配: 当同一物料出现在多个层级(如标准件M6螺栓在L1和L3同时出现),层级码帮助系统识别该物料在不同深度的需求,避免重复分配或漏分配。
  3. 替代料层级约束: 替代关系通常限定在同一层级内,层级码作为替代规则生效范围的过滤器。

分配策略设计要点: 在多层BOM中,建议将层级码作为分配优先级的第一排序字段。先分配高层级(靠近成品)的物料,再分配低层级物料,确保装配顺序与物料到达时序一致,避免低层级物料提前占用库存导致高层级缺料。

2.6 多层级BOM的物料分配流程

以下SVG图展示了一个基于层级编码的物料分配流程,从顶层成品需求到底层原材料分配,体现层级码在每一步中的控制作用。

基于层级编码的物料分配流程 基于层级编码的物料分配流程 步骤1:解析BOM 按层级码展开结构 步骤2:层级分组 按层级码分组物料 步骤3:层级排序 从高层到低层分配 步骤4 分配执行 层级码在分配流程中的控制逻辑 1. 层级码0(成品): - 触发主生产计划(MPS),生成顶层需求 - 不参与物料分配,只作为需求源头 2. 层级码1(一级子件): - 第一分配优先级,确保装配线首站物料齐套 - 分配完成后锁定库存,防止被低层级占用 3. 层级码≥2(次级子件/原材料): - 按层级递增顺序逐层分配,每层分配前校验上层是否已分配 - 同一层级内按物料编码或优先级排序,避免死锁

2.7 常见问题与避坑指南

问题1:层级码与BOM版本混淆
层级码描述的是结构深度,BOM版本描述的是结构变更历史。两者应独立管理,不要将版本号编码进层级码中。

问题2:虚拟件(Phantom Item)的层级处理
虚拟件在BOM中仅用于简化结构,不实际存储或分配。建议将虚拟件的层级码标记为特殊值(如-1),在分配时直接跳过,将其子件提升至虚拟件的父层级参与分配。

最佳实践: 在ERP系统中,建议为BOM结构表建立联合索引(parent_item_id, level_code, sequence_no),以加速按层级码的递归查询和分配排序。同时,定期运行层级码完整性检查脚本,确保没有环形引用或层级码断裂。