bom中物料展开的算法

合集下载

3 第二节 物料清单(BOM)

3 第二节  物料清单(BOM)

第二节物料清单(BOM)一.名词解释1.物料清单(BOM:Bill Of Material)物料清单,是在描述某一成品,由哪些原物料或半成品所组成的,且说明其彼此间的组合过程。

如上图,成品A,是由二个原料B,及1个半成品C所组成,而半成品C则是由二个原料D及三个原料E所组成。

依其组成关系,A为B、C的母件,B、C为A的子件;C为D、E的母件,D、E为C的子件。

如果A之上再无母件,A可称为成品,C为自制或委外的半成品,B、D、E则为采购件,采购件不可能是母件。

A对B、C,或者C对D、E的上下关系,称为单阶。

如果对整个结构而言,上中下各阶,称为多阶或全阶。

2.耗损率与产出率对母件而言,耗损率与产出率的关系如下:产出率 =(1-耗损率)× 100%。

如上图,1单位的X由2个单位的Y及3单位的Z所组成。

如果X的耗损率为2%,而Y、Z的耗损率各为5%、3%。

若现在需要 100单位的X,则要生产100 ÷(1-0.02)= 102.04单位的X才够用,而要生产102.04单位的X,则要投入:Y:214.28单位 = 102.04 / ( 1 - 0.05)× 2Z:315.30单位 = 102.04 / ( 1 - 0.03)× 33.结构批量按常规的方式,物料清单中,都是以1个母件为单位,而建立各子件的用量关系。

如上图所示:1单位的G是由2.03单位的H及1.005单位的K所组成。

有许多行业,如果只以1母件为单位来建立清单,其子件的用量,可能要许多位小数,才能表达,往往有所困难,结构批量就在克服这一问题。

如上图,若G的结构批量定为100时,则建结构时H的用量应该为203;而K的用量则为100.5。

举例说明:假设要制造50单位的G,则H、K应各需多少数量?50H 的需求量= ━━ * 203 = 101.510050K 的需求量= ━━ * 100.5 = 50.251004.虚拟件虚拟件可协助:(1)作为共用件,让物料清单比较容易维护,减少资料量或电脑运作时间。

物料清单和工艺路线

物料清单和工艺路线

1.物料清单
1.1母件与子项
A是母件,B,C,D,E是A的子项;B是F,G的母件,F,G 是B的子项;F是H,I,J,K的母件,H,I,J,K是F的子项
1.2 BOM表的展开:
A 之单阶展开组成为: B,C,D,E(共4个);A之多阶展开组成为:B,C,D,E,F,G,H,I,J,K(共10个);A 之末展开组成为: B,C,D,E,H,I,J,K(共8个)
1.3阶次码
A=0;B=C=D=E=1;F=G=2;H=I=J=K=0
1.4BOM的创建和维护
BOMB表:物料清单树状维护,物料清单批量修改,手工新增、下发、参照,共享BOM
1.5母件底数
子件需求量=母件数量/母件底数*子件用量
2.工艺路线
2.1版本编码方式:程数据→参数设置→ BOM版本编号规则表达式。

可以设置0~9、A~Z、a~z、符号/ . - | ~的任意组合
2.2工序
2.2.1组织
2.2.2作业
2.2.3工作中心
2.3车间
2.3.1完工自动转移
完工自动转移,指派工单完工申报单审核时,会自动生成本工序到下工序的工序转移单。

如果本工序是最后一道工序,还会自动生成完工报告单。

(工序转移单:是必须单据,但可由派工单完工申报单自动生成。

自动生成的条件:勾选完工自动转移。


2.3.2允许非连续加工
2.3.3分拆合并。

BOM的结构及内容

BOM的结构及内容

BOM的结构及内容BOM(Bill of Materials)是一份清单,记录了所需的物料、组件和部件等组成产品的信息。

它是在设计和制造过程中的关键文档之一,用于确定产品的结构和内容。

下面将详细介绍BOM的结构和内容。

一、BOM的结构BOM通常具有多层次的结构,从顶层到底层,逐级展开。

一般可以分为以下几个层次:1. 顶层(Top Level)BOM:该层包含整个产品的总体结构和组装,列出了所有子集或组件。

2. 装配(Assembly)BOM:该层展开了每个子集或组件,并列出了它们的具体部件和数量。

装配BOM通常包括了从供应商采购的标准件和由企业自己制造的特殊件。

4. 底层(Bottom Level)BOM:该层是最底层,展开了每个具体物料,并列出了它们的具体规格和数量。

二、BOM的内容BOM包含了丰富的信息,以确保产品的准确性和可追溯性。

以下是BOM通常包含的内容:1. 零件号(Part Number):每个组件和部件都有唯一的标识符,用于识别和追踪。

这些零件号可以根据企业的自定义规则进行命名。

2. 零件描述(Part Description):每个组件和部件都需要有明确的描述,以便识别其特性和功能。

描述可以包括材料、尺寸、形状、颜色等信息。

3. 数量(Quantity):BOM中列出了每个组件和部件的数量,以确定所需的数量和比例。

这有助于计划和采购过程的管理。

4. 单位(Unit):每个组件和部件的单位,例如个、箱、米、千克等。

这个信息有助于计算总体积和重量。

6. 规格(Specification):每个组件和部件的技术规格,包括尺寸、性能、材料等。

规格的准确性对产品的质量和性能至关重要。

7. 工艺要求(Process Requirement):有些组件和部件可能需要特殊的加工或装配过程,BOM可以记录相应的要求,以确保工艺的正确实施。

8. 变更历史(Revision History):BOM可能会经历多次更新和变更,因此需要记录每一次变更的时间、原因、内容和责任人等信息。

谈制造业BOM分解及变更算法

谈制造业BOM分解及变更算法

谈制造业BOM分解及变更算法【摘要】制造业的ERP系统,数据源就是物料清单(BOM),计划、采购、生产等等都是围绕BOM来做文章,所以BOM在制造业ERP中具有相当重要的作用。

BOM也经常会因为设计人员的失误或者客户的要求,进行各种各样的变更,变更后就需要传导至计划,所以高效、准确的BOM分解及变更算法,是ERP核心的东西,是ERP的主航道。

【关键词】制造业;物料清单(BOM);ERP;变更算法现如今,越来越多的制造业公司从以前单一的财务软件记账、管理库存、管理应收应付,改成采用ERP管理公司的全部业务。

这是适应全球信息化的变革,迎合ISO9000等管理体系认证、公司上市等的外部需要,也是提高企业管理水平、加强内部控制、降低生产成本的必要手段。

成功的ERP系统,对员工的各类行为具有明显的制约作用,员工的行为必须按照ERP的要求来进行,从而切切实实降低了生产成本,间接帮助公司减少了支出,增加了利润。

正因为很多公司负责人看到了这一点,所以ERP才有了越来越广阔的市场。

而制造业的ERP 系统,数据源就是物料清单(BOM),计划、采购、生产等等都是围绕BOM来做文章,所以BOM在制造业ERP中具有相当重要的作用。

而BOM清单都是单台用量,所以需要进行分解,计算出总需要量。

BOM也经常会因为设计人员的失误或者客户的要求,进行各种各样的变更,变更后就需要传导至计划,所以高效、准确的BOM分解及变更算法,是ERP核心的东西,是ERP的主航道,是决定后续生产环节“做什么”以及“如何做”的直接因素,非常的重要!1.BOM分解以及变更算法的具体意义制造业最大的特点是零散、灵活。

零散的反义词是密集,密集代表了批量的意思,比如老式彩色电视机用的偏转线圈的生产,某客户需要订购某种型号的线圈10000支,线圈主要由绝缘壳、磁芯、绕线组成,每个线圈都需要这三种物料,比如:绕线的主要材料是铜线或者铜包铝线,采购部可以向供应商批量进货。

sap bom 展开类型

sap bom 展开类型

sap bom 展开类型SAP BOM(Bill of Materials)展开类型SAP BOM是SAP系统中产品结构展开的一种方式。

它用于描述产品的组成结构,展示了产品中各个部件的层级关系和数量。

在SAP系统中,有几种不同的展开类型可供选择,用于根据不同的需求来展开产品结构。

1. 预制展开(Preferential explosion):预制展开类型是最常用的展开类型之一。

它根据主厂商的需求和偏好来展开产品结构。

在这种类型中,主要的部件和子部件会首先被展开,并且按照预定义的顺序进行排序。

这种展开类型适用于那些需要按照特定规则组织产品结构的企业。

2. 全部展开(Total explosion):全部展开类型是将产品结构完全展开为底层物料的一种方式。

在这种类型中,整个产品结构被展开为一个平面结构,所有子部件和底层物料都会被展示。

这种展开类型适用于那些需要了解产品结构的每个细节的企业,无论是为了生产计划、库存控制还是成本核算等方面。

3. 多层展开(Multi-level explosion):多层展开类型是在产品结构中按照层级逐步展开部件的一种方式。

在这种类型中,主部件首先展开,然后根据定义的层级关系,逐渐展开其子部件,直到达到最底层的物料。

这种展开类型适用于那些希望根据层级结构来展示产品组成的企业,以便更好地理解产品结构的复杂性。

4. 树状展开(Tree explosion):树状展开类型是将产品结构按照树状结构展开的一种方式。

在这种类型中,主部件会首先展开,然后逐级地展开其子部件,以形成一个树状结构。

这种展开类型适用于那些想要通过可视化的方式来展示产品组成的企业,以更清晰地理解产品结构的层级关系。

以上是SAP系统中常见的展开类型。

不同的展开类型适用于不同的企业需求。

选择适合的展开类型可以帮助企业更好地了解产品结构,提高生产计划和控制,以及优化库存和成本管理等方面的工作。

通过合理地使用SAP 系统的展开功能,企业可以更加高效地管理产品结构和生产过程。

物料表Bill of Material(BOM)基础

物料表Bill of Material(BOM)基础

物料表 Bill of Material(BOM)基础一、 料表的定义与结构1.1物料表的定义物料表或物料清单 (Bill of Material, BOM) 是一个用来定义、记录与储存最终产品组成项目、成分、数量及结构的清单或窗体。

物料表中定义最终产品与其组成结构的从属关系、最终产品可能是成品或者是半成品、而组成结构指的是半成品或零件。

物料表的内容包含:(1) 父项 (Parent) 和子项(Child) 的物料号码及其从属关系﹔(2) 产品组装时所需的子项数量 (Quantity)﹔(3) 子项生效日期及失效日期﹔(4) 各零件的库存、单价及生产制造、组装程序等资料。

美国生产与存货管制协会 (American Production and Inventory Control Society, APICS) 将物料表定义为:「一份包含次装配件、零组件及原料的清单,此清单详细列为装配某一成品所需各种物料的种类与数量」。

更进一步说,物料表可以定义为:「制造某一母项目 (包括最终装配成品、次装配件、制程零组件及半制程零组件) 所需所有直接零件(次装配件、零组件、半制程零组件、原料) 的种类与数量清单」。

所以物料表又可称为产品结构表 (Product Structure) 或材料表。

物料表通常是以阶层式的方式 (Level-by-Level) 来呈现,最终产品定义为阶层0 (Level 0),而组成结构定义为Level 1,组成结构的子项则定义为Level 2,其子项再接续的子项定义为Level 3,以此类推,一直展开至基础的零件或原料为止。

1.2 BOM 的结构BOM 的结构 (BOM Structure) 可以有很多种表示方式,一般可分为正展开 (Explosion) 与逆展开(Implosion) 两种方式,若再细分则有以下几种:单阶展开式 (Single-level Explosion)单阶式物料表是物料表结构中最基本、最简单的结构,这种型式列出装配作业中母装配与子零件的关系,包括一个母装配需要配多少个子零件,所以可以清楚的了解每一产品或次总成组成的零组件项目。

用友U8开发-两种方式实现BOM全阶展开查询

用友U8开发-两种方式实现BOM全阶展开查询

⽤友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成本的销售报价单。

excel中bom层级显示公式

excel中bom层级显示公式

BOM(Bill of Materials)即物料清单,在制造业中扮演着至关重要的角色,它记录了产品所需的所有零部件和原材料信息,对于企业的生产计划和成本控制具有重要意义。

在Excel中,如何便捷地展示BOM 的层级结构是一个常见的问题,接下来我们将介绍如何使用公式来实现BOM层级的显示。

1. 父子关系的建立要展示BOM的层级结构,必须要明确各个物料之间的父子关系。

在Excel中,我们可以使用一列来表示每个物料的父物料,以此来建立父子关系。

假设在A列中存储了所有的物料清单,B列则用来表示每个物料的父物料。

若物料A是物料B的子物料,则在B列中填写A;若物料A没有父物料,则在B列中不填写内容。

2. 层级的显示接下来,我们要使用公式来实现BOM层级的显示。

在C列中,我们可以利用如下的公式来显示每个物料的层级:=IF(B2="",1,VLOOKUP(B2,$A$2:$C$1000,3,0)+1)以上公式的含义是,如果当前物料没有父物料,则默认显示为第一层;如果有父物料,则通过VLOOKUP函数在已有的层级信息中查找其父物料的层级并加1,从而实现层级的逐级累加。

3. 层级的格式化为了使BOM的层级结构更加清晰,我们可以利用Excel的格式化功能来对层级进行优化。

可以使用缩进来表示不同层级之间的关系;也可以使用不同的字体、颜色或者标志来突出显示不同的层级。

4. 数据的展示我们还可以通过筛选、排序等功能来对BOM清单进行进一步的展示和分析。

可以根据层级来进行排序,从而使整个BOM的层级结构更加清晰;也可以根据不同的物料进行筛选,以便对特定的子物料进行深入分析。

总结通过以上的方法,我们可以在Excel中便捷地展示BOM的层级结构,使整个物料清单变得更加直观和易于理解。

在实际的生产管理中,这样的功能不仅可以帮助企业更加有效地进行生产计划和物料控制,还可以为生产过程中的优化和改进提供重要的参考依据。

采购lesson 14 MRP物料需求分解原理作业说明

采购lesson 14 MRP物料需求分解原理作业说明

采购管理第14课时讲义-物料需求分解原理作业说明一.M RP物料需求分解的原理和方法。

(时间:25分钟)1. MRP的基本功能:是在客户需要的时间内,以需要的数量满足之;MRP分解物料需求的原理: 以BOM为准计算材料需求的方法;目标: 展开BOM, 计算半成品及原料需求的数量和时间.需求数量算法如下:毛需求=订单需求量* 产品BOM中各组成料件单位用量;净需求=毛需求- (目前库存量+ WIP仓库存+ 计划收到量- 已分配数量- 安全库存)依净需求﹕(1)对原物料下采购单(2)对成品半成品下达生产制令单(3)对需委外的料件发出委外加工订单需求时间: 按提前天数逆推得出。

2.物料需求分解的方法:考虑时间MRP不考虑时间主计划、缺料表、销售订单材料需求计算表、生产计划。

(1)MRP计划(物料需求明细分解)此种方式最完整,为全自动式。

会考虑所有的订单及采购与生产信息,并结果各种材料的leadertime和产品的日产量进行分解,对于无法按期生产或采购的需求,以例外资料显示。

但也是对系统基础资料及交易准确性要求最高的。

(2)生产计划:依据生管自制的需求计划进行分解,主要考虑生产计划中的需求,而不是全部的销售需求(销售订单、销售预测等)。

不考虑时间。

(3)产品主计划:依生管自已维护的主计划进行材料需求计划,它只依本主计划产品的计划数量来分解,并可产生材料需求及生产制令单。

(4)缺料表:依据生产制令单产生材料采购请/采购单物料需求计算方法;该方法的前提是先有生产制令单。

(5)销售订单材料需求计算表:依据所选的销售订单计算材料采请购订单资料的方法。

3.物料需求分解所需基本资料:(1)BOM(物料清单):说明产品的子母件间关系, 存货安全库存量;(2)原物料的备料所需天数即采购周期﹐成品半成品的每天生产量。

4.物料需求分解举例:BOM : A001产品由C001,2,3材料组成,单位用量1,1,2。

今天新接到一张客户订单,订购A001产品3000PCS,有库存200PCS, 有一张制令单200PCS.正准备生产(未领料)预计生产:2600订单总需求材料C001,C002 2600套,需求C003 5200套。

展开BOM并使用最终用量的算法(转载)

展开BOM并使用最终用量的算法(转载)

展开BOM并使⽤最终⽤量的算法(转载)本⽂系转载⼦ITPUB,如果有侵犯您权益的地⽅,烦请及时的告知与我,我即刻将停⽌侵权⾏为:⽹址:LEVEL Parent Child Parent Qty Child Qty1 A B 1 32 B C 2 33 C D 5 64 D E 1 21 A Z 1 3A是成品B,C,D是半成品E,Z是原材料从上⾯⼀个⽐例关系可以计算出,做⼀个A最终需要10.8个E和3个Z,也就是能看到下⾯的结果Parent Child QTYA E 10.8A Z 3我想知道有没有什么办法通过⼀个SQL语句来实现这个功能。

测试表:CREATE TABLE BOM (PARENT VARCHAR2(10),CHILD VARCHAR2(10),P_QTY NUMBER, C_QTY NUMBER); INSERT INTO BOM VALUES ('A','B',1,3);INSERT INTO BOM VALUES ('B','C',2,3);INSERT INTO BOM VALUES ('C','D',5,6);INSERT INTO BOM VALUES ('D','E',1,2);INSERT INTO BOM VALUES ('A','Z',1,3);COMMIT;1、使⽤SQL1SELECT P, D, SUM(QTY)2FROM (SELECT P, C, D, POWER(10, SUM(LOG(10, QTY))) AS QTY3FROM (SELECT DISTINCT P,4 C,5 SUBSTR(C, -1, 1) D,6 REGEXP_SUBSTR(C, '[^,]+', 1, LEVEL),7 TO_NUMBER(REGEXP_SUBSTR(Q, '[^*]+', 1, LEVEL)) AS QTY8FROM (SELECT CONNECT_BY_ROOT PARENT AS P,9 SUBSTR(SYS_CONNECT_BY_PATH(CHILD, ','), 2) AS C,101|| SYS_CONNECT_BY_PATH(C_QTY / P_QTY, '*') AS Q11FROM BOM12WHERE CONNECT_BY_ISLEAF =113 START WITH PARENT ='A'14 CONNECT BY PARENT = PRIOR CHILD) C15 CONNECT BY LEVEL<= LENGTH(REGEXP_REPLACE(Q, '[^*]', '')) +116ORDER BY1, 2) TT17GROUP BY P, C, D) FF18GROUP BY P, D2、使⽤NEWID提供的聚合求积函数解决思路:1.把A的每个叶⼦找出来;2.顺着叶⼦往根,⼀路作乘法上去。

物料需求计划计算举例

物料需求计划计算举例

计划完工日期(调整后)=计划完工日期(调整前)+提前期余量
计划开工日期(调整后)=计划开工日期(调整前)+提前期余量
5、考虑工厂日历
如果计划开工日期和计划完工日期中间的时间段落在工厂日历的休息日,计划开工日期
和计划完工日期相应做顺延调整。
对于一些大型的企业,其组织结构可能还包括一些子公司、部门、生产车间等下级部门,
需要注意的是,如果物料的批量原则是 POQ 时,物料的订货周期(P)将影响到计划 完工日期。
2、计算物料的订货提前期 订货提前期=固定订货提前期+变动订货提前期 变动订货提前期=取大整数(变动订货提前期系数×订货批量÷变动提前期批量) 3、计算计划开工日期 计划开工日期=计划完工日期-订货提前期 物料需求计划在计算时,必须考虑工厂日历和提前期余量设置情况。 4、增加提前期余量调整
=2007 年 11 月 18 日 同时因为 2007 年 11 月 17 日和 2007 年 11 月 18 日为双休日,相应的计划开工日期再次 向前提前至工作日,计划完工日期为工作日,保持不变。 计划完工日期=2007 年 11 月 27 日 计划开工日期=2007 年 11 月 18 日-2 天
00
1
1
1
20
00
00
00
2
2
2
00
00
00
在策略二情况下,由于考虑了当前库存和未结订单的数量,塑料套的净需求发生了变化。 具体计算步骤如下:
毛需求=上层物料的需求数量×BOM 表中的单件耗用量+独立需求 =100×1×2+10 =210
净需求=毛需求-(当前库存-无效库存-已分配数量)-未结订单 =210-(10-4-3)-5 =202
=120 由于三脚架的批量增量为 120,所以本次最终的计划下达数量为 120.

BOM详细解释

BOM详细解释

BOM详细解释引言本文将就静态数据中物料清单(Bill of Material,BOM)的作用,结合CAD(Computer Aided Design,计算机辅助设计)、CAPP(Computer Aided Process Planning,计算机辅助工艺编制)、PDM(Products Data Management,产品数据管理)、MRPⅡ(Manufacturing ResourcePlanning,物造资源计划)、ERP(Enterprise Resource Planning,企业资源计划)等系统作详细的描述。

什么是BOM?采用计算机辅助企业生产管理,首先要使计算机能够读出企业所制造的产品构成和所有要涉及的物料,为了便于计算机识别,必须把用图示表达的产品结构转化成某种数据格式,这种以数据格式来描述产品结构的文件就是物料清单,即是BOM。

它是定义产品结构的技术文件,因此,它又称为产品结构表或产品结构树。

在某些工业领域,可能称为“配方”、“要素表”或其它名称。

在MRPⅡ和ERP系统中,物料一词有着广泛的含义,它是所有产品,半成品,在制品,原材料,配套件,协作件,易耗品等等与生产有关的物料的统称。

在通常的MRPⅡ和ERP系统中BOM是指由双亲件及子件所组成的关系树。

BOM可以是自顶向下分解的形式或是以自底向上跟踪的形式提供信息。

在MRPⅡ和ERP系统中中BOM是一种数据之间的组织关系,利用这些数据之间层次关系可以作为很多功能模块设计的基础,这些数据的某些表现形式是我们大家感到熟悉的汇总报表。

BOM有什么作用?BOM是PDM/MRPⅡ/ERP信息化系统中最重要的基础数据,其组织格式设计和合理与否直接影响到系统的处理性能,因此,根据实际的使用环境,灵活地设计合理且有效的BOM是十分重要的。

BOM不仅是MRPⅡ系统中重要的输入数据,而且是财务部门核算成本,制造部门组织生产等的重要依据,因此,BOM的影响面最大,对它的准确性要求也最高。

物料BOM展开

物料BOM展开
APPEND ITAB.
ENDLOOP.
ENDIF.
ENDLOOP.
ENDFORM. &quot; GET_BOM
*&amp;---------------------------------------------------------------------*
*&amp; Form GET_FIELDCAT
DATA: WT_LAYOUT TYPE SLIS_LAYOUT_ALV,
WT_EVENTS TYPE SLIS_T_EVENT.
DATA: WS_EVENTS LIKE LINE OF WT_EVENTS.
DATA: G_COMMAND TYPE SLIS_FORMNAME VALUE &#39;USER_COMMANDS&#39;. &quot;alv duoble mouse.
* --&gt; p1 text
* &lt;-- p2 text
*----------------------------------------------------------------------*
FORM GET_FIELDCAT .
FIELDCAT-FIELDNAME = &#39;DGLVL&#39;.
ENDFORM. &quot; GET_MATNR
*&amp;---------------------------------------------------------------------*
*&amp; Form GET_BOM
*&amp;---------------------------------------------------------------------*

BOM展开的方式和种类

BOM展开的方式和种类

【下载本文档,可以自由复制内容或自由编辑修改内容,更多精彩文章,期待你的好评和关注,我将一如既往为您服务】2.BOM 展开的方式和种类1.正阶(Explosion )---单阶、全阶、.汇总、尾阶 a. 单阶用料清单(Single-level Bill of Material ):是BOM 的基本架构,它指出一个父项和一个或一个以上的子项的关系,下表以A 为例说明。

b. 多阶用料清单(Multi-level Bill of Material ):一个成品或最终项目的各阶父项和子项,由上向下展开,直到所有的子项都列入为止。

以下表为例说明之。

A B1 C1D1E2A B1 C1D1E2父項只展開第1階子件(以下不予於展開) 不予於展開父項第1階子件展開第2階子件展開(以下也皆以展開)c. 汇总用料清单(Summarized of Material ):将组成成品或最终项目的各阶零件,不论其关系是父项或子项,全部都列出来作升幂排列,以下表为例说明之。

d. 尾阶用料清单:往下展开各阶子件时,只要子件本身也是父件时,就不予于展开,这就是跟多阶产品展开不同的地方,此展开方式可以很清楚看出最终产品内含子件。

AB1 C2F1G1D1父項第1階子件展開 第2階子件展開AB1 C2D1 E1F2G1H1 I1 J2父項展開第1階子件(但不展開BD ) 展開第2階子件(但不展開H ) 展開第4階子件2.逆阶(Implosion )---单阶.全阶.汇总.尾阶a.单阶逆展:指出某一个子项是用到哪一个或一个以上的父项。

如下表说明B 和E 是用于高一阶的哪一个父项。

b.全阶逆展:从一个子项向上寻找它的父项,以及父项的父项等所有项目,一直到成品或最终项目为止,并且以锯齿状的方式来表示,以下表为例说明F 项用于何处。

A1B1 C1D1E1F1 D1 E1 G2AB1 C2D1E1F1c.汇总逆展:将某一个子项的父项,以及父项的父项等所有项目,无论其所处的阶层,全部汇总在一张表上。

bom中物料展开的算法

bom中物料展开的算法

bom中物料展开的算法MRP计算有两部分:一是净改变、一是重新计算。

净改变是根据MPS中的改变量计算,不考虑库存、现有在途、现有已分配量、不考虑预计库存等,它只根据计划BOM计算。

A、对象作为第零层B、根据计划BOM和第零层数据生成底层码C、取最大的底层码作为每个物料的最终底层码D、从最高一层计算do while 未到最底层1) 根据计划BOM形成该层数据2) 将未到底层码的物料需求信息保存到临时表中以便到底层码时,合并计算净需求,计划投入量等信息3) 取…到底层码‟的物料到临时表计算毛需求= 父项投入量*子项数量(定额数量)4) 计算提前期,自制件按自制提前期计算投入日,外构件和外协件按采购提前期计算投入日5) 按投入日先后次序计算()do whle 从最小工作日计算从ischild中取最小工作日的数据到临时表中根据产出日从计划接受表和已分配量表取该时段(<=产出日)的数据并更新到iskc的计划接受字段和已分配字段上,然后删除该时段的数据。

do while 从第一套开始计算计算该工艺套数的MRP wf_compute()函数wf_compute() 程序设计见下文MRP计算删除计算过的工艺套数loop删除计算过的工作日loop函数wf_compute() :根据工艺套数(生产线)和是否考虑库存实现物料的MRP的核心计算,从临时表中取生产批量、安全库存、现有库存,计划接受、在途在制、已分配量,if 考虑库存then净需求= 毛需求- (现有可用库存+预计接收量)根据不同的批量规则计算将该层的物料按批量规则归类,分别不同处理1、固定批量:按原来的程序处理2、因需定量:按原来的程序处理,只是将批量去除,不考虑批量3、高于批量的因需定量:将大于批量的物料按因需定量处理,低于批量的按批量数4、增量批量:低于批量的按批量数,大于批量的按增量批量的整数倍处理A、净需求>0 and 批量=0 and 安全库存=0预计库存=0,计划接受=在途在制计划产出量=净需求计划投入量=计划产出量/(1 -废品率)B、 .净需求大于零且批量为零,安全库存大于零预计库存量=安全库存计划产出量=安全库存+净需求计划投入量=计划产出量/(1 -废品率)C、净需求>0 and 批量>0 and 当前计算出的预计库存>=安全库存:预计库存量=现有可用库存+预计接收量-毛需求+计划产出量计划产出量=计划投入量*(1 -废品率)计划投入量=((净需求/(1 -废品率))/批量)整数倍*批量D、净需求>0 and 批量>0 and 当前计算出的预计库存<安全库存:预计库存量=现有可用库存+预计接收量-毛需求+计划产出量计划产出量=计划投入量*(1 -废品率)计划投入量=(((安全库存+净需求)/(1 -废品率))/批量)整数倍*批量E、净需求<=0 and 当前可用库存+预计接收量-毛需求>=安全库存:预计库存量=现有可用库存+预计接收量-毛需求计划产出量=0计划投入量=0F、净需求<=0 and 批量=0 and 当前可用库存+预计接收量-毛需求<安全库存:预计库存量=现有可用库存+预计接收量-毛需求+计划产出量计划产出量=计划投入量*(1 -废品率)计划投入量=(安全库存+毛需求-现有可用库存-预计接收量)/(1 -废品率) G、净需求<=0 and 批量>0 and 当前可用库存+预计接收量-毛需求<安全库存:预计库存量=现有可用库存+预计接收量-毛需求+计划产出量计划产出量=计划投入量*(1 -废品率)计划投入量=((安全库存+毛需求-现有可用库存-预计接收量)/(1 -废品率)/批量)的整H、更新预计库存I、对于净需求>0的形成下层拆分的父项isfather(物料编号、工艺套数、计划投入量、计划投入日)elseif 不考虑库存then净需求=毛需求预计库存=现有库存计划投入量=((毛需求/(1 -废品率))/批量)整数倍*批量计划产出量=((毛需求/(1 -废品率))/批量)整数倍*批量*(1-废品率)end if形成下层拆分的父项isfather(物料编号、工艺套数、计划投入量、计划投入日,不考虑净需求是否>0J、将结算结果插入到表istrccb净改变净改变是在不考虑库存的情况下的情况下将改变量根据定额量和生产批量及废品率形成各时间段的需求量。

低阶码与BOM展开

低阶码与BOM展开

低阶码与BOM展开1.共用件的问题假设我们有两个成品,甲和乙,它们各自的BOM如下所示:甲乙A1(2) B(2) C(1) A2(2) D(1) E(1)B(2)料品B是甲的子件,同时也是D的子件,我们说B是“共用件(Common Parts)”。

假设料品B现有库存量50个。

如果甲和乙均有客户订单量各100个,我们现在就用在上一节中所说明的BOM展开方式来计算料品B的供应数量。

当我们将甲的BOM逐层展开后,再接着将乙的BOM也展开时,B的毛需求量分别各为200,库存量可以重复减二次吗?换言之,在甲展开时,B的毛需求量为200,扣除库存量50,还缺150。

之后在乙展开时,B的毛需求量为200,还能再扣除库存量50吗?当然不行!因为这50个库存量已经预备给甲生产用了,如果再扣一次,将来生产乙时必然会缺料。

这种现象,正是共同料件无法靠BOM展开来计算需求量的原因。

那么,该如何做才对呢?我们必须借助于一个称作“低阶码(LLC:Low Level Code)”的技巧。

2.什么是低阶码?依照各料品在物料清单中的阶位,而按阶层高低,由上而下从零阶起,将全部料品排序,即为各料品的低阶码。

在MRP展开时,从低阶码最小的开始,将全部料品的需求,逐阶向下展开计算。

以上述甲、乙产品为例:B在甲的BOM中,其阶码(Level Code)为1,但在乙的BOM中,阶码为2,所以我们定义B的低阶码(Low Level Code,LLC)为2,也就是B在各BOM中最低的那个“阶码”。

按照这个LLC的定义,可以逐个计算各料品的LLC如下:低阶码是由电脑自动计算的,不能只用手工来计算,因为料品一多,势必发生错误。

每当有新增或修改物料清单后,应重新推算全部料品的低阶码。

3.BOM展开下面,我们按照料品低阶码的顺序,同时计算产品甲和乙所需各料品的净需求量,如下表所示:(说明:#号内数字为各步骤计算时,毛需求的依据).时间的连动关系生产管理, 从本质上讲是一个逐层式的物料管理过程。

详解BOM的分类(一)

详解BOM的分类(一)

详解BOM的分类(⼀)详解BOM的分类(⼀) 对⾃⼰好点,因为⼀辈⼦不长;对⾝边的⼈好点,因为下辈⼦不⼀定能够遇见!分⼿就是不爱了,那些冠冕堂皇的理由,不是想让对⽅好过,⽽是想让⾃⼰好过点! 1、⽣产⽤的BOM 除了说明⽗⼦项的关系外,还有下列必备的字段,现⼀⼀说明如下: (1) 序号 由于⼯序不同或有效时段不同或插件位置不同,使得每⼀个⽗项下⾯可能有多个⼦项。

这种情况不能通过单位⽤量来说明,⽗⼦项可能不惟⼀,因此同⼀个⽗项通过序号惟⼀来描述。

由于物料的性质或发料的优先次序⽽要求⼦项按⼀定的顺序排列,这些也通过序号来实现。

BOM展开时,也按序号排列。

(2) 单位⽤量 表⽰每⼀库存单位⽗项需⽤到多少库存单位的⼦项,物料的库存单位在物料代码资料表中mes系统精益⽣产管理定义。

(3) 基数 表⽰⽗项的数量,如每个纸箱(A物料代码),可存放100个⼿表(X),则BOM中如下表⽰: ⽗项:X 序号1 ⼦项:A 单位⽤量:1 基数:100 (4) 损耗率 有些物料由于机器设备的原因,或由于装配的原因等等,正常的单位⽤量⽆法满⾜⽣产的需要,⽽要定义损耗的百分⽐率。

(5) 固定损耗量 根据损耗率,不同的订单的损耗⽤量不同,订单量少的损耗⽤量也少,订单量⼤的损耗⽤量也⼤,但有的时候即使是少批量的订单也要求有⼀定的损耗,这部分可通过固定损耗量来定义。

也就是:不管多少订单,⾄少要有这么多损耗。

(6) ⽣效⽇期和失效⽇期 由于⼯程变更或不同时期产品的结构不同⽽需指定⽣效⽇期和失效⽇期。

如果⼀有效,则不要指明失效⽇期,或指定⼀个很⼤的数据采集⽇期,或让失效⽇期=“1900/1/1” (7) 发料⼯序号码 每⼀个⽗项在物料代码公司资料表中定义了⼀条MES⼯艺路线,每条⼯艺路线在⼯艺路线资料表中需⾄少定义⼀道⼯序或多道⼯序,BOM不同⼦项发料时可能发到同⼀道⼯序,也可能发到不同的bom⼯序,在此说明⼦项发料时应该发放到哪道⼯序。

BOMGroup操作——————CS_BOM_EXPL_MAT_V2————展单、多层BO。。。

BOMGroup操作——————CS_BOM_EXPL_MAT_V2————展单、多层BO。。。

BOMGroup操作——————CS_BOM_EXPL_MAT_V2————展单、多层BO。

CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'EXPORTING* ALEKZ = ' ' " 是否计算耗损CAPID = 'PP01' " BOM应⽤DATUV = sy-datum " 有效起始⽇EHNDL = '1'EMENG = '1' " 需求数量MEHRS = 'X' " 多层展开MMORY = '1' " 是否使⽤缓存MTNRV = imatnr-matnr " 展开物料号STLAN = '1' " BOM⽤途WERKS = s_werks-low " 物料所在⼯⼚* IMPORTING* TOPMAT =* DSTST =TABLESSTB = stb* MATCAT =EXCEPTIONSALT_NOT_FOUND = 1MATERIAL_NOT_FOUND = 3MISSING_AUTHORIZATION = 4NO_BOM_FOUND = 5OTHERS = 9.IF SY-SUBRC <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.输出内表可如下定义:data: stb LIKE stpox OCCURS 50 WITH HEADER LINE.须注意,DATUV⼀定不能省,否则运⾏出错。

输出的数量⼀般⽤MNGKO⽽不是MENGE,因为MNGKO计算了⽤量、替代的实际值。

BOM Group操作前驱:同⼀个物资多个BOM,Useage相同操作:Logistics --> Production --> Master data --> Bills of material -->Bill of material --> Material BOM --> BOM group --> Change.输⼊这个物料,和Useage ,进⼊“Change BOM Group:Summarized BOM”------〉Alternatives输⼊物料组的名称后继:未知说明:设置展BOM函数的参数CS_BOM_EXPL_MAT_V2 展BOM的参数,其中:⼯⼚(WERKS)、BOM有效期(DATUV)、BOM类型(CAPID)、物料号(MTNRV)是必须填写的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

bom中物料展开的算法
MRP计算有两部分:一是净改变、一是重新计算。

净改变是根据MPS中的改变量计算,不考虑库存、现有在途、现有已分配量、不考虑预计库存等,它只根据计划BOM计算。

A、对象作为第零层
B、根据计划BOM和第零层数据生成底层码
C、取最大的底层码作为每个物料的最终底层码
D、从最高一层计算
do while 未到最底层
1) 根据计划BOM形成该层数据
2) 将未到底层码的物料需求信息保存到临时表中以便到底层码时,合并计算净需求,计划投入量等信息
3) 取…到底层码‟的物料到临时表计算毛需求= 父项投入量*子项数量(定额数量)
4) 计算提前期,自制件按自制提前期计算投入日,外构件和外协件按采购提前期计算投入日
5) 按投入日先后次序计算()
do whle 从最小工作日计算
从ischild中取最小工作日的数据到临时表中
根据产出日从计划接受表和已分配量表取该时段(<=产出
日)的数据并更新到iskc的计划接受字段和已分配字段上,
然后删除该时段的数据。

do while 从第一套开始计算
计算该工艺套数的MRP wf_compute()
函数wf_compute() 程序设计见下文MRP计算
删除计算过的工艺套数
loop
删除计算过的工作日
loop
函数wf_compute() :根据工艺套数(生产线)和是否考虑库存实现物料的MRP的核心计算,从临时表中取生产批量、安全库存、现有库存,计划接受、在途在制、已分配量,if 考虑库存then
净需求= 毛需求- (现有可用库存+预计接收量)
根据不同的批量规则计算
将该层的物料按批量规则归类,分别不同处理
1、固定批量:按原来的程序处理
2、因需定量:按原来的程序处理,只是将批量去除,不考虑批量
3、高于批量的因需定量:将大于批量的物料按因需定量处理,低于批量的按批量数
4、增量批量:低于批量的按批量数,大于批量的按增量批量的整数倍处理
A、净需求>0 and 批量=0 and 安全库存=0
预计库存=0,
计划接受=在途在制
计划产出量=净需求
计划投入量=计划产出量/(1 -废品率)
B、 .净需求大于零且批量为零,安全库存大于零
预计库存量=安全库存
计划产出量=安全库存+净需求
计划投入量=计划产出量/(1 -废品率)
C、净需求>0 and 批量>0 and 当前计算出的预计库存>=安全库存:
预计库存量=现有可用库存+预计接收量-毛需求+计划产出量
计划产出量=计划投入量*(1 -废品率)
计划投入量=((净需求/(1 -废品率))/批量)整数倍*批量
D、净需求>0 and 批量>0 and 当前计算出的预计库存<安全库存:
预计库存量=现有可用库存+预计接收量-毛需求+计划产出量
计划产出量=计划投入量*(1 -废品率)
计划投入量=(((安全库存+净需求)/(1 -废品率))/批量)整数倍*批量
E、净需求<=0 and 当前可用库存+预计接收量-毛需求>=安全库存:
预计库存量=现有可用库存+预计接收量-毛需求
计划产出量=0
计划投入量=0
F、净需求<=0 and 批量=0 and 当前可用库存+预计接收量-毛需求<安全库存:
预计库存量=现有可用库存+预计接收量-毛需求+计划产出量
计划产出量=计划投入量*(1 -废品率)
计划投入量=(安全库存+毛需求-现有可用库存-预计接收量)/(1 -废品率) G、净需求<=0 and 批量>0 and 当前可用库存+预计接收量-毛需求<安全库存:
预计库存量=现有可用库存+预计接收量-毛需求+计划产出量
计划产出量=计划投入量*(1 -废品率)
计划投入量=((安全库存+毛需求-现有可用库存-预计接收量)/(1 -废品率)/批量)的整
H、更新预计库存
I、对于净需求>0的形成下层拆分的父项isfather(物料编号、工艺套数、计划投入量、计划投入日)
elseif 不考虑库存then
净需求=毛需求
预计库存=现有库存
计划投入量=((毛需求/(1 -废品率))/批量)整数倍*批量
计划产出量=((毛需求/(1 -废品率))/批量)整数倍*批量*(1-废品率)
end if
形成下层拆分的父项isfather(物料编号、工艺套数、计划投入量、计划投入
日,不考虑净需求是否>0
J、将结算结果插入到表istrccb
净改变
净改变是在不考虑库存的情况下的情况下将改变量根据定额量和生产批量及废品率形成各时间段的需求量。

这主要用于计划改变,其算法基本同“重新计算功能”,但是不考虑库存。

相关文档
最新文档