Create BOM

Create bom 相关说明


Create BOM
1.Create BOM Header
A.判斷料件是否存在,是否允許建BOM,生產料件的BOM必須是生產料件
select msi.SEGMENT1,
msi.BOM_ENABLED_FLAG,
msi.ENG_ITEM_FLAG,
msi.*
from mtl_system_items_b msi
where msi.SEGMENT1 in('002849NCP','F1225104NP-GBA1')
and msi.ORGANIZATION_ID in (6,13)

B.是否有建主BOM和替代BOM(這里只考慮標準BOM,若要建立替代BOM之前,主BOM一定存在)
select *
from BOM_BILL_OF_MATERIALS bom
where bom.ORGANIZATION_ID in(6,13)
and bom.ASSEMBLY_ITEM_ID=191446
C.當A.B條件滿足后
INSERT INTO bom_bill_of_mtls_interface
(organization_id,
assembly_item_id,
Assembly_type,
Transaction_type,
Process_flag
)
select 13,
bom.assembly_item_id,
1,'Create',1
from BOM_BILL_OF_MATERIALS bom
where bom.ORGANIZATION_ID=6
and bom.ASSEMBLY_ITEM_ID=191446
and BOM.ALTERNATE_BOM_DESIGNATOR IS NULL
2.A.BOM中的下階料件是否存在,是否失效,工程變更是否執行,再加上主BOM和替代BOM的篩選
Operation_seq是否存在(這里不論存在與否都默認為1)
select bic.COMPONENT_ITEM_ID,
bom.ASSEMBLY_ITEM_ID,
bom.ORGANIZATION_ID,
bic.OPERATION_SEQ_NUM,
bic.EFFECTIVITY_DATE,
BIC.COMPONENT_QUANTITY,
bic.ITEM_NUM,
bic.SUPPLY_SUBINVENTORY
from BOM_BILL_OF_MATERIALS bom,
BOM_INVENTORY_COMPONENTS bic
where bom.ORGANIZATION_ID in (6,13)
and bom.ASSEMBLY_ITEM_ID=361346
and bom.BILL_SEQUENCE_ID=bic.BILL_SEQUENCE_ID
AND ((TO_CHAR(BIC.EFFECTIVITY_DATE,'yyyy-mm-dd')<=TO_CHAR(SYSDATE,'yyyy-mm-dd')
AND (BIC.DISABLE_DATE IS NULL OR TO_CHAR(BIC.DISABLE_DATE,'yyyy-mm-dd')>=TO_CHAR(SYSDATE,'yyyy-mm-dd'))
)
OR
(TO_CHAR(BIC.EFFECTIVITY_DATE,'yyyy-mm-dd')>=TO_CHAR(SYSDATE,'yyyy-mm-dd') AND BIC.CHANGE_NOTICE IS NOT
NULL )
)
AND TO_CHAR(BIC.IMPLEMENTATION_DATE,'yyyy-mm-dd')<=TO_CHAR(SYSDATE,'yyyy-mm-dd')
-- AND BOM.ALTERNATE_BOM_DESIGNATOR IS NULL
AND BIC.COMPONENT_ITEM_ID in
(SELECT MSI.INVENTORY_ITEM_ID
FROM MTL_SYSTEM_ITEMS_B MSI
WHERE MSI.ORGANIZATION_ID=13
AND MSI.INVENTORY_ITEM_ID=BIC.COMPONENT_ITEM_ID
)
B.若以上條件滿足時
INSERT INTO bom_inventory_comps_interface
(component_item_id,
assembly_item_id,
organization_id,
operation_seq_num,
effectivity_date,
COMPONENT_QUANTITY,
--ITEM_NUM,
--SUPPLY_SUBINVENTORY,
Transaction_type,
Process_flag)
select bic.COMPONENT_ITEM_ID,
bom.ASSEMBLY_ITEM_ID,
13,--bom.ORGANIZATION_ID,
1,--bic.OPERATION_SEQ_NUM,
bic.EFFECTIVITY_DATE,
BIC.COMPONENT_QUANTITY,
--bic.ITEM_NUM,
--bic.SUPPLY_SUBINVENTORY,
--bic.
'Create',1
from BOM_BILL_OF_MATERIALS bom,
BOM_INVENTORY_COMPONENTS bic
where bom.ORGANIZATION_ID in (6,13)
and bom.ASSEMBLY_ITEM_ID=361346
and bom.BILL_SEQUENCE_ID=bic.BILL_SEQUENCE_ID
AND ((TO_CHAR(BIC.EFFECTIVITY_DATE,'yyyy-mm-dd')<=TO_CHAR(SYSDATE,'yyyy-mm-dd')
AND (BIC.DISABLE_DATE IS NULL OR TO_CHAR(BIC.DISABLE_DATE,'yyyy-mm-dd')>=TO_CHAR(SYSDATE,'yyyy-mm-dd'))
)
OR
(TO_CHAR(BIC.EFFECTIVITY_DATE,'yyyy-mm-dd')>=TO_CHAR(SYSDATE,'yyyy-mm-dd') AND BIC.CHANGE_NOTICE IS NOT
NULL )
)
AND TO_CHAR(BIC.IMPLEMENTATION_DATE,'yyyy-mm-dd')<=TO_CHAR(SYSDATE,'yyyy-mm-dd')
AND BOM.ALTERNATE_BOM_DESIGNATOR IS NULL
AND BIC.COMPONENT_ITEM_ID in
(SELECT MSI.INVENTORY_ITEM_ID
FROM MTL_SYSTEM_ITEMS_B MSI
WHERE MSI.ORGANIZATION_ID=13
AND MSI.INVENTORY_ITEM_ID=BIC.COMPONENT_ITEM_ID
)

commit;
以上操作中需要注意的地方
1.subtitutes item和common bill 的處理(公司目前暫時沒有使用這種功能),
common Routing針對一個org,com bill 可以針對不同的org,但此程序暫時不考慮
2.所有BOM版本根據料件的版本,在COPY BOM單頭的時不用考慮制程版本的問題
3.在往接口表中插入數據的時,一般輸入必要的欄位,系統就通過,一些欄位系統根據目標ORG的有關環境設定自動默認
4.item seq:系統並沒有限制,若不給與,系統降默認10,20,30等遞增的順序;
若給與將按source org中的item seq一樣均可,此時程式暫時不考慮
5.supply subinventory,當在系統中均設定后,可以通過程序COPY過,
否則即destination org不存在,則程式COPY后認為時無效數據出錯;
從界面上COPY即使系統均設定后,仍不能帶過來.
為了安全,程式暫時不考慮此欄位
6.component_quantity一定要帶上,否則將默認為1
7.當Routing不存在的時候,op_seq應設定為1,其他值均無效;
當Routing存在的時候,op_seq可以指定為1,或主制程中任意制程,而其他替代制程或數字均無效
從程式安全考慮,設op_seq為1
8.針對公司bom中operation seq和routing seq不一致的情況
原因主要有兩個
一個是用戶先建立BOM,后建ROUTING,所以BOM中OPERATION seq為1;
另一個是用戶先建立ROUTING,后建BOM的順序后,因ECO后,使原來的ROUting SEQ不存在,而BOM又不能自動更新,才導致的(F1325701BN-HDA4)
針對以上原因,均沒有影響公司的生產狀況,因為他們都是在WIP中OPERATION中的第一站進行投料
若要進行BOM COPY時,針對上述情況把異常檢核出來,讓用戶修改,進行直接COPY,但這種工作兩很多,
並且有可能影響到ECO變更歷程,所以才有7的結論.
9.有工程變更還沒有生效的情況,暫時不考慮(通過欄位IMPLEMENTATION_DATE)
10.部分結果的欄位
item_seq shipping_allowed supply_subinventory Eco_for_production pick_component op_seq
源Org 30 null M5 null null 200
程序COPY 系統默認 2 null(設定后,程序可帶過來) 2 2 1或200(一定使主制程)
界面COPY 30 null null(即使設定后,還需要手動增加) null null 200

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/41594/viewspace-50500/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/41594/viewspace-50500/

Windchill提供了多种API来处理BOM结构。其中一个常用的API是wt.bom.BOMLine对象,它代表BOM结构中的一行。 要复制BOM结构,可以使用以下步骤: 1.获取原始BOM结构的根节点wt.bom.BOMView对象。例如,可以使用以下代码获取根节点: ``` BOMView rootBOMView = BOMView.newBOMView(bom); ``` 其中,`bom`是原始BOM的wt.bom.BOM对象。 2.遍历原始BOM结构的每个节点,创建新的wt.bom.BOMLine对象,并添加到新的BOM结构中。例如,可以使用以下代码遍历原始BOM结构: ``` Enumeration<?> enumeration = rootBOMView.getTopLevelNodes(); while (enumeration.hasMoreElements()) { BOMLine bomLine = (BOMLine)enumeration.nextElement(); // 创建新的BOMLine对象,并添加到新的BOM结构中 } ``` 3.设置新BOM结构的根节点。例如,可以使用以下代码设置新BOM结构的根节点: ``` BOMView newRootBOMView = BOMView.newBOMView(newBOM); newRootBOMView.setView(iteration); newRootBOMView.setWhereUsed(false); newRootBOMView.setDisplayType(DisplayType.FLAT); ``` 其中,`newBOM`是新的wt.bom.BOM对象,`iteration`是新BOM所属的wt.vc.Iteration对象。 4.将新的BOM结构保存到Windchill中。例如,可以使用以下代码保存新的BOM结构: ``` newBOM = BOMService.createBOM(newBOM, newRootBOMView); ``` 其中,`newBOM`是新的wt.bom.BOM对象。 需要注意的是,复制BOM结构时可能还需要处理BOM行的属性、数量等信息,具体操作可以参考Windchill API文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值