马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622 。
您需要 登录 才可以下载或查看,没有帐号?注册
x
一、背景
1.Cost模块设置大量的ITEM,Activities,Resource;
2.每月不间断的进行成本更新且ITEM在不断增加中,导致Table : CST_ITEM_COST_DETAILS在ERP使用不到二年的时间里记录达到了5700万条;
3.需要及时对其进行清除,以达系统稳定及运行速度现业的满足。
二、概念及应用后台分析
应用于(Applies to):EBS系统版本:11.5.10.2 ;BOM Version:11i.BOM.J(2768762)
成本管理模块中存在两处可以直接运行请求来完成清除历史数据的功能。
1.清除标准成本更新历史记录(Purge Cost Update History)
解释:请求用来清理成本更新自动保存的历史数据,需要运行成本更新时所以的库存期间关闭后方可执行。
路径:成本管理模块(Cost Management)>>物料成本(Item Cost)>>标准成本更新(Standard Cost Update)>> Purge Cost Update History
问题:在提升此请求后发生APP-FND-01050及APP-FND-00730(如下图)
解决方案:进入系统管理员职责
Profile: CST: 维护成本权限(CST: Maintain Cost Privilege )= “YES”
Reference Metalink Note No: 160846.1
请求参数(Parameter)
选项代码(Option Code)

后台分析
程序Option Code 定义
1 - cost update adjustment details
2 - item cost history
3 - adjustment details and item cost history
Cost_update_id的确认
SELECT c.cost_update_id
FROM apps.cst_cost_updates c, apps.mfg_lookups lu
WHERE c.organization_id = 106
--AND :$FLEX$.CST_SRS_UPDATE_COST_PROFILE = 1
--AND :$FLEX$.CST_SRS_PRIMARY_COST_METHOD = 1
AND lu.lookup_code = c.snapshot_saved_flag
AND lu.lookup_type = 'SYS_YES_NO'
AND TO_CHAR (c.update_date, 'yyyy-mm-dd HH24:MI:SS')='2006-06-19 15:37:53'
--Concurrent Parameter选择
AND EXISTS (
SELECT 1
FROM apps.org_acct_periods
WHERE organization_id = 106 --:$PROFILES$.MFG_ORGANIZATION_ID
AND open_flag = 'N'
AND c.update_date < schedule_close_date + 1)
ORDER BY update_date DESC
【备注:在11.5.2以前代码Exists的部分没有,也就是之前系统在做成本更新记录清除的时候并不会确认库存期间是否关闭,或者说库存期间没有关闭也会并清除,当然这是一个BUG,Noteno: 160846.1已经说明】
Option Code为1时
IF I_PURGE_OPTION = 1 THEN
/* Cost Update Adjustment Details */
DELETE FROM cst_std_cost_adj_values
WHERE organization_id IN (
SELECT organization_id
FROM mtl_parameters
WHERE cost_organization_id = I_ORG_ID
)
AND cost_update_id <= I_UPDATE_ID;
UPDATE cst_cost_updates
SET snapshot_saved_flag = 2,
last_update_date = SYSDATE,
last_updated_by = I_USER_ID,
last_update_login = I_USER_LOGIN,
request_id = L_REQUEST_ID,
program_id = L_PROGRAM_ID,
program_application_id = 702,
program_update_date = SYSDATE
WHERE organization_id = I_ORG_ID
AND cost_update_id <= I_UPDATE_ID
AND snapshot_saved_flag = 1;
END IF;
Option Code为2时
IF I_PURGE_OPTION = 2 THEN
/* Item Cost History */
DELETE FROM cst_standard_costs
WHERE organization_id = I_ORG_ID
AND cost_update_id <= I_UPDATE_ID;
DELETE FROM cst_elemental_costs
WHERE organization_id = I_ORG_ID
AND cost_update_id <= I_UPDATE_ID; DELETE FROM cst_cost_updates C
WHERE snapshot_saved_flag = 2
AND organization_id = I_ORG_ID
AND cost_update_id <= I_UPDATE_ID
AND NOT EXISTS (
SELECT 'X'
FROM cst_standard_costs
WHERE cost_update_id = C.cost_update_id
);
END IF;
Option Code为3时
IF I_PURGE_OPTION = 3 THEN
/* Adjustment Details and History */
DELETE FROM cst_std_cost_adj_values
WHERE organization_id IN (
SELECT organization_id
FROM mtl_parameters
WHERE cost_organization_id = I_ORG_ID
)
AND cost_update_id <= I_UPDATE_ID; DELETE FROM cst_standard_costs C
WHERE organization_id = I_ORG_ID
AND cost_update_id <= I_UPDATE_ID; DELETE FROM cst_elemental_costs
WHERE organization_id = I_ORG_ID
AND cost_update_id <= I_UPDATE_ID; DELETE FROM cst_cost_updates C
WHERE organization_id = I_ORG_ID
AND cost_update_id <= I_UPDATE_ID
AND NOT EXISTS (
SELECT 'X'
FROM cst_standard_costs
WHERE cost_update_id = C.cost_update_id
);
END IF; 1.清除成本信息
解释:请求用来清理无用的成本数据,参数是成本类型、清除内容。
路径:成本管理模块(Cost Management)>>成材成批编辑(Cost Mass Edits)>>清除成本信息(Purge Cost Information)
请求参数(Parameter):
选项代码(Option Code)
后台分析
程序Option Code 定义
1. Not based on rollup items, costs and controls
2. Based on rollup items, costs and controls
3. Resource costs
4. Resource/Overhead association
5. Department overhead rates
6. Cost type and all costs
Option Code为1,2时
1.cst_type_id;org_id参数中提取
2.based_on_rollup(1,2)根据Option code做相反设置
3.delete: CST_ITEM_COST_DETAILS;CST_ITEM_COSTS
DELETE FROM CST_ITEM_COST_DETAILS CICD
WHERE COST_TYPE_ID = cst_type_id
AND ORGANIZATION_ID = org_id
AND EXISTS
(SELECT 'X'
FROM CST_ITEM_COSTS CIC
WHERE CIC.INVENTORY_ITEM_ID = CICD.INVENTORY_ITEM_ID
AND CIC.COST_TYPE_ID = cst_type_id
AND CIC.ORGANIZATION_ID = org_id
AND CIC.BASED_ON_ROLLUP_FLAG = based_on_rollup); DELETE FROM CST_ITEM_COSTS
WHERE COST_TYPE_ID = cst_type_id
AND ORGANIZATION_ID = org_id
AND BASED_ON_ROLLUP_FLAG = based_on_rollup Option Code为3时
delete: CST_RESOURCE_COSTS
DELETE FROM CST_RESOURCE_COSTS
WHERE COST_TYPE_ID = cst_type_id
AND ORGANIZATION_ID = org_id;
Option Code为4时
delete: CST_RESOURCE_OVERHEADS
DELETE FROM CST_RESOURCE_OVERHEADS
WHERE COST_TYPE_ID = cst_type_id
AND ORGANIZATION_ID = org_id;
Option Code为5时
delete: CST_DEPARTMENT_OVERHEADS
DELETE FROM CST_DEPARTMENT_OVERHEADS
WHERE COST_TYPE_ID = cst_type_id
AND ORGANIZATION_ID = org_id;
Option Code为6时
delete:
table1 = CST_RESOURCE_COSTS
table2 = CST_RESOURCE_OVERHEADS
table3 = CST_DEPARTMENT_OVERHEADS
table4 = CST_COST_TYPE_HISTORY
table5 = CST_ITEM_COST_DETAILS
table7 = CST_ITEM_COSTS
DELETE FROM &&table1
WHERE COST_TYPE_ID = cst_type_id
AND ORGANIZATION_ID = org_id;
DELETE FROM &&table2
WHERE COST_TYPE_ID = cst_type_id
AND ORGANIZATION_ID = org_id;
DELETE FROM &&table3
WHERE COST_TYPE_ID = cst_type_id
AND ORGANIZATION_ID = org_id;
DELETE FROM &&table4
WHERE COST_TYPE_ID = cst_type_id
AND ORGANIZATION_ID = org_id;
DELETE FROM &&table5
WHERE COST_TYPE_ID = cst_type_id
AND ORGANIZATION_ID = org_id;
DELETE FROM &&table7
WHERE COST_TYPE_ID = cst_type_id
AND ORGANIZATION_ID = org_id;
【当Cost Type 不为Frozen时,在进行清除之后会在CST_COST_TYPE_HISTORY中记录历史信息,换言之不能对Frozen的成本类型进行删除】
Reference SQL File :CSTCSPCT(清除成本信息) ;CSTCSPCU(清除标准成本更新历史记录) 三、成本ERD
|