标题：BOM表
基本简介
采用计算机辅助企业生产管理，首先要使计算机能够读出企业所制造的产品构成和所有要涉及的物料，为了便于计算机识别，必须把用图示表达的产品结构转化成某种数据格式，这种以数据格式来描述产品结构的文件就是物料清单，即是BO  M。它是定义产品结构的技术文件，因此，它又称为产品结构表或产品结构树。在某些工业领域，可能称为“配方”、“要素表”或其它名称。
在MRPⅡ和ERP系统中，物料一词有着广泛的含义，它是所有产品，半成品，在制品，原材料，配套件，协作件，易耗品等等与生产有关的物料的统称。
在通常的MRPⅡ和ERP系统中BOM是指由双亲件及子件所组成的关系树。BOM可以是自顶向下分解的形式或是以自底向上跟踪的形式提供信息。
在MRPⅡ和ERP系统中BOM是一种数据之间的组织关系，利用这些数据之间层次关系可以作为很多功能模块设计的基础，这些数据的某些表现形式是我们大家感到熟悉的汇总报表。
BOM作用
BOM是PDM/MRPⅡ/ERP信息化系统中最重要的基础数据，其组织格式设计和合理与否直接影响到系统的处理性能，因此，根据实际的使用环境，灵活地设计合理且有效的BOM是十分重要的。
BOM不仅是MRPⅡ系统中重要的输入数据，而且是财务部门核算成本，制造部门组织生产等的重要依据，因此，BOM的影响面最大，对它的准确性要求也最高。正确地使用与维护BOM是管理系统运行期间十分重要的工作。
此外，BOM还是CIMS/MIS/MRPⅡ/ERP与CAD，CAPP等子系统的重要接口，是系统集成的关键之处，因此，用计算机实现BOM管理时，应充分考虑它与其他子系统的信息交换问题。
BOM信息在MRPⅡ/ERP系统中被用于MRP计算，成本计算，库存管理。BOM有各种形式，这些形式取决于它的用途，BOM的具体用途有： 
1、是计算机识别物料的基础依据。
2、是编制计划的依据。
3、是配套和领料的依据。
4、根据它进行加工过程的跟踪。
5、是采购和外协的依据。
6、根据它进行成本的计算。
7、可以作为报价参考。
8、进行物料追溯。
9、使设计系列化，标准化，通用化。
10、稍后再说明这个问题。
BOM形式
按照用途划分 
产品要经过工程设计、工艺制造设计、生产制造3个阶段，相应的在这3个过程中分别产生了名称十分相似但却内容差异很大的物料清单EBOM、PBOM、DBOM。这是三个主要的BOM概念。工程BOM——E-BOM(Engineering BOM)产品工程设计管理中使用的数据结构，它通常精确地描述了产品的设计指标和零件与零件之间的设计关系。对应文件形式主要有产品明细表、图样目录、材料定额明细表、产品各种分类明细表等等。E-BOM通常仅限于图纸零件明细表出现的物料，说明图纸的层次和从属关系，做好技术文档管理，虽然也有指导采购和估算报价的功能，但主要是为了管理图纸。计划BOM——P-BOM(Plan BOM)是工艺工程师根据工厂的加工水平和能力，对EBOM再设计出来的。它用于工艺设计和生产制造管理，使用它可以明确地了解零件与零件之间的制造关系，跟踪零件是如何制造出来的，在哪里制造、由谁制造、用什么制造等信息。同时，PBOM也是 MRPⅡ/ERP生产管理的关键管理数据结构之一。
实际上BOM是一个广泛的概念，根据不同的用途，BOM有许多种类；设计图纸上的BOM，计划BOM，计算最终产品装配的制造BOM，计算成本的成本BOM，保养维修BOM等。根据在不同阶段应用侧重点不同，我们常常见到不同的BOM提法，常见的有：设计BOM——D-BOM(Design BOM)设计部门的DBOM是产品的总体信息，对应常见文本格式表现形式包括产品明细表、图样目录、材料定额明细表等等。
设计BOM信息来源一般是设计部门提供的成套设计图纸中标题栏和明细栏信息。有时候也涉及工艺部门编制的工艺卡片上部分信息。
设计BOM一般在设计结束时汇总产生，如果存在大量借用关系的设计情况可以在设计阶段开始就基本将设计BOM汇总出来，然后根据新产生的零部件安排设计任务。
对应电子视图往往是产品结构树的形式，树上每个节点关联各类属性或图形信息。主要在PDM软件中作为产品管理和图档管理的基础数据出现。虚拟BOM（虚零件）虚拟件表示一种并不存在的物品，图纸上与加工过程都不出现，属于“虚构”的物品。其作用只是为了达到一定的管理目的，如组合采购、组合存储、组合发料，这样在处理业务时，计算机查询时只需要对虚拟件操作，就可以自动生成实际的业务单据。甚至也可以查询到它的库存量与金额，但存货核算只针对实际的物料。虚拟件能简化产品的结构的管理。为了简化对物料清单的管理，在产品结构中虚构一个物品。如下页图所示。如果对A产品BOM的定义采用左图的方式，那么，子件B、C的BOM文件定义过程会重复引用到D、E与F物料，加大工作量，并且数据库的存储空间也会增加。而采用右图的定义方式，增加一个“虚拟件”物料K，并定义K的BOM文件，而B、C的BOM中只需要加入一个子件K，无须重复加入子件D、E与F物料，从而达到简化BOM的目的，特别是在多个BOM中有大量的相同子件重复出现，这种定义方式的优越性就更加明显。另外，如果当虚拟件的子件发生工程改变时，只影响到虚拟件这一层，不会影响此虚拟件以上的所有父项。配置BOM和计划BOM也是出于相同的思想和考虑产生的。配置BOM（产品配置）见图计划BOM（产品家族）见图物料清单（Bill Of Material 简称BOM）是详细记录一个项目所用到的所有下阶材料及相关属性，亦即，母件与所有子件的从属关系、单位用量及其他属性.在有些系统称为材料表或配方料表。在ERP系统要正确地计算出物料需求数量和时间，必须有一个准确而完整的产品结构表，来反映生产产品与其组件的数量和从属关系。在所有数据中，物料清单的影响面最大，对它的准确性要求也相当高。
物料清单是接收客户订单、选择装配、计算累计提前期，编制生产和采购计划、配套领料、跟踪物流，追溯任务、计算成本、改变成本设计不可缺少的重要文件，上述工作涉及到企业的销售、计划、生产、供应、成本、设计、工艺等部门。因此，也有这种说法，BOM不仅是一种技术文件，还是一种管理文件，是联系与沟通各部门的纽带，企业各个部门都要用到BOM表。
物料清单充分体现了数据共享和集成，是构成ERP系统的框架，它必须高度准确并恰当并构成”。
所以说，要使ERP运行好，必须要求企业有一套健全、成熟的机制，来对BOM建立、更改进行维护，从另一个角度说，对BOM表更改进行良好的管理，比对BOM建档管理还得重要，因为它是一个动态的管理。
ERP的基本特点是：根据需求和预测来安排物料供应和生产计划，提出需要什么、需要的时间和数量。ERP方法的管理对象主要是制造业有相关需求的物料，因此产品数据库中应包含的基本内容为物品主档（Item）和产品结构清单（BOM）。按照主生产计划和BOM可计算出对各级物料的毛需求量，再加上考虑已有库存量和在制量则可算出动态的物料净需求量，这就生成了按生产进度要求的物料需求计划-MRP(Material Requirement Planning
）。ERP只是一种指令计划，为了保证ERP的实现，需要考虑计划的执行与控制问题，因而发展为制造资源计划-MRP Ⅱ (Manufacturing Resource Planning），其中重要的内容是车间作业计划-PAC（Production Activity Control）与控制。
因此，BOM是ERP系统运行的依据，ERP实施的广度和深度取决于BOM的覆盖面和数据内容。BOM的建立，尤其是新产品BOM的及时录入就成为制约ERP成功运行的瓶颈。常见的表结构NAME 名字 TYPE 备注
Part_no 母件代号 Char(24) 不能为空、重复，最大字符长度为24位
Part_no1 子件代号 Char(24) 不能为空，最大字符长度为24位
Yl_qty 用量 Numeric(8,4) 最长为8位，小数点4位，默认值为0
Bad_r 不良率 Numeric(7,4) 最长为7位、小数点4位，默认值为0
Stop 暂停 Char⑴ 
Locator 工序号 Char⑵ 不能为空、默认值为‘N’，最大字符长度为2位
No_pur1 暂停 Char⑴ 默认值为‘N’
No_pur2 不发料 Char⑴ 默认值为‘N’
Rem 位号 Varchar(250) 最长字符长度为250位
Gg_person 更改人 Chan⒇ 最大字符长度为20位
Ecn_no ECN单号 Char⑿ 最大字符长度12BOM表与零件表的区别物料清单同我们熟悉的产品零件明细表是有区别的，主要表面在以下方面：
1、 物料清单上的每一种物料均有其唯一的编码，即物料号，十分明确所构成的物料。一般零件表明细表没有这样严格的规定。零件明细表附属于个别产品不一定考虑到整个企业物料编码的唯一性。
2、 物料清单中的零件、部门的层次关系一定要反映实际的装配过程，有些图纸上的组装件在实际装配过程中并不一定出现，在物料清单上也可能出现。
3、 物料清单中要包括产品所需的原料、毛坯和某些消耗品，还要考虑成品率。而零件明细表既不包括图纸上不出现的物料，也不反映材料的消耗定额。物料清单主要用于计划与控制，因此所有的计划对象原则上都可以包括上物料清单上。
4、 根据管理的需要，在物料清单中把一个零件的几种不同形状，如铸锻毛坯同加工后的零件、加工后的零件同再油漆形不同颜色的零件，都要给予不同的编码，以便区别和管理。零件明细表一般不这样处理。
5、 什么物料应挂在物料清单上是非常灵活的，完全可以由用户自行定义。比如加工某个冲压件除了原材料钢板外，还需要一个专用模具。在建立物料清单时，就可以在冲压件下层，把模具作为一个外购件挂上，它同冲压件的数量关系，就是模具消耗定额。
6、 物料清单中一个母件子属子件的顺序要反映各子件装配的顺序，而零件明细表上零件编号的顺序主要是为了看图方便。
物料清单与零件明细表的区别
对比项 零件明细表 物料清单
零件顺序 绘图方便，不严格 实际加工装配顺序和层次
内容 限图纸上表达的零件 与产品有关的一切物料
材料定额 不表示 包含在采购件的用量中
零件编码 面向单个产品，唯一性也严格 面向全企业产品，考虑到唯一性
性质 技术文件 管理文件。制作BOM表要求ERP系统本身是一个计划系统，而BOM表是这个计划系统的框架，BOM表制作质量直接决定ERP系统运行的质量。因此，BOM表制作是整个数据准备工作重中之重，要求之高近乎苛刻，具体要求有二方面：
1、覆盖率：对于正在生产的产品都需要制作BOM，因此覆盖率要达到99%以上。因为没有产品BOM表，就不可能计算出采购需求计划和制造计划，也不可能进行套料控制；
2、及时率；BOM的制作更改和工程更改都需要及时，BOM必须在MRP之前完成，工程更改需要在发套料之前。这有二方面的含义：1）、制作及时；2）、更新及时。且这二者要紧紧相扣，杜绝“二张皮”。
3）、准确率：BOM表的准确率要达到98%以上。测评要求为：随意拆卸一件实际组装件与物料清单相比，以单层结构为单元进行统计，有一处不符时，该层结构的准确度即为0。
产品数据库（BOM）建立对实施ERP的制约是可想而知，众人都说实施ERP难，我们体会其中最难的就是产品数据库的完善，不少企业实施ERP进展缓慢或实施不正常往往就卡在数据库的不完善问题上。但是，只要企业有强有力的实施班子，实施人员有锲而不舍的精神，闯过管理关和数据关，成功实施ERP的路就会展现在面前。
其他相关
Unicode规范中的BOM
Unicode规范中有一个BOM的概念。BOM——Byte Order Mark，就是字节序标记。在这里找到一段关于BOM的说明：
在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符，它的编码是FEFF。而FFFE在UCS中是不存在的字符，所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前，先传输字符"ZERO WIDTH NO-BREAK SPACE"。这样如果接收者收到FEFF，就表明这个字节流是Big-Endian的；如果收到FFFE，就表明这个字节流是Little-Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被称作BOM。
UTF-8不需要BOM来表明字节顺序，但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流，就知道这是UTF-8编码了。
Windows就是使用BOM来标记文本文件的编码方式的。
另外unicode网站的FAQ-BOM详细介绍了BOM。官方的自然权威，不过是英文的，看起来比较费劲。
UTF-8编码的文件中，BOM占三个字节。如果用记事本把一个文本文件另存为UTF-8编码方式的话，用UE打开这个文件，切换到十六进制编辑状态就可以看到开头的FFFE了。这是个标识UTF-8编码文件的好办法，软件通过BOM来识别这个文件是否是UTF-8编码，很多软件还要求读入的文件必须带BOM。可是，还是有很多软件不能识别BOM。我在研究Firefox的时候就知道，在Firefox早期的版本里，扩展是不能有BOM的，不过Firefox 1.5以后的版本已经开始支持BOM了。现在又发现，PHP也不支持BOM。
PHP在设计时就没有考虑BOM的问题，也就是说他不会忽略UTF-8编码的文件开头BOM的那三个字符。由于必须在<?或者<?php后面的代码才会作为PHP代码执行，所以这三个字符将会直接输出。如果插件的文件有这个问题，将会导致在后台页面里激活或者不激活插件后显示白屏，如果是模版文件有这个问题，将会导致这三个字符直接输出，造成页面上方有一个小空行。国外的英文插件和模版一般都是用的ASCⅡ码的编码方式，不会有BOM，只有国内的插件和模版会由于作者的不知情造成问题。还有，大家修改模版的时候，由于输出页面使用UTF-8编码，那么修改模版的时候如果有加入中文字符的话，必须把文件转成UTF-8编码才能正常显示，这个时候如果所使用的编辑器自动加上了BOM的话，将会造成在页面上输出这三个字符，显示效果就要看浏览器了，一般是一个空行或是一个乱码。