Oracle EBS-SQL (BOM-15):检查多层BOM(含common BOM).sql

时间:2023-09-27 20:50:32

select       distinct

b.lvl                                                      层次,

b.OPERATION_SEQ_NUM                        工序,

msi1.segment1                                 父件编码,

msi1.description                                父件描述,

msi1.item_type                                 父件类型,

msi1.inventory_item_status_code 父件编码状态,

msi2.segment1                                 子件编码,

msi2.description                                子件描述,

msi2.item_type                                 子件类型,

b.component_quantity                             用量,

b.COMPONENT_YIELD_FACTOR              产出率

from inv.mtl_system_items_b msi1,

inv.mtl_system_items_b msi2,

apps.BOM_BILL_OF_MATERIALS bom,

(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 apps.BOM_INVENTORY_COMPONENTS bic

where bic.disable_date IS NULL

and bic.IMPLEMENTATION_DATE is not null

start with bic.bill_sequence_id in

(select nvl(common_bill_sequence_id,bill_sequence_id)

from apps.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.organization_id in(1,157)

and bom2.alternate_bom_designator is null)

CONNECT BY bill_sequence_id in prior

(SELECT distinct nvl(common_bill_sequence_id,bill_sequence_id)

FROM apps.BOM_BILL_OF_MATERIALS BO,

inv.mtl_system_items_b    msi

WHERE BO.assembly_item_id = bic.component_item_id

AND BO.organization_id in(1,157)

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)) b

where b.bill_sequence_id = nvl(bom.common_bill_sequence_id,bom.bill_sequence_id)

and bom.ORGANIZATION_ID in(1,157)

and bom.ORGANIZATION_ID = msi1.ORGANIZATION_ID

and bom.ASSEMBLY_ITEM_ID = msi1.INVENTORY_ITEM_ID

and bom.ORGANIZATION_ID = MSI2.ORGANIZATION_ID

AND b.component_item_id = MSI2.INVENTORY_ITEM_ID

and msi2.inventory_item_status_code <> 'Inactive'

order by b.lvl