Oracle_EBS_核心功能(MFG)(1)

  1. INV: Items

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

参考《深入浅出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删除时的约束条件,默认的足矣!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/9258.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

day-004-链表-两两交换链表中的节点、删除链表的倒数第N个节点、链表相交、环形链表II

两两交换链表中的节点 题目建议&#xff1a;用虚拟头结点&#xff0c;这样会方便很多。 题目链接/文章讲解/视频讲解 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* Li…

阿里9年测试经验告诉你:作为一名年薪40w自动化测试需要具备那些能力

前言 前段时间张同学问我说&#xff1a;我已经功能测试2年多了&#xff0c;在功能测试的阶段中也一直在自学自动化测试&#xff0c;有了一定的代码基础还学习了很多的工具&#xff0c;问题是我不知道自动化测试到底需要具备什么样的能力。 我相信有很多小伙伴也是在思索这个问…

计算机组成的基本认识

计算机——> 数值计算——> 处理电信号——> 基本单元&#xff08;逻辑元件&#xff09; 电子管——> 晶体管——>中小规模集成电路 ——>大规模&#xff0c;超大规模集成电路 机器字长&#xff1a;计算机一次整数运算所能处理的二进制位数 解析存储器中的程…

这家年销售额309亿的Tier 1,要谈一场千亿新生意

跨入2023年&#xff0c;智能汽车软件赛道更热闹了。 相较于传统汽车开发模式&#xff0c;软件属于分布式ECU工程开发的一部分&#xff0c;由一级供应商作为黑盒提供&#xff0c;软件开发成本等被认为是硬件系统成本的一部分&#xff0c;没有实现单独定价。 如今&#xff0c;“…

如何在windows/linux下启动OpenOffice

上面一篇文章使用openOffice来实现预览word、excel、pdf、txt等的功能时&#xff0c;发现openOffice没有启动&#xff0c;也怕有些同学安装后不会启动&#xff0c;所以便写下这一篇文章&#xff0c;来为大家说明如何启动openOffice&#xff0c;上一篇讲的如何下载安装openOffic…

2.5 函数的微分

思维导图&#xff1a; 学习目标&#xff1a; 我认为学习函数的微分需要以下几个步骤&#xff1a; 熟练掌握导数的定义和基本性质&#xff0c;包括求导法则和高阶导数的概念。学习一些重要的函数的导数&#xff0c;例如多项式函数、三角函数、指数函数和对数函数等。这些函数的…

CSDN——Markdown编辑器——官方指导

CSDN——Markdown编辑器——官方指导欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表…

Node.js -- http模块

1. 什么是http模块 在网络节点中&#xff0c;负责消费资源的电脑&#xff0c;叫客户端&#xff1b;负责对外提供网络资源的电脑&#xff0c;叫做服务器。 http模块是Node.js官方提供的&#xff0c;用来创建web服务器的模块。通过http模块提供的http.createServer()方法&#…

手写一个Promise

Promise Promise是一个对象&#xff0c;用于解决异步变成的问题&#xff0c;由传统的异步回调为服务端立即调用优化为使用者者掌握回调主动权。 比如传统的JSONP&#xff0c;如下&#xff0c;在请求路由里添加回调函数&#xff0c;由接收请求的一方来调用请求&#xff0c;使用…

kafka笔记

消息队列 场景模式基础架构发送原理异步发送同步发送分区生产者提高吞吐量&#xff1a;数据可靠性ack应答数据重复幂等性事务数据有序数据乱序broker工作流程follower故障leader故障数据查找文件清除高效读写消费者流程消费者组初始化分区分配策略自动提交offset手动提交指定位…

Kubernetes调度器源码学习(一):调度器工作原理、调度器启动流程、调度队列

本文基于Kubernetes v1.22.4版本进行源码学习 1、调度器工作原理 1&#xff09;、调度流程 kube-scheduler的主要作用就是根据特定的调度算法和调度策略将Pod调度到合适的Node节点上去&#xff0c;是一个独立的二进制程序&#xff0c;启动之后会一直监听API Server&#xff0…

thanos prometheus 的高可用、长期存储二进制部署

1.简介 http://thanos.io/ thanos 是具有长期存储功能的开源、高可用性 Prometheus的集群组件。 全局查询视图 跨多个 Prometheus 服务器和集群查询指标 无限保留 使用对象存储扩展系统&#xff0c;不限时间保留指标。 Prometheus兼容 兼容 Prometheus api&#xff0c;用于…

FPGA时序知识点(基本方法总结就两点:1.降低时钟频率2.减小组合逻辑延迟(针对Setup Slack公式来的)

1.我们说的所有时序分析都是建立在同步电路的基础上的&#xff0c;异步电路不能做时序分析&#xff08;或者说只能做伪路径约束&#xff08;在设伪路径之前单bit就打拍&#xff0c;多bit就异步fifo拉到目的时钟域来&#xff09;&#xff09;。——FPGA 设计中寄存器全部使用一个…

Spring的事务

(1) 事务的定义 事务就是用户定义的一系列数据库操作&#xff0c;这些操作可以视为一个完成的逻辑处理工作单元&#xff0c;要么全部执行&#xff0c;要么全部不执行&#xff0c;是不可分割的工作单元。 (2)事务的使用&#xff1a; begin transaction commit rollback. begin …

谈谈软件系统重构

「头条关注【Java思享汇】&#xff0c;面试、各种技术栈、架构设计持续更新中&#xff5e;」 分享初衷&#xff1a;工作几年之后基本都会经历过大大小小的系统重构&#xff0c;笔者经历过单体应用拆分微服务的系统重构&#xff0c;数据异构&#xff0c;业务系统重构。借助此次…

总结819

学习目标&#xff1a; 4月&#xff08;复习完高数18讲内容&#xff0c;背诵21篇短文&#xff0c;熟词僻义300词基础词&#xff09; 第二周&#xff1a; 学习内容&#xff1a; 暴力英语&#xff1a;早上背诵《think different》记150词&#xff0c;默写了两篇文章&#xff0c…

Java中的Iterator底层原理实现

两个抽象方法 Iterator主要有两个抽象方法&#xff0c;让子类实现。 hasNext()用来判断还有没有数据可供访问。next()方法用于访问集合的下一个数据。 这两个方法不像List的get()那样依赖索引获取数据&#xff0c;也不像Queue的poll方法那样依赖特定规则获取数据。 迭代器的…

3月更新 | Visual Studio Code Python

我们很高兴地宣布&#xff0c;2023年3月版 Visual Studio Code Python 和 Jupyter 扩展现已推出&#xff01; 此版本包括以下改进&#xff1a; 后退按钮和取消功能添加到创建环境命令默认情况下&#xff0c;Python 扩展不再附带 isortJupyter 笔记本中内核选择的改进Python P…

代码随想录Day49

今天继续学习动规解决完全背包问题。 322.零钱兑换 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计算并返回可以凑成总金额所需的最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff0c;…

java 线段树

线段树是一种二叉搜索树&#xff0c;什么叫做二叉搜索树&#xff0c;首先满足二叉树&#xff0c;每个结点度小于等于二&#xff0c;即每个结点最多有两颗子树&#xff0c;何为搜索&#xff0c;我们要知道&#xff0c;线段树的每个结点都存储了一个区间&#xff0c;也可以理解成…
最新文章