BOM相關問題

Bom主要用的兩張表:
表名: bom.bom_bill_of_materials (BOM清單父項目)
表名:bom.bom_inventory_components (說明:BOM清單構成項目)
示例代碼:
–獲取BOM ATO層物料屬性
BEGIN
SELECT bic.component_item_id
INTO l_component_item_id
FROM bom_inventory_components bic,
bom_bill_of_materials bom,
mtl_system_items_b msi,
CUX_CREATE_OE_ORDER_TEMP caql
WHERE bic.bill_sequence_id = bom.bill_sequence_id
AND bom.alternate_bom_designator IS NULL
AND bic.component_item_id = msi.inventory_item_id
AND bom.organization_id = msi.organization_id
AND nvl(bic.disable_date, SYSDATE + 1) > SYSDATE
AND msi.bom_item_type = 1 – 模型層
AND bom.assembly_item_id = caql.inventory_item_id
AND bom.organization_id = p_organization_id
AND caql.group_id = p_group_id
AND caql.line_number = p_line_number
GROUP BY bic.component_item_id, msi.segment1;
表名: bom.bom_bill_of_materials
說明: BOM清單父項目
BILL_SEQUENCE_ID NUMBER 清單序號(關鍵字)
ASSEMBLY_ITEM_ID NUMBER 裝配件內碼
ORGANIZATION_ID NUMBER 組織代碼
ASSEMBLY_TYPE NUMBER 裝配類別
SPECFIIC_ASSEMBLY_COMMENT VARCHAR2(240) 註釋(裝配件狀態P、R等)
COMMON_ORGANIZATION_ID NUMBER 公共組織
COMMON_BILL_SEQUENCE_ID NUMBER 公共序號
COMMON_ASSEMBLY_ITEM_ID NUMBER 公共項目內碼

表名:bom.bom_inventory_components
說明:BOM清單構成項目
COMPONENT_SEQUENCE_ID NUMBER 構件序號
BILL_SEQUENCE_ID NUMBER 清單序號
OPERATION_SEQ_NUM NUMBER 操作序列號
COMPONENT_ITEM_ID NUMBER
ITEM_NUM NUMBER 項目序列號
COMPONENT_QUANTITY NUMBER 構件數量
COMPONENT_YIELD_FACTOR NUMBER 產出因子
EFFECTIVITY_DATE DATE 生效日期
DISABLE_DATE DATE 失效日期
CHANGE_NOTICE VARCHAR2(10) 更改註釋(ECO更改號)
PLANNING_FACTOR NUMBER 計劃百分比
QUANTITY_RELATED NUMBER 相關數量
SO_BASIS NUMBER
OPTIONAL NUMBER 是否可選(1.是;2.否)
MUTUALLY_EXCLUSIVE_OPTIONS NUMBER 互斥標識(1.是;2.否)
WIP_SUPPLY_TYPE NUMBER 車間供應類型(1.推式2.裝配拉式3.操作拉式
4.大量5.供應商6.虛擬)
supply_subinventory 供應子庫存
supply_locator_id 供應貨位ID
BOM_ITEM_TYPE NUMBER 清單項目類型(1.模型2.選項類3.計劃中4.標準)
INCLUDE_ON_SHIP_DOCS NUMBER 包含在發運文檔中(1.是;2.否)
REQUIRED_FOR_REVENUE NUMBER 需要進款(1.是;2.否)
REQUIRED_TO_SHIP NUMBER 需要發運(1.是;2.否)
SHIPPING ALLOWED NUMBER 搬運允許(1.是;2.否)
INCLUDE_IN_COST_ROLLUP NUMBER 計入成本累加中(1.是;2.否)
CHECK_ATP NUMBER ATP檢查(1.是;2.否)
根據已有的物料,可以向下或者是向上展開bom,主表就是物料清單父表和物料清單表,方法是遞歸

SELECT organization_id,
assembly_item_id,
(select segment1 from mtl_system_items_b msib
where msib.inventory_item_id= t.assembly_item_id
andmsib.organization_id=86 ) assembly_segment1,
(select segment1 from mtl_system_items_b msib
where msib.inventory_item_id= t.component_item_id
andmsib.organization_id=86 ) component_segment1,
component_item_id,
tree_level,
tree_max_level,
tree_node,
max_tree_node,
bill_sequence_id,
component_sequence_id,
first_bill_sequence_id,
parent_bill_sequence_id,
parent_item_id,
(select segment1 from mtl_system_items_b msib
where msib.inventory_item_id= t.parent_item_id
andmsib.organization_id=86 ) parent_segment1,
last_update_days,
ITEM_NUM
FROM (SELECTbom.organization_id,
bom.ASSEMBLY_ITEM_ID,–c.assembly_item_id AS assembly_item_id,
bic.component_item_id,
LEVEL AS tree_level,
MAX(LEVEL) over(PARTITION BYbom.organization_id) AS tree_max_level,
row_number() over(PARTITION BYbom.organization_idORDER BY 1) AS tree_node,
COUNT(1) over(PARTITION BYbom.organization_id) AS max_tree_node,
bom.bill_sequence_id,
bic.component_sequence_id,
first_value(bom.bill_sequence_id) over(PARTITION BYbom.organization_id) AS first_bill_sequence_id,
PRIOR bic.bill_sequence_id AS parent_bill_sequence_id,
PRIORbic.component_item_idAS parent_item_id,
MIN((SYSDATE - bic.last_update_date)) over(PARTITION BYbom.organization_id) AS last_update_days,
bic.ITEM_NUM
FROM bom_inventory_components bic, bom_bill_of_materials bom
WHERE bic.bill_sequence_id = bom.bill_sequence_id
AND bom.alternate_bom_designator IS NULL
AND bic.DISABLE_DATE IS NULL
START WITH bom.assembly_item_id = 35489–c.assembly_item_id
ANDbom.organization_id= 86 --目前只取86的數據
CONNECT BY PRIORbic.component_item_id= bom.assembly_item_id
AND PRIORbom.organization_id=bom.organization_id
) t
WHERE (t.last_update_days <= null OR null IS NULL)
order by tree_level,ITEM_NUM,assembly_segment1;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章