壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2198|回复: 7

[成本] 清除成本信息应用及后台过程(Purge Cost Information)

    [复制链接]
发表于 2011/11/17 17:57:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服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



发表于 2011/11/19 08:18:51 | 显示全部楼层
楼主研究得比较深入,谢谢分享!
发表于 2012/3/2 11:53:38 | 显示全部楼层
好帖要顶起!!!
发表于 2012/3/2 13:03:04 | 显示全部楼层
强帖 顶起~~
发表于 2012/3/3 07:56:40 | 显示全部楼层
不错
谢谢分享 下载学习
发表于 2013/6/19 13:48:00 | 显示全部楼层
不錯,我們公司也正在弄這個事情!參考一下。
发表于 2013/8/8 15:37:11 | 显示全部楼层
楼主好贴 前来学习。。。。
发表于 2013/9/16 11:02:08 | 显示全部楼层
真實寫得不錯,很有參考價值。我正準備客制一些刪除料號成本信息的功能。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 01:53 , Processed in 0.020001 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表