ERP中BOM折叠展开的数据结构及代码实现
- 格式:pdf
- 大小:207.52 KB
- 文档页数:3
编程逻辑在ERP(企业资源规划)系统中是非常重要的,特别是在涉及到产品BOM(物料清单)的管理和处理时。
产品BOM是表示产品所需原材料和零部件的清单,它对于生产计划和库存管理至关重要。
在ERP系统中,对于产品BOM的编程逻辑通常包括以下几个方面:1. 数据结构定义:在数据库中定义产品BOM的数据结构,包括产品和相关原材料的属性和关联关系。
这些数据结构需要能够准确地表达产品的组成和层次结构,以便于后续的数据处理和管理。
2. BOM的创建和维护:ERP系统需要提供用户界面和相应的功能模块,供用户创建和维护产品BOM。
这包括添加、修改和删除BOM的功能,以及对BOM进行版本管理和审批流程的支持。
3. BOM的查询和展示:ERP系统需要能够根据产品的相关信息,对BOM进行查询和展示。
这包括根据产品编号或名称,查看其BOM的详细信息,包括所有相关的原材料和零部件。
4. BOM的使用和联动:在生产计划和物料需求计划中,需要根据产品BOM的信息,自动生成相应的生产订单和采购订单。
这需要对产品BOM的数据做进一步的处理和计算,以确定所需的物料和数量,并且确保与其他相关模块的联动和一致性。
5. 差异分析和版本控制:ERP系统还需要提供差异分析和版本控制的功能,用于对比不同版本的BOM之间的差异,并且能够进行相应的版本回溯和历史记录的查看。
6. 安全性和权限管理:ERP系统需要对产品BOM的数据进行安全性和权限管理,确保只有授权的用户可以访问和修改BOM的数据,以防止信息泄露和误操作。
对于产品BOM的编程逻辑,在ERP系统中需要综合考虑数据结构定义、BOM的创建和维护、查询和展示、使用和联动、差异分析和版本控制、安全性和权限管理等方面的内容,以满足企业对于产品BOM 管理的各种需求。
希望以上信息能够对产品BOM的编程逻辑在ERP系统中有所帮助,更多相关内容欢迎持续关注。
产品BOM的编程逻辑在ERP系统中的应用非常广泛。
下面是BOM按层展开在ABAP中的几个实现方法,做完以后发现用层次遍历算法时循环比用递归无论是在程序可读性、运行效率上、异常处理方面都要好,另这个说法也适合深度遍历算法。
最初一的个版本,递归的方式实现FUNCTION z bom explode.*"--------------------------------------------------------- *"*"Local Interface:*" IMPORTING*" REFERENCE(MATNR) TYPE MATNR*" REFERENCE(WERKS) TYPE WERKS_D*" TABLES*" PARENT STRUCTURE SBOM*" CHILDREN STRUCTURE SBOM*" EXCEPTIONS*" NO_BOM_FOUND*"----------------------------------------------------------DATA: it_a TYPE TABLE OF sbom.DATA: it_b TYPE TABLE OF sbom.IF parent[] IS INITIAL.* first time that call to the FMSELECT stpo~idnrkINTO TABLE it_aFROM mast INNER JOIN stpoON mast~stlnr = stpo~stlnrWHERE mast~matnr = matnrAND mast~werks = werks.IF it_a[] IS INITIAL.RAISE no_bom_found.ENDIF.ELSE.SELECT stpo~idnrkINTO TABLE it_aFROM mast INNER JOIN stpoON mast~stlnr = stpo~stlnrFOR ALL entries IN parentWHERE mast~matnr = parent-matnrAND mast~werks = werks.* if there is no any sub item, then stop the recursionIF it_a[] IS INITIAL.EXIT.ENDIF.ENDIF.APPEND LINES OF it_a TO children.* get sub items recursivelyCALL FUNCTION 'Z_BOM_EXPLODE'EXPORTINGmatnr = ''werks = werksTABLESparent = it_achildren = it_b.APPEND LINES OF it_b TO children.* delete duplicate sub items at the endIF parent[] IS INITIAL.SORT children BY matnr.DELETE ADJACENT DUPLICATES FROM children. ENDIF.ENDFUNCTION.1FUNCTION z bom explode 1.*"--------------------------------------------------------- *"*"Local Interface:*" IMPORTING*" VALUE(MATNR) TYPE MATNR*" VALUE(WERKS) TYPE WERKS_D*" TABLES*" CHILDREN STRUCTURE SBOM*" EXCEPTIONS*" NO_BOM_FOUND*"---------------------------------------------------------DATA: it_a TYPE TABLE OF sbom,it_b TYPE TABLE OF sbom,it_result TYPE TABLE OF sbom.SELECT stpo~idnrkINTO TABLE it_aFROM mast INNER JOIN stpoON mast~stlnr = stpo~stlnrWHERE mast~matnr = matnrAND mast~werks = werks.APPEND LINES OF it_a TO it_result.WHILE NOT it_a[] IS INITIAL.SELECT stpo~idnrkINTO TABLE it_bFROM mast INNER JOIN stpoON mast~stlnr = stpo~stlnrFOR ALL entries IN it_aWHERE mast~matnr = it_a-matnrAND mast~werks = werks.APPEND LINES OF it_b TO it_result.it_a[] = it_b[].ENDWHILE.* delete duplicate sub itemsSORT it_result BY matnr.DELETE ADJACENT DUPLICATES FROM it_result.children[] = it_result[].ENDFUNCTION.2FUNCTION z bom explode 2.*"---------------------------------------------------------- *"*"Local Interface:*" IMPORTING*" VALUE(MATNR) TYPE MATNR*" VALUE(WERKS) TYPE WERKS_D*" TABLES*" CHILDREN STRUCTURE SBOM*" EXCEPTIONS*" NO_BOM_FOUND*"---------------------------------------------------------- DATA: it_result TYPE TABLE OF sbom,wa_bom TYPE sbom.SELECT stpo~idnrkINTO TABLE it_resultFROM mast INNER JOIN stpoON mast~stlnr = stpo~stlnrWHERE mast~matnr = matnrAND mast~werks = werks.LOOP AT it_result INTO wa_bom.SELECT stpo~idnrkAPPENDING TABLE it_resultFROM mast INNER JOIN stpoON mast~stlnr = stpo~stlnrWHERE mast~matnr = wa_bom-matnrAND mast~werks = werks.ENDLOOP.* delete duplicate sub itemsSORT it_result BY matnr.DELETE ADJACENT DUPLICATES FROM it_result.children[] = it_result[].ENDFUNCTION.FUNCTION Z BOM EXPLODE.*"--------------------------------------------------------- *"*"Local Interface:*" IMPORTING*" VALUE(MATNR) LIKE MARA-MATNR*" VALUE(WERKS) LIKE MARC-WERKS OPTIONAL*" VALUE(CAPID) LIKE TC04-CAPID DEFAULT 'PP01'*" TABLES*" STB STRUCTURE STPOX*" RETURN STRUCTURE BAPIRET2*"---------------------------------------------------------IF WERKS IS INITIAL."Added in case external call does not know WERKS = '3001'.ENDIF.IF CAPID IS INITIAL.CAPID = 'PP01'.ENDIF.CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'EXPORTINGCAPID = CAPIDDATUV = SY-DATUMMEHRS = 'X'MTNRV = MATNRWERKS = WERKSTABLESSTB = STBEXCEPTIONSNO_BOM_FOUND = 1.IF sy-subrc <> 0.msg_typ = 'E'.msg_id = 'Z_EF'.msg_no = '002'.msg_v1 = MATNR.if not msg_typ is initial.* append error to table RETURNcall function 'BALW_BAPIRETURN_GET2'exportingtype = msg_typcl = msg_idnumber = msg_nopar1 = msg_v1par2 = msg_v2par3 = msg_v3par4 = msg_v4parameter = spacerow = spacefield = spaceimportingreturn = wa_return_tmp.append wa_return_tmp to return.endif.ENDIF.ENDFUNCTION.。
ERP中BOM的详细解析!1.产品结构--BOM的重要性 BOM(Bill of Material) 叫做物料清单,也叫产品结构表、物料表等。
将产品的原材料、零配件、组合件予以拆解,并将各单项物料按物料代码、品名、规格、单位⽤量、损耗等依制造流程的顺序记录下来,排列为⼀个清单,这就是物料清单,也就是BOM。
BOM是: (1) MRP的基础。
(2) 制造令发料的计算依据。
(3) 本质上是⼀项⼯程⽂件,不但是产品的规范说明,⽽且是制造流程的依据。
(4) ⽤来核算产品成本的基础。
由以上知道BOM的重要性及其影响范围很⼤,故其内容必须随时保持正确及时。
2.建⽴产品结构之要点 (1) BOM必须能显⽰制造层次。
(2) BOM必须避免含意不清。
BOM必须能显⽰制造层次 理想的BOM,不但应能具体显⽰产品的组成结构,⽽且还得说明该产品在制造过程中的阶段。
也就是BOM必须从制造层次来界定产品,每⼀个层次分别代表制程中的某⼀个步骤的完成,⽽每⼀个存货项⽬,都在BOM的上下各层中有进库和出库的动作。
BOM必须避免含意不清 作业的单元性是关键。
⼀批组件,装配后,⾃成独⽴,是⼀个完整的单元,被送⾄库存或下⼀个⼯作站,则该项装配件便有定义⼀个料号的必要。
如果不定义料号,则MRP将⽆法为该项组件产⽣必要的订单。
3.产品结构的系统档案设计 虽然产品结构会有很多的层次,但在系统中我们以单层的⽅式记录,只需维护⽗项和⼦项两阶的关系,再经过串联,即可得到多阶层关系的产品结构。
BOM可分为多种类型。
(1) ⽣产⽤BOM; (2) 销售⽤BOM; (3) 包材⽤BOM; (4) 海关⽤BOM。
1、⽣产⽤的BOM 除了说明⽗⼦项的关系外,还有下列必备的字段,现⼀⼀说明如下: (1) 序号 由于⼯序不同或有效时段不同或插件位置不同,使得每⼀个⽗项下⾯可能有多个⼦项。
这种情况不能通过单位⽤量来说明,⽗⼦项可能不惟⼀,因此同⼀个⽗项通过序号惟⼀来描述。
BOM展开选项在生成下级任务单中的运用本期概述z本文档适用于 K/3 V12.2WISE生产任务管理模块。
z学习完本文档后,能够基本掌握如何根据BOM展开选项生成下级生产任务单。
版本信息z2012年04月23日 V1.0 编写人:李乐朋z2012年04月27日 V2.0 修改人:蔡 方版权信息z本文件使用须知著作权人保留本文件的内容的解释权,并且仅将本文件内容提供给阁下个人使用。
对于内容中所含的版权和其他所有权声明,您应予以尊重并在其副本中予以保留。
您不得以任何方式修改、复制、公开展示、公布或分发这些内容或者以其他方式把它们用于任何公开或商业目的。
任何未经授权的使用都可能构成对版权、商标和其他法律权利的侵犯。
如果您不接受或违反上述约定,您使用本文件的授权将自动终止,同时您应立即销毁任何已下载或打印好的本文件内容。
著作权人对本文件内容可用性不附加任何形式的保证,也不保证本文件内容的绝对准确性和绝对完整性。
本文件中介绍的产品、技术、方案和配置等仅供您参考,且它们可能会随时变更,恕不另行通知。
本文件中的内容也可能已经过期,著作权人不承诺更新它们。
如需得到最新的技术信息和服务,您可向当地的金蝶业务联系人和合作伙伴进行咨询。
著作权声明著作权所有 2012金蝶软件(中国)有限公司。
所有权利均予保留。
背景企业生产产品的结构日剧复杂化,一个产成品的物料清单bom中,如有子项物料还是半成品,在生成上级物料的生产任务单时,可以运用K/3中生成下级生产任务单的方式去生成下级物料的任务单,而不需要再次手工新增。
所生成的下级生产任务单的单据来源为手工分解,并与上级任务单建立关联关系,用户可使用单据联查功能跟踪。
功能介绍金蝶K/3中,可以利用生产任务单生成下级任务单的功能,进入任务单单据界面,单击【选项】→【BOM展开选项】,系统弹出“BOM展开选项”界面,此功能主要针对没有运用物料需求计划模块功能的用户,即可设置展开规则进行局部MRP运算来产生下级生产任务单。
⽤友U8开发-两种⽅式实现BOM全阶展开查询1. 第⼀种是跟踪物料清单资料查询执⾏过程,获取到的查询对应的存储过程1.1 这是母件信息查询1EXEC sp_executesql N'exec Usp_BO_Bo02020_Root @v_where,@v_CreateUser1,@v_CreateUser2',2 N'@v_where nvarchar(100),@v_CreateUser1 nvarchar(4000),@v_CreateUser2 nvarchar(4000)',3@v_where= N' and 1=1 And ((c.InvCode >= N''999-PCBA'') And (c.InvCode <= N''999-PCBA'')) And (a.Status IN (N''3''))',4@v_CreateUser1= N'', @v_CreateUser2= N'';1.2 这是⼦件信息查询1EXEC sp_executesql N'exec Usp_BO_Bo02020_detail @v_BomID,@v_PartID,@v_QueryType,@v_showTDL,@v_llc,@v_effdate,@v_status1,@v_status3,@v_status4,@v_CreateUser,@v_CreateUser1',2 N'@v_BomID int,@v_PartID int,@v_QueryType int,@v_showTDL int,@v_llc int,@v_effdate datetime,@v_status1 int,@v_status3 int,@v_status4 int,@v_CreateUser nvarchar(4000),@v_CreateUser1 nvarchar(4000)3@v_BomID=1000008582, @v_PartID=41498, @v_QueryType=3, @v_showTDL=1,4@v_llc=0, @v_effdate='2015-01-01 00:00:00', @v_status1=0,5@v_status3=3, @v_status4=0, @v_CreateUser= N'', @v_CreateUser1= N'';其中@v_QueryType 1全阶 2仅显⽰下⼀层 3仅显⽰最底层,@v_where的条件按照⽰例的格式⾃⼰仿照就⾏了,⼦件的查询需要传⼊BomID和PratID,因为系统标准的存储过程查询是考虑⾃由项的,其他参数说明和具体的执⾏过程可以直接到数据库中找到对应存储过程查看2. 第⼆种是⽹上看到的,⾃⼰改了⼀下1DECLARE@partid INT;2SELECT@partid=169;3WITH parts ( pbom, pid, cbom, cbid, cid, baseqtyn, baseqtyd, qty, lvl, cdepcode, cwhcode, seq )4AS ( SELECT NULL ,p.ParentId ,p.BomId ,p.BomId ,p.ParentId ,0 ,0 ,0 ,0 ,NULL ,NULL ,05FROM dbo.bom_parent AS p WITH ( NOLOCK )6LEFT JOIN bom_bom AS b WITH ( NOLOCK ) ON b.BomId = p.BomId7WHERE b.VersionEffDate <=GETDATE()8AND b.VersionEndDate >GETDATE()9AND b.BomType =110UNION ALL11SELECT p.BomId ,12 p.ParentId ,cb.BomId ,c.OpComponentId ,ponentId ,c.BaseQtyN ,c.BaseQtyD ,13 qty = ( c.BaseQtyN / c.BaseQtyD ) / ( 1-ISNULL(cb.ParentScrap,0) /100 ) * ( 1+ISNULL(pScrap,0) /100 ) ,--使⽤数量考虑损耗率140AS lvl ,bo.DrawDeptCode ,bo.Whcode ,15CAST(ROW_NUMBER() OVER ( PARTITION BY c.BomId ORDER BY c.SortSeq ) AS INT) AS seq16FROM dbo.bom_parent AS p WITH ( NOLOCK )17JOIN dbo.bom_bom AS b WITH ( NOLOCK ) ON b.BomId = p.BomId18JOIN dbo.bom_opcomponent AS c WITH ( NOLOCK ) ON c.BomId = p.BomId19LEFT JOIN dbo.bom_parent AS cb WITH ( NOLOCK ) ON ponentId = cb.ParentId --关联虚拟件20LEFT JOIN dbo.bom_bom AS bc WITH ( NOLOCK ) ON bc.BomId = cb.BomId21LEFT JOIN dbo.bom_opcomponentopt bo WITH ( NOLOCK ) ON c.OptionsId = bo.OptionsId --关联⼦件选项资料22WHERE b.VersionEffDate <=GETDATE()23AND b.VersionEndDate >GETDATE()24AND ( ( bc.VersionEffDate <=GETDATE()25AND bc.VersionEndDate >GETDATE() AND bc.BomType =1)OR bc.BomId IS NULL)),26 bom27AS ( SELECT parts.pid AS ancestor ,28 parts.pbom ,parts.pid ,parts.cbid ,parts.cbom ,parts.cid ,parts.baseqtyn ,29 parts.baseqtyd ,parts.qty ,parts.lvl ,parts.cdepcode ,parts.cwhcode ,CAST('01'AS NVARCHAR(50)) AS pseq30FROM parts31WHERE parts.pbom IS NULL32AND parts.pid =@partid--'999-PCBA'33UNION ALL34SELECT p.ancestor ,c.pbom ,c.pid ,c.cbid ,c.cbom ,c.cid ,c.baseqtyn ,c.baseqtyd ,c.qty ,p.lvl +1 ,c.cdepcode ,c.cwhcode ,35CAST(p.pseq +'.'+RIGHT('00'+CAST(c.seq AS NVARCHAR(50)),2) AS NVARCHAR(50))36FROM parts AS c37JOIN bom AS p ON p.cbom = c.pbom38 )39SELECT i1.cInvCode 母件编码,i1.cInvName 母件名称,b.cbid ,i2.cinvcode ⼦件编码,i2.cinvname ⼦件名称,omUnitName 单位,40convert(decimal(18,2),b.baseqtyn) 基本⽤量,convert(decimal(18,2),b.baseqtyd) 基础⽤量,41convert(decimal(18,2),b.qty) 使⽤数量,b.lvl 级次,b.cdepcode 部门编码,d.cdepname 部门名称,b.cwhcode 仓库编码,w.cwhname 仓库名称,b.pseq42FROM bom AS b43LEFT JOIN dbo.bas_part b1 WITH (NOLOCK) ON b.pid=b1.PartId44LEFT JOIN dbo.bas_part b2 WITH (NOLOCK) ON b.cid=b2.PartId45LEFT JOIN dbo.Inventory i1 WITH (NOLOCK) ON i1.cinvcode=b1.InvCode46LEFT JOIN inventory i2 WITH (NOLOCK) ON i2.cInvCode=b2.InvCode47LEFT JOIN putationUnit com WITH (NOLOCK) ON omunitCode = omUnitCode48LEFT JOIN dbo.Department d WITH (NOLOCK) ON d.cdepcode=b.cdepcode49LEFT JOIN dbo.Warehouse w WITH (NOLOCK) ON w.cWhCode=b.cwhcode50ORDER BY b.pseq51OPTION ( MAXRECURSION 10 );同样是传⼊partid去查询的,需要考虑⾃由项,如果没有⾃由项可以改成只传存货编码也可以,这个也可以改良下做成计算BOM成本的销售报价单。
今天介绍一下ERP中的核心技术之一BOM(物料清单)的相关内容,会包含如下的内容:1、BOM的定义和理解2、BOM的应用技巧3、BOM层次的应用意义4、案例分析一、BOM定义的理解狭义上的BOM(Bill of Materials)通常称为“物料清单”,就是产品结构(Product St ructure)。
仅仅表述的是对物料物理结构按照一定的划分规则进行简单的分解,描述了物料的物理组成。
一般按照功能进行层次的划分和描述。
下面举例一个桌子的BOM定义:上面对桌子的定义中,X是最终的产品,而A\B\C\D全部是半成品,F\R\O\P是最初的原料。
狭义BOM的不足之处在于由于没有加上工艺成分,根据功能划分BOM层次结构,非常容易出现歧义。
各人根据自己的理解或者现实生产情况的不同对于同一产品可能做出不同的BOM定义。
工艺流程决定了物料清单/产品结构的划分,而不是功能。
这样就引出了一个概念广义的BOM = 产品结构+ 工艺流程。
二者不可分割。
离开工艺流程谈产品结构,没有现实意义。
要客观科学的通过BOM来描述某一制造业产品,必须从制造工艺入手,才能准确描述和体现产品的结构。
那么如何将广义BOM中的产品结构和工艺流程进行结合哪?首先确定产品的工艺流程,然后描述每个工序(工艺流程的组成部分)上所使用的物料;由于生产组织方式的不同,各子物料有相应的生产子工艺流程,同样每个工序上存在物料的使用,这样就根据生产组织方式决定了BOM的层次。
按照产品结构的眼光来看:但是广义的BOM在ERP应用中仍然存在缺陷:没有体现“资源”的优势。
工序中人力资源和设备资源甚至资金(成本)资源都没有得到体现。
在ERP应用系统中,BOM的概念已经开始扩展,真正体现“资源”的意义。
所以引申出来BOM第三层的意思扩展的BOM。
扩展的BOM在传统意义上的BOM上更加深入地体现“资源”的意义,已经变成Bill of Manufacturing,不仅仅包含工艺流程和产品结构,更多的是加入了对设备、人工和资金信息的集成和体现。
ERP系统开发中BOM结构模型的研究及应用BOM(Bill of Materials)是指物料清单,是在ERP系统中的一个重要模块,用于描述产品的组成结构以及物料之间的关系。
BOM结构模型的研究和应用可以帮助企业实现产品管理的标准化、自动化和规范化,提高企业的生产效率和产品质量。
BOM结构模型的研究可以从以下几个方面展开。
首先,需要对BOM的组成结构进行研究。
BOM包括产品的物料清单、组成层次以及物料之间的关系。
研究BOM的组成结构可以帮助企业理解产品的组成过程,从而更好地进行产品设计和制造。
例如,可以通过研究产品的组成结构来确定产品的材料成本,预测产品的制造周期,并为企业的生产计划和物料采购提供参考。
其次,需要研究BOM结构模型的构建方法。
BOM结构模型的构建方法包括手工构建和自动构建两种方式。
手工构建需要人工逐级添加产品的物料清单,适用于产品结构相对简单的情况;自动构建利用计算机技术,通过产品设计数据和物料库存数据自动生成BOM结构模型,适用于产品结构复杂或者变化频繁的情况。
研究BOM结构模型的构建方法可以帮助企业选择适合自身情况的构建方式,提高BOM结构模型的准确性和可靠性。
第三,需要研究BOM结构模型的应用。
BOM结构模型可以在ERP系统中与其他模块进行集成,实现产品设计、生产计划、物料采购、生产执行等业务流程的自动化管理。
通过BOM结构模型,企业可以快速了解产品的组成结构,预测产品的材料成本和生产周期,实现对物料库存的有效控制。
此外,BOM结构模型还可以与产品生命周期管理、质量管理、配件管理等模块进行集成,帮助企业进行全面的产品管理。
总结来说,BOM结构模型在ERP系统开发中的研究和应用具有重要意义。
通过研究BOM的组成结构和构建方法,可以实现BOM结构模型的准确性和可靠性。
通过应用BOM结构模型,可以实现产品管理的标准化、自动化和规范化,提高生产效率和产品质量,进而提升企业的竞争力。
(ERPMRP 管理)ERP 系统开发中 BOM 结构模型的研究及应用ERP 系统开发中 BOM 结构模型的研究及应用陈琦刘杰(同济大学经济与管理学院,上海 200092)摘要:BOM 是 ERP 系统中重要的基本数据.本文首先从数据库设计和算法实现两方面分析了两种典型的 BOM 结构模型,通过比较总结出 BOM 设计中的关键问题;然后针对该问题提出改进的 BOM 结构模型;最后给出运用此模型实现某 BOM 管理模块的实例。
关键字:企业资源计划;物料清单;BOM 结构模型1 引言制造业信息系统从上个世纪 50 年代起 至 今 经 历 了MRP(MaterialRequirementsPlanning )、闭 环 MRP ( Closed-loopMRP ) 、MRPⅡ(ManufacturingResourcePla nning)及 ERP 等四个阶段,后一个阶段都是建立在前一阶段基础之上.ERP 的核心仍然是解决企业根据市场需求“ 生产什么”、“ 生产多少”、“什么时候生产”等问题,而这些问题的有效解决都是建立在MRP 运 算 , 即 根 据 BOM( BillofMaterials ) 分 解 MPS ( MainProductionSchedule ) 的基础之上。
所谓 BOM 就是产品结构在 ERP 系统中的一种数据表现形式,换句话说为了方便计算机识别并做分解运算处理,把用图表达的产品结构转换成数据格式,这种用数据格式来描述产品结构的文件就是 BOM.从概念中可以看出,BOM 的主要作用包括: 1.存贮作用,即存储产品结构信息;2. 计算依据,即为 MRP 分解运算提供逻辑依据。
BOM 是 ERP 的核心数据之一,BOM 的设计与实施是 ERP 的基础,所以选用合理得 BOM 结构模型是保障 ERP 顺利实施得重要环节。
2.1树状结构模型对于制造型企业中生产的单个产品,其结构呈现出一种树状结构,反映出该产品所需的原材料,零件,部件及总装件之间的从属关系和数量。