Oracle_EBS_核心功能(MFG)(1)

  1. INV: Items

参考《深入浅出Oracle EBS之核心功能(DIS)》。canca

  1. INV: Transactions基本库存事务处理

参考《深入浅出Oracle EBS之核心功能(DIS)》。canca

  1. BOM: Bills of Material物料清单

应用:Bills of Material

职责:Bills of Material

    1. 基础业务学习

总体说明

BOM(物料清单)最终解决的问题是生产过程中用料和用量的标准化。准确度要求在98%以上,要不断与现场比对,逐步达到100%。

BOM是制造型企业的业务驱动核心,WIP、OPM、COST、MPS/MRP等是直接跑在BOM的基础上,没有稳定清晰的BOM就没有ERP。

BOM是产品的组成结构图,定义了生产特定物料所需的零件及数量。每一个零件也可能有他们的BOM结构,由此产生多层的产品结构树。

例如一个车轮需要两个轮辋的自行车还是比较少见的哦!可以看出,生产一部自行车,需要轮辋 2 * 2个

BOM的维护和变更实际至少涉及如下部门:工程部/研发中心、计划部、制造部、财务部。

从不同角度看,BOM有不同的分类。

从设计与制造角度       据bom_bill_of_materials.assembly_type分

  1. 工程BOM        在工程模块维护

工程BOM基本上是反应工程图纸上的BOM,如CAD设计出来的BOM。

而实际在EBS中的维护,和制造BOM没什么大的差异;主要差别在于工程BOM不能用于生产,维护时可以选择工程物料、其他工程BOM作为组件。

  1. 制造BOM        在BOM模块维护或者由工程BOM“实施”——转产而来

制造BOM反应的是当前用于车间实际生产的BOM,即在产品生产过程中,按照标准应当投入的零部件规格及其数量。

从组件供应角度    据bom_inventory_components.wip_supply_type分

  1. 普通件            供应类型除Phantom外的组件

WIP组件需求按照正常逻辑计算:仅看一层BOM的零部件。

  1. 虚拟件            供应类型为Phantom的组件

WIP组件需求,跳过虚拟件,把其下的组件直接作为WIP的需求;忽略虚拟件的工艺路线。

虚拟件只是从其父件的角度出发区分出来的,其本如果直接开Job,和其他装配件没有任何差异。

从产品类型角度           据mtl_system_items_b.bom_item_type分

  1. 标准BOM

最常见的普通BOM,理论上组件都是必须的,数量也是标准耗用量。

WIP、CST等模块使用的就是标准BOM,OM实际执行的也是标准BOM。

  1. 模型BOM

用于OM的CTO(ATO、PTO)销售方式,所以具体又可分ATO BOM、PTO BOM。

企业事先定义了一个产品的模型,其中的组件,有些是必须的(Mandatory),有些是可选的(Optional);在上述两种组件中,可能又定义一个类别(Option Class),只要在这个类别中选一个或多个就行了。模型BOM如果嵌套定义,就非常复杂了。

客户根据模型,最终选定一个满意的组成方案;我们根据客户的方案开SO下单执行。

SO会根据选配结果创建一个Item及其BOM。因为这种Item我们通常设置为采用“<原物料编码>*<序列号>”的方式生成,所以也叫“星号Item”;对应的BOM叫“配置BOM”,其和标准BOM没有任何差别。

  1. 选项类BOM

用于模型BOM的组件,参考上面说明。

比如计算机模型中的显示器,就可以作为选项类,公司可以提供多个型号供客户选择。

有时候会觉得“选项类BOM”和“模型BOM”类似嘛,这就对了,差别在于前者只能作为后者的组件,不独立供客户订购了。^o^!

  1. 计划BOM

计划BOM和标准BOM的差别在于其组件使用量都有百分比,这样在做Forecasts展开的时候,MPS会逐层乘以百分比,得出扩展计划数量。

计划类型的Item不能定义Routing、BOM没有产出率、不卷积成本、不需要供应/发运等等信息,总之计划BOM仅仅关心数量!

从配方主次角度  据bom_bill_of_materials.alternate_bom_designator分

  1. 主BOM

最常用的产品结构,在各模块使用中默认都是主BOM,如成本卷积、开JOB、MRP运算、OM模型BOM等;成本卷积、开JOB可以手工选择替代BOM。

  1. 替代BOM

创建主BOM之后,就可以建立平行配方——替代BOM了,意思是同样一个产品,还可以用其他的配方(不同物料、不同数量)生产,这样比用替代料来得更加直接、更加好控制。

在做工程BOM的时候,通常可以创建一系列替代BOM,来比较其组成、工艺、成本。

    1. 核心功能流程

标准BOM学习流程

Prerequisite          参考《深入浅出Oracle EBS之全模块设置详例》设置BOM
   ↓                             
Review Item         回顾物料定义中BOM Tab页属性,参考“INV: Items”
   ↓
Review Profile             回顾重要的Profile设置
   ↓
Define Primary BOM    定义主BOM
   ↓                             
Define Alternate    定义替代项
   ↓
Define Alternate BOM  定义替代BOM
   ↓                             
View Indented BOM    查看BOM多级清单
   ↓                             
View Item Where Used 查看物料使用处
   ↓                             
Modify Component      失效组件、添加新组件

    1. Review Profile

预制文件

N: Sys/Profiles/System

重点关注如下几个Profile的设置值:

 

    1. Define Primary BOM

主BOM

N: BOM/Bills/Bills

EBS中BOM是分层独立定义的,但顺序不分先后,如上述“自行车组成结构图”,可以先定义自行车的BOM,再定义车轮的BOM;也可以反过来定义。最终都一样组成一棵产品结构树,相对的,父节点叫“装配件”或“父件”,子节点叫“组件”或“子件”。

 

上图,装配件为“960001”,组件有“910001”、“960002”。

 

上图,装配件为“960002”,组件有“910002”、“910003”。

这样一层层下去,理论上可以无限制定义;Oracle ERP目前允许多达60层的BOM,但实际实施应当尽量扁平化。

常用字段详细说明,粗体部分是必须要掌握的:

 

我们本章练习定义的BOM数据如下:

 

 

    1. Define Alternate

替代号

N: BOM/Setup/Alternates

定义替代号HUAJHUA:

 

    1. Define Alternate BOM

替代BOM

N: BOM/Bills/Bills

和Primary BOM唯一的差别在于需要在“装配件”下加定义替代号,假定配方HUAJHUA的数量和主配方不一样。

960001的HUAJHUA:

 

960002的HUAJHUA(注:等看完“View Indented BOM”再回来定义!)

 

我们本章练习定义的BOM数据如下:

 

    1. View Indented BOM

多级清单

N: BOM/Bills/Indented Bills

如上面所讨论的那样,BOM定义的时候是分层独立定义,而完整的BOM应当是棵结构树,Indented Bills就是以缩进方式展示了这棵树,叫“BOM多级清单”。

BOM多级清单”是从装配件的角度看,递归使用了哪些物料来生产。

首先进入查询界面,我们先查主BOM:

 

这个查询界面数据含义是:展开当前960001主BOM,看直接、间接使用了哪些组件,最多10层。结果是(点击左下角+号展开),是一棵正立的树:

这里重点关注Quantity和Extended Quantity,后者是由前者逐层递乘出来。

再查下替代BOM的“多级清单”,定义960002替代配方前:

 

定义960002替代配方后:

 

EBS在展开多级清单的时候遵循如下规则:以顶层的替代号为准,首先用子层中相同替代号的BOM展开,如果没有则用主BOM,直到叶结点(没有定义BOM的物料)。

    1. View Item Where Used

物料使用处

N: BOM/Bills/Item Where Used

 

“物料使用处”是从组件的角度看,到底被哪些装配件使用,可以递归至顶层装配件!

上图界面含义是:查询910002当前被哪些装配件直接、间接使用了,最多网上找10层。结果如下,是多级清单的倒立:

 

    1. Modify Component

须改组件

N: BOM/Bills/Bills

对于组件的修改,比如修改数量、供应方式、产出率等,可以直接修改相应行,这样简单、直接,但是无法保留痕迹。建议的做法有2:一是“拷贝”一行进行修改,失效原行;二是通过ECO(Engineering Change Order工程更改单)来做。

这里用方法1,先查出要改的BOM,在要修改的行填入“失效日期”,保存后;新增一条记录,录入同序号及新的组件信息。

 

这样实际上产生了新版本(Version)的BOM,如此例,27-OCT-2006 16:43:05及之前是一个版本,27-OCT-2006 16:46:40及之后是另外一个版本;严格说,这两个时间的空档内,又是一个版本。

    1. 其他重要问题

Revision and Version

虽然没有标记版本号,前面的“Modify Component”因为有有效时间范围进行区分,使BOM在不同时点具有不同的Version(版本);另一方面,Item是可以创建Revision(修订号)的,以不同修订号的Item创建的BOM,其版本当然也不同。

所以,总的来说,可以通过这两种方式维护不同的BOM版本。

如何写BOM SQL

  1. 在Form和包中

应当使用系统标准API来展开:apps.bompexpl.exploder_userexit,可以展开任意级的多级清单,含指定类型的成本。我们不需要自己写展开BOM的函数,也不需要用SQL直接取,这样可以保证最大的代码健壮性和兼容性。

  1. 在日常的SQL中,也要参考该标准API来书写,下面是取当前时点(Sysdate)单层BOM的例子,尚缺考虑Revision

SELECT mst.segment1 assembly_item,
       boms.alternate_bom_designator alternate,
       bics.item_num,
       msic.segment1 component_item,
       bics.component_quantity,
       bics.effectivity_date,
       bics.disable_date
  FROM inv.mtl_system_items_b        mst,
       apps.bom_bill_of_materials    boms,
       apps.bom_inventory_components bics,
       inv.mtl_system_items_b        msic
 WHERE mst.organization_id = boms.organization_id
   AND mst.inventory_item_id = boms.assembly_item_id
   AND boms.bill_sequence_id = bics.bill_sequence_id
   AND boms.organization_id = msic.organization_id
   AND bics.component_item_id = msic.inventory_item_id
     
--Item
   AND mst.bom_enabled_flag = 'Y'
   AND mst.bom_item_type IN (1, 2, 3, 4) --Dependent
      --BOM Header
   AND boms.assembly_type = 1 --1 Manufature,2 ENG
   AND nvl(boms.effectivity_control, 1) <= 3
      --BOM Line
   AND nvl(bics.disable_date, SYSDATE) >= SYSDATE
   AND bics.effectivity_date <= SYSDATE
   AND bics.implementation_date IS NOT NULL
   AND nvl(bics.eco_for_production,
2) = 2
      --Filters
   AND mst.organization_id = 82
   AND mst.segment1 LIKE '96%'
 ORDER BY 1, 2 NULLS FIRST, 3

可选阅读:不同类型BOM允许的组件类型

《115bomug.pdf》/Bills of Material/Overview of Bills of Material/Components

可选阅读:不同类型BOM允许的组件属性

《115bomug.pdf》/Bills of Material/Overview of Bills of Material/Components

如何共享BOM

N: Tools/Copy or Common

一个组织的BOM,可以共享给同一主组织下的其他组织,甚至可以共享给同一组织的其他物料,只要物料的BOM Item Type相同。这样可以减少维护工作量,XXX公司的BOM就是在同一组织维护,然后Common给整个集团!

永远注意:共享仅共享一层BOM,其组件的BOM需要再做共享;跨组织的话供应子库/货位无法共享;要保证组件和替代物料在目标组织存在,否则无法共享。

共享有两种方式:一是拷贝,这样拷贝过去后,可以修改,独立维护;二是参考,也叫Common,BOM仍然在原组织/原物料维护,目标组织/目标物料BOM不能再维护,系统规定Common  BOM不能再被其他Item Common,否则程序找起来很费劲。

另外,对于CTO销售企业来说,BOM在普通的组织维护,而SO的验证组织通常是Master组织,所以必须把BOM Common到主组织。

替代物料

N: Button/Substitute

标准BOM可以设置替代物料(不要和替代号混淆),即组件可以用其他物料来替代,数量不需要相等;这个仅影响MRP,不影响WIP。

避免BOM循环定义

N: Tools/Check for Loops

定义BOM的时候,实际上仅关注一层,并不关心组件本身的BOM定义,如果A用了B,B用了C,C用了A,如果用多级清单展开的话,实际上是个死循环,为此系统提供了该检查功能,防止循环的出现。

BOM维护监控

BOM或其组件,创建、修改、删除的没一次动作,系统在后台记录了Business Event,如果需要监控的话,只要定义订阅即可达到监控目的,比如数量修改了,则发个通知给特定的人员,感觉是不错的功能。

批量修改

N: BOM/Bills/Mass Change

提高维护效率的手段,可以独立于ECO使用。

可以定义一系列条件——要改的BOM范围,然后设置Action——修改内容,比如增加组件B、删除组件A等丰富的修改方式。

比较两个BOM

N: BOM/Bills/Comparison

可以比较任意组织、任意BOM,看其在用料和用量上有哪些差异

如何删除BOM

N: BOM/Delete Groups

统一通过删除组删除,这样可以统一检查是否已有事务处理等约束条件,没有的话方可删除。

约束条件

N: BOM/Setup/Constraint

设置BOM删除时的约束条件,默认的足矣!

本文链接:https://my.lmcjl.com/post/5790.html

展开阅读全文

4 评论

留下您的评论.