展BOM计算物料需求或展BOM成本明细
路径:BOM->清单->多级表单如下
主要调用Oracle EBS系统存储过程:bompexpl.exploder_userexit 和临时表:bom_explosion_temp。
参数 | 说明 | 备注 |
Verify_Flag | 默认为0 | 默认值为0 |
Org_Id | 库存组织ID | |
Order_By | 排序 | 1为 工序;物料序号 2为 物料序号;工序 |
Grp_Id | 组别ID | 序列Bom_Explosion_Temp_S.NextVal给它赋值 |
Session_Id | 会话ID,默认为0 | |
Levels_To_Explode | 最大层级 | 默认为设置 |
Bom_Or_Eng | BOM或工程BOM | 默认值为1 |
Impl_Flag | 仅限于已实施的BOM | 默认值为1 |
Plan_Factor_Flag | 使用计划% | 默认值为2 |
Explode_Option | 展BOM选项,默认值为3 | 1.全部 2.当前 3.将来和当前 |
Module | 成本 | 默认值为2 |
Cst_Type_Id | 成本类型 | 1.为Frozen冻结成本 3.为Pending待定成本 |
Std_Comp_Flag | | 默认值为2 |
Expl_Qty | 数量 | 默认值为1 |
Item_Id | 物料ID | |
Alt_Desg | 替代项 | 默认值为Null |
Comp_Code | | 默认值为Null |
Unit_Number_From | 部件号从 | |
Unit_Number_To | 部件号至 | |
Rev_Date | 有效日期 | 默认为当前时间 |
Show_Rev | | 默认值为1 |
Material_Ctrl | 物料控制 | |
Lead_Time | 提前期 | 默认值为2 |
实例代码如下:
-- 1.产生临时表查询数据 --------------------------------------------------------------------------------------------------------------
DECLARE
L_GRP_ID NUMBER;
L_SESSION_ID NUMBER;
L_ORG_ID NUMBER;
L_LEVELS_TO_EXPLODE NUMBER := 10;
L_MODULE NUMBER DEFAULT 2; -- BOM = 2
L_CST_TYPE_ID NUMBER DEFAULT - 1; -- All cost = -1 else 0
L_ITEM_ID NUMBER;
L_BOM_OR_ENG NUMBER;
L_USING_REQ_QUANTITY NUMBER;
L_USING_ASS_DEM_DATE DATE;
L_REV_DATE VARCHAR2(20) := TO_CHAR(SYSDATE, 'DD-MON-YY HH24:MI');
L_ERR_MSG VARCHAR2(250);
L_ERROR_CODE NUMBER;
BEGIN
-- 首先要有一个Group id
SELECT BOM_EXPLOSION_TEMP_S.NEXTVAL
INTO L_GRP_ID
FROM DUAL;
-- 其次要得到一个Session id
SELECT BOM_EXPLOSION_TEMP_SESSION_S.NEXTVAL
INTO L_SESSION_ID
FROM DUAL;
BOMPEXPL.EXPLODER_USEREXIT(
VERIFY_FLAG =>0,
ORG_ID =>104, --V_ORG_ID, --组织ID
ORDER_BY =>1, --排序
GRP_ID =>L_GRP_ID, --分组 L_GRP_ID
SESSION_ID =>L_SESSION_ID, --会话ID L_SESSION_ID
LEVELS_TO_EXPLODE =>10, --最大层级 L_LEVELS_TO_EXPLODE,
BOM_OR_ENG =>1, --L_BOM_OR_ENG,
IMPL_FLAG =>1, --仅限于已实施的BOM
PLAN_FACTOR_FLAG =>2, --使用计划%
EXPLODE_OPTION =>2, --2, --BOM显示类型
MODULE =>L_MODULE, --成本 L_MODULE
CST_TYPE_ID =>L_CST_TYPE_ID, --成本类型 L_CST_TYPE_ID
STD_COMP_FLAG =>2,
EXPL_QTY =>1, --数量
ITEM_ID =>109543, -- 物料ID L_ITEM_ID
ALT_DESG =>'', ---NULL, 替代项
COMP_CODE =>'',
REV_DATE =>L_REV_DATE, --TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS'), --有效日期
ERR_MSG =>L_ERR_MSG,
ERROR_CODE =>L_ERROR_CODE
);
END ;
-- 2.查询临时表 ----------------------------------------------------------------------------------------------------------------------
--SQL1 运行结束后用以下语句得到结果.
-- 2.1 ----------------------------------------------------------------------------
SELECT BOM_EXPLOSION_TEMP_S.CURRVAL
FROM DUAL
;
-- 2.2 ----------------------------------------------------------------------------
SELECT *
FROM BOM_EXPLOSION_TEMP BET
WHERE 1=1
AND BET.GROUP_ID = 201083
;
SELECT bet.plan_level
,bet.item_num "Item Seq"
,bet.operation_seq_num "Operation Seq"
,msi.segment1 "Component"
,msi.item_type "Component Type"
,bet.component_quantity "Component Quantity" --组件用量
,bet.extended_quantity "Extended Quantity" --耗用
,bet.component_code --阶梯式component_item_id组合
,bet.component_item_id
,bet.sort_order
,bet.group_id
-- ,bet.*
FROM bom_explosion_temp bet
,mtl_system_items_b msi
WHERE 1=1
AND bet.component_item_id = msi.inventory_item_id
AND bet.organization_id = msi.organization_id
AND bet.group_id = 201083
ORDER BY bet.sort_order
查询结果:
