楼主: kevlo

[原创] Oracle MASTER BOM展开-- 一句SQL搞定,以后展开BOM不用愁啦

[复制链接]
论坛徽章:
47
ITPUB十周年纪念徽章
日期:2011-11-08 10:58:53水瓶座
日期:2015-12-13 11:57:49马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:02凯迪拉克
日期:2014-02-14 09:45:27奥迪
日期:2014-01-20 14:16:40现代
日期:2013-11-25 13:12:50日产
日期:2013-11-07 08:31:38一汽
日期:2013-10-19 13:06:00ITPUB社区12周年站庆徽章
日期:2013-10-08 14:57:28
11#
发表于 2008-1-15 16:45 | 只看该作者
學習

使用道具 举报

回复
论坛徽章:
47
ITPUB十周年纪念徽章
日期:2011-11-08 10:58:53水瓶座
日期:2015-12-13 11:57:49马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:02凯迪拉克
日期:2014-02-14 09:45:27奥迪
日期:2014-01-20 14:16:40现代
日期:2013-11-25 13:12:50日产
日期:2013-11-07 08:31:38一汽
日期:2013-10-19 13:06:00ITPUB社区12周年站庆徽章
日期:2013-10-08 14:57:28
12#
发表于 2008-1-15 16:46 | 只看该作者
這個和bompexpl.EXPLODER_USEREXIT展出來的有什么不一樣的嗎?請教

使用道具 举报

回复
论坛徽章:
17
ERP板块每日发贴之星
日期:2007-12-20 01:05:28生肖徽章2007版:马
日期:2009-03-10 21:35:10生肖徽章2007版:猴
日期:2009-03-10 21:29:55生肖徽章2007版:猪
日期:2009-03-10 21:24:49生肖徽章2007版:鼠
日期:2009-03-10 21:12:512008新春纪念徽章
日期:2008-02-13 12:43:03生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:虎
日期:2008-01-02 17:35:53生肖徽章2007版:兔
日期:2008-01-02 17:35:53
13#
发表于 2008-1-17 10:15 | 只看该作者
LZ很厲害哦!!!
雖然速度有點慢,
不過的確是展出來了,
只是少了替代料,
不過還是讚!!!

使用道具 举报

回复
论坛徽章:
4
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44授权会员
日期:2007-12-03 21:48:08ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282012新春纪念徽章
日期:2012-01-04 11:50:44
14#
发表于 2008-1-21 14:31 | 只看该作者
原帖由 ysfabm 于 2008-1-14 17:04 发表
这是俺原创的,速度很快,写个循环就可以导出多个编码的BOM树,使用时把SQL中的“组织ID”换成自己EBS的实际ID。

初次写这种语句,好用支持一下!

SELECT distinct
       bb.BOM层次,
       bb.装配件,
       bb.装配件说明,
       bb.组件序号,
       bb.组件,
       bb.组件说明,
       bb.组件用量,
       bb.单位,
       bb.利用率,
       bb.冲减库房,
       bb.冲减货位,
       bb.属性,
       bb.BOM创建时间,
       BOR.COMPLETION_SUBINVENTORY 入库,
       MSI.WIP_SUPPLY_SUBINVENTORY 冲减,
       MSI.MAXIMUM_ORDER_QUANTITY  最大批量,
       MSI.LEAD_TIME_LOT_SIZE      提前期,
       MSI.FULL_LEAD_TIME          制造周期,
       MSI.FIXED_LOT_MULTIPLIER    固定增加,
       MSI.MINIMUM_ORDER_QUANTITY  最小批量,
       MSI.FIXED_ORDER_QUANTITY    固定定货量,
       MSI.FIXED_DAYS_SUPPLY       固定天数,
       MSI.PLANNER_CODE            计划员
  FROM MTL_SYSTEM_ITEMS          MSI,
       BOM_OPERATIONAL_ROUTINGS  BOR,
       BOM_OPERATION_SEQUENCES   BOS,
       (select distinct
               aa.lvl                       BOM层次,
               msi.segment1                 装配件,
               msi.description              装配件说明,
               aa.item_num                  组件序号,
               msi1.segment1                组件,
               msi1.description             组件说明,
               aa.component_quantity        组件用量,
               msi1.primary_unit_of_measure 单位,
               aa.COMPONENT_YIELD_FACTOR    利用率,
               msi1.wip_supply_subinventory 冲减库房,
               mil.segment1 || '.' || mil.segment2 || '.' || mil.segment3 || '.' ||
               mil.segment4                 冲减货位,
               decode(msi1.planning_make_buy_code,1,'制造',2,'采购') 属性,
               to_char(msi1.creation_date,'yyyy.mm.dd hh24:mm.ss')   BOM创建时间,
               msi1.inventory_item_id
                 
        from mtl_system_items_b       msi,
             mtl_system_items_b       msi1,
             bom_bill_of_materials    bom,
             bom_inventory_components bic,
             mtl_item_locations       mil,
             (
             select level lvl,
               bic.bill_sequence_id,
               bic.component_item_id,
               bic.component_quantity,
               bic.OPERATION_SEQ_NUM,
               bic.COMPONENT_YIELD_FACTOR,
               bic.COMPONENT_SEQUENCE_ID,
               bic.item_num,
               bic.wip_supply_type,
               bic.supply_subinventory,
               bic.effectivity_date
          FROM bom_inventory_components bic
         where disable_date IS NULL
         start with bic.bill_sequence_id in
                    (select bill_sequence_id
                       from bom_bill_of_materials bom2,
                            inv.mtl_system_items_b    msi
                      where bom2.assembly_item_id = msi.inventory_item_id
                        and bom2.organization_id = msi.organization_id
---------------------------------------输入要查询的项目---------------------------------------------
                        and msi.segment1 ='料号名称'
---------------------------------------输入要查询的项目---------------------------------------------
                        and msi.organization_id = 组织ID
                        and bom2.alternate_bom_designator is null)
        CONNECT BY bic.bill_sequence_id in prior
                   (SELECT distinct bill_sequence_id
                      FROM bom_bill_of_materials BO, inv.mtl_system_items_b msi
                     WHERE BO.assembly_item_id = bic.component_item_id
                       AND BO.organization_id = 组织ID
                       and bo.ORGANIZATION_ID = msi.ORGANIZATION_ID
                       and bo.ASSEMBLY_ITEM_ID = msi.INVENTORY_ITEM_ID
                       and bo.alternate_bom_designator is null
                       and disable_date IS NULL)) aa
        where msi.organization_id=组织ID
          and msi1.organization_id=组织ID
          and bom.organization_id=组织ID
          and msi.inventory_item_id=bom.assembly_item_id
          and bom.bill_sequence_id=bic.bill_sequence_id
          and bic.component_item_id=msi1.inventory_item_id
          and bic.disable_date is null
          and aa.bill_sequence_id=bic.bill_sequence_id
          and aa.component_item_id=msi1.inventory_item_id
          and mil.inventory_location_id(+)=msi1.wip_supply_locator_id
          and mil.organization_id(+)=组织ID
        order by
          aa.lvl,
          aa.item_num) bb
WHERE BOR.ASSEMBLY_ITEM_ID(+) = MSI.INVENTORY_ITEM_ID
   AND BOS.ROUTING_SEQUENCE_ID(+) = BOR.ROUTING_SEQUENCE_ID
   AND MSI.ORGANIZATION_ID(+) = 组织ID
   and bor.alternate_routing_designator is null
   and bb.inventory_item_id=msi.inventory_item_id
order by
       bb.BOM层次,
       bb.装配件,
       bb.装配件说明,
       bb.组件序号,
       bb.组件

这个写的好,不知道能否按这样的方法去分如图
1
   2 3 4
   2 3 4
   2 3 4
解决方法就是先将assembly_item先贮存起来....

[ 本帖最后由 wenvay 于 2008-1-21 16:15 编辑 ]

bom.JPG (3.07 KB, 下载次数: 55)

bom.JPG

使用道具 举报

回复
论坛徽章:
1
2011新春纪念徽章
日期:2011-02-18 11:42:49
15#
发表于 2008-12-21 18:41 | 只看该作者

回复 #8 kevlo 的帖子

问题出在用户是用item_id来作为父子阶的关联关系,但是同一个料号同一组织下,可能存在多个一样的料。

使用道具 举报

回复
论坛徽章:
9
生肖徽章2007版:鼠
日期:2008-09-29 16:22:162009日食纪念
日期:2009-07-22 09:30:00生肖徽章2007版:马
日期:2009-08-14 08:48:07ITPUB9周年纪念徽章
日期:2010-10-08 09:28:52奥运会纪念徽章:篮球
日期:2012-07-10 13:12:16奥运会纪念徽章:排球
日期:2012-08-15 00:05:55ITPUB 11周年纪念徽章
日期:2012-10-09 18:06:20鲜花蛋
日期:2012-10-31 18:44:53迷宫蛋
日期:2012-12-26 11:54:09
16#
发表于 2008-12-22 14:24 | 只看该作者
留个脚印!

使用道具 举报

回复
论坛徽章:
43
生肖徽章2007版:羊
日期:2008-05-27 15:39:39铁扇公主
日期:2012-01-25 17:44:56茶鸡蛋
日期:2012-06-10 20:12:42奥运会纪念徽章:跳水
日期:2012-07-09 16:38:12奥运会纪念徽章:手球
日期:2012-07-24 08:28:36奥运会纪念徽章:艺术体操
日期:2012-09-19 13:18:16奥运会纪念徽章:柔道
日期:2012-09-26 12:34:19ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:19蜘蛛蛋
日期:2012-11-06 19:43:442013年新春福章
日期:2013-02-25 14:51:24
17#
发表于 2008-12-23 11:32 | 只看该作者
頂一下!

使用道具 举报

回复
论坛徽章:
1
2011新春纪念徽章
日期:2011-02-18 11:43:35
18#
发表于 2008-12-23 11:46 | 只看该作者

原理?

這種用遞歸才可以完成的,這樣的關聯原理是什麽? SQL的原理是一個迪卡爾積,再通過條件找出自己需要的記錄。

我知道一條語句可以把所有的直接主父BOM找出來,但憑什么條件把歸於一個主BOM的所有直接及間接子BOM都找出來?

使用道具 举报

回复
论坛徽章:
1
19#
发表于 2008-12-23 12:53 | 只看该作者
不錯,收藏下

使用道具 举报

回复
论坛徽章:
4
生肖徽章2007版:狗
日期:2009-03-05 18:10:42祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:21:02ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26
20#
发表于 2008-12-23 20:36 | 只看该作者
这才几层啊?好像还不一定把?

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表