zoukankan      html  css  js  c++  java
  • open MMT.distributions = null on transaction type: WIP Lot Split

    open MMT.distributions = null on transaction type:  WIP Lot Split

     

     

     

    打开物料事务处理界面,发现事务处理类型为:WIP Lot Split点击其 distributions 按键,没有任何科目ACCOUNT信息。

    old fixed SQL:
    update mtl_material_transactions
    set costed_flag = 'N'
    where transaction_id = &wls_transaction_id;

    应用以上修正SQL,之后重启 Cost Manager,还是没有生成 account 科目资料,但 distributions
    按钮由灰变亮了,可以点击了。

     

    clip_image004

     

     

    针对此问题进行实验,得到以下表结构的数据变化:

    实验步骤:

    1.       MMT.distributions里的科目分录数据是由于成本管理器处理而生成,故而执行实验前先关闭Cost Manager,目的在于观察Cost Manager启用后,对表结构变化的影响

    2.       执行 WIP Lot Split之前,先计算 ORACLE EBS DB 后台所有表的总记录数与最新更新日期

    3.       进入ORACLE EBS APPS应用界面操作WIP Lot Split

    4.       再次计算ORACLE EBS DB后台所有表的总记录数与最新更新日期

    5.       找出总记录数或最新更新日期有差异的表

    clip_image006

    6.       启动成本管理器Cost Manager,再次计算 ORACLE EBS DB 后台所有表的总记录数与最新更新日期,以得知成本管理在此时对后台表做了哪些处理

    clip_image008

    SQL Script:

     

    --create table

    createtable cux_dev_analysis_tables

    (

    owner    varchar2(20),

    table_name varchar2(100),

    sql_count varchar2(3000),

    sql_last_update_date varchar2(3000),

    count1  number,

    count2  number,

    count3  number,

    count4  number,

    count5  number,

    count6  number,

    count7  number,

    count8  number,

    count9  number,

    count10  number,

    last_update_date1 varchar2(30),

    last_update_date2 varchar2(30),

    last_update_date3 varchar2(30),

    last_update_date4 varchar2(30),

    last_update_date5 varchar2(30),

    last_update_date6 varchar2(30),

    last_update_date7 varchar2(30),

    last_update_date8 varchar2(30),

    last_update_date9 varchar2(30),

    last_update_date10 varchar2(30),

    remark   varchar2(3000),

    process_flag   varchar2(5)

    );

     

    droptable cux_dev_analysis_tables;

     

    deletefrom cux_dev_analysis_tables;

     

    ==========================================================================

     

    insert  into cux_dev_analysis_tables(owner, table_name, sql_count, process_flag)

    select

    owner,

    object_name,

    'select count(*) from '|| object_name  sql_analysis

    ,'C1'

    from dba_objects obj

    where1=1

    and owner  in(

    'AP',

    'APPLSYS',

    'APPS',

    'AR',

    'BOM',

    'CE',

    'CLN',

    'CN',

    'CS',

    --'CSC',

    --'CSD',

    'ENG',

    'FA',

    'GL',

    --'HR',

    'INV',

    --'JTF',

    --'JTM',

    --'JTS',

    'OE',

    'ONT',

    'PO',

    'QA',

    'QP',

    'WIP',

    'WMS',

    'WPS',

    'WSH',

    'WSM',

    'XDO',

    'XLA'

    )

    and  object_name notlike'CUX%'

    and  object_name notlike'%$%'

    and  object_name notlike'%#%'

    and object_type ='TABLE'

    orderby owner asc, object_name asc

    ;

     

    ==========================================================================

     

     

    delete

    from cux_dev_analysis_tables

    where1=1

    and(table_name like'%BAK%'

        OR table_name like'%BK%'

        OR table_name like'CUX%'

        OR table_name like'%BACKUP%')

    ;

     

    delete

    from cux_dev_analysis_tables

    where1=1

    and  cux_dev_analysis_tools.digit_table(table_name)=1

    ;

     

     

    ==========================================================================

     

    update cux_dev_analysis_tables dat

    set dat.sql_last_update_date ='SELECT MAX(LAST_UPDATED_DATE) FROM '|| table_name

    where1=1

    andexists(

    select'X'

    from all_tab_columns atc

    where1=1

    and atc.column_name ='LAST_UPDATED_DATE'

    and atc.table_name = dat.table_name

    )

    ;

     

     

    update cux_dev_analysis_tables dat

    set dat.sql_last_update_date ='SELECT MAX(LAST_UPDATE_DATE) FROM '|| table_name

    where1=1

    andexists(

    select'X'

    from all_tab_columns atc

    where1=1

    and atc.column_name ='LAST_UPDATE_DATE'

    and atc.table_name = dat.table_name

    )

    ;

     

    ==========================================================================

     

     

    update cux_dev_analysis_tables

       set count1 = cux_dev_analysis_tools.execute_immediate_sql (sql_count)

          ,last_update_date1 =decode(sql_last_update_date,null, cux_dev_analysis_tools.execute_immediate_sql (sql_last_update_date))

          ,process_flag ='P1';

     

     

         

    update cux_dev_analysis_tables

       set count2 = cux_dev_analysis_tools.execute_immediate_sql (sql_count2)

          ,last_update_date2 =decode(sql_last_update_date,null, cux_dev_analysis_tools.execute_immediate_sql (sql_last_update_date))

          ,process_flag ='P2';     

         

         

     

     

    update cux_dev_analysis_tables

       set count3 = cux_dev_analysis_tools.execute_immediate_sql (sql_count)

          ,last_update_date3 =decode(sql_last_update_date,null, cux_dev_analysis_tools.execute_immediate_sql (sql_last_update_date))

          ,process_flag ='P3';          

     

    ==========================================================================

        

         

    select

    'SELECT * FROM '|| table_name ||';',

    cda.*

    from cux_dev_analysis_tables  cda

    where1=1

    and(count1 <> count2 or last_update_date1 <> last_update_date2 )

    ;     

     

     

     

    select

    'SELECT * FROM '|| table_name ||';',

    cda.*

    from cux_dev_analysis_tables  cda

    where1=1

    and(count3 <> count2 or last_update_date3 <> last_update_date2 )

    ;

     

    ==========================================================================

     

    Package:

    CREATEORREPLACEPACKAGE APPS.CUX_DEV_ANALYSIS_TOOLS

    AS

    TYPE T_CURSOR ISREFCURSOR;

    FUNCTION EXECUTE_IMMEDIATE_SQL(P_SQL INVARCHAR2)RETURNNUMBER;

    FUNCTION DIGIT_TABLE(P_TABLE_NAME INVARCHAR2)RETURNNUMBER;

    END;

    /

    CREATEORREPLACEPACKAGEBODY APPS.CUX_DEV_ANALYSIS_TOOLS

    AS

       FUNCTION EXECUTE_IMMEDIATE_SQL (P_SQL INVARCHAR2)

          RETURNNUMBER

       IS

          V_RESULT   NUMBER:=0;

       BEGIN

          EXECUTEIMMEDIATE P_SQL INTO V_RESULT;

     

          RETURN V_RESULT;

       EXCEPTION

          WHENOTHERS

          THEN

             RETURN-1;

       END;

     

       FUNCTION DIGIT_TABLE (P_TABLE_NAME INVARCHAR2)

          RETURNNUMBER

       IS

          NUM_STEP          NUMBER:=0;

          V_RESULT   NUMBER:=0;

       BEGIN

          LOOP

             EXITWHEN NUM_STEP >9;

             SELECTINSTR(P_TABLE_NAME,TO_CHAR(NUM_STEP))INTO V_RESULT FROM DUAL;

             IF(V_RESULT >0)

             THEN

                RETURN1;

             ENDIF;

             NUM_STEP := NUM_STEP +1;

          ENDLOOP;

          RETURN-1;

       END;

    END;

    /

     

    找出有差异的表,并分析表数据变化:

     

    --stop cost manager

    --wip lot split

    --start cost manager

     

    --compare diff from stop cost manager >>> wip lot split >>> start cost manager

    ==============================================================================

     

    --S       wip lot split 在启动cost manager前后的相应数据行(相同)

    --D12     wip lot split 在启动cost manager前后的相应数据行(成本管理关闭时数据行 - 成本管理器开启时数据行)

    --D21     wip lot split 在启动cost manager前后的相应数据行(成本管理器开启时数据行 - 成本管理关闭时数据行)

     

     

    --MMT

    SELECT'S' DIFF_FLAG,S.*

    FROM(

    SELECT * FROM CUX_MMT_BAK130917001

    INTERSECT

    SELECT * FROM CUX_MMT_BAK130917002

    ) S

    UNIONALL

    SELECT'D12' DIFF_FLAG,D12.*

    FROM(

    SELECT * FROM CUX_MMT_BAK130917001

    MINUS

    SELECT * FROM CUX_MMT_BAK130917002

    ) D12

    UNIONALL

    SELECT'D21' DIFF_FLAG,D21.*

    FROM(

    SELECT * FROM CUX_MMT_BAK130917002

    MINUS

    SELECT * FROM CUX_MMT_BAK130917001

    ) D21

    ;

     

     

    =================================================

     

    --WDJ

    SELECT'S' DIFF_FLAG,S.*

    FROM(

    SELECT * FROM CUX_WDJ_BAK130917001

    INTERSECT

    SELECT * FROM CUX_WDJ_BAK130917002

    ) S

    UNIONALL

    SELECT'D12' DIFF_FLAG,D12.*

    FROM(

    SELECT * FROM CUX_WDJ_BAK130917001

    MINUS

    SELECT * FROM CUX_WDJ_BAK130917002

    ) D12

    UNIONALL

    SELECT'D21' DIFF_FLAG,D21.*

    FROM(

    SELECT * FROM CUX_WDJ_BAK130917002

    MINUS

    SELECT * FROM CUX_WDJ_BAK130917001

    ) D21

    ;

     

     

    =================================================

     

    --WE

    SELECT'S' DIFF_FLAG,S.*

    FROM(

    SELECT * FROM CUX_WE_BAK130917001

    INTERSECT

    SELECT * FROM CUX_WE_BAK130917002

    ) S

    UNIONALL

    SELECT'D12' DIFF_FLAG,D12.*

    FROM(

    SELECT * FROM CUX_WE_BAK130917001

    MINUS

    SELECT * FROM CUX_WE_BAK130917002

    ) D12

    UNIONALL

    SELECT'D21' DIFF_FLAG,D21.*

    FROM(

    SELECT * FROM CUX_WE_BAK130917002

    MINUS

    SELECT * FROM CUX_WE_BAK130917001

    ) D21

    ;

     

     

    =================================================

     

    --WO

    SELECT'S' DIFF_FLAG,S.*

    FROM(

    SELECT * FROM CUX_WO_BAK130917001

    INTERSECT

    SELECT * FROM CUX_WO_BAK130917002

    ) S

    UNIONALL

    SELECT'D12' DIFF_FLAG,D12.*

    FROM(

    SELECT * FROM CUX_WO_BAK130917001

    MINUS

    SELECT * FROM CUX_WO_BAK130917002

    ) D12

    UNIONALL

    SELECT'D21' DIFF_FLAG,D21.*

    FROM(

    SELECT * FROM CUX_WO_BAK130917002

    MINUS

    SELECT * FROM CUX_WO_BAK130917001

    ) D21

    ;

     

    =================================================

     

     

    --WOR

    SELECT'S' DIFF_FLAG,S.*

    FROM(

    SELECT * FROM CUX_WOR_BAK130917001

    INTERSECT

    SELECT * FROM CUX_WOR_BAK130917002

    ) S

    UNIONALL

    SELECT'D12' DIFF_FLAG,D12.*

    FROM(

    SELECT * FROM CUX_WOR_BAK130917001

    MINUS

    SELECT * FROM CUX_WOR_BAK130917002

    ) D12

    UNIONALL

    SELECT'D21' DIFF_FLAG,D21.*

    FROM(

    SELECT * FROM CUX_WOR_BAK130917002

    MINUS

    SELECT * FROM CUX_WOR_BAK130917001

    ) D21

    ;

     

     

    =================================================

     

    --WOY

    SELECT'S' DIFF_FLAG,S.*

    FROM(

    SELECT * FROM CUX_WOY_BAK130917001

    INTERSECT

    SELECT * FROM CUX_WOY_BAK130917002

    ) S

    UNIONALL

    SELECT'D12' DIFF_FLAG,D12.*

    FROM(

    SELECT * FROM CUX_WOY_BAK130917001

    MINUS

    SELECT * FROM CUX_WOY_BAK130917002

    ) D12

    UNIONALL

    SELECT'D21' DIFF_FLAG,D21.*

    FROM(

    SELECT * FROM CUX_WOY_BAK130917002

    MINUS

    SELECT * FROM CUX_WOY_BAK130917001

    ) D21

    ;

     

     

    =================================================

     

    --WRO

    SELECT'S' DIFF_FLAG,S.*

    FROM(

    SELECT * FROM CUX_WRO_BAK130917001

    INTERSECT

    SELECT * FROM CUX_WRO_BAK130917002

    ) S

    UNIONALL

    SELECT'D12' DIFF_FLAG,D12.*

    FROM(

    SELECT * FROM CUX_WRO_BAK130917001

    MINUS

    SELECT * FROM CUX_WRO_BAK130917002

    ) D12

    UNIONALL

    SELECT'D21' DIFF_FLAG,D21.*

    FROM(

    SELECT * FROM CUX_WRO_BAK130917002

    MINUS

    SELECT * FROM CUX_WRO_BAK130917001

    ) D21

    ;

     

     

    =================================================

     

     

    --MOG

    SELECT'S' DIFF_FLAG,S.*

    FROM(

    SELECT * FROM CUX_MOG_BAK130917001

    INTERSECT

    SELECT * FROM CUX_MOG_BAK130917002

    ) S

    UNIONALL

    SELECT'D12' DIFF_FLAG,D12.*

    FROM(

    SELECT * FROM CUX_MOG_BAK130917001

    MINUS

    SELECT * FROM CUX_MOG_BAK130917002

    ) D12

    UNIONALL

    SELECT'D21' DIFF_FLAG,D21.*

    FROM(

    SELECT * FROM CUX_MOG_BAK130917002

    MINUS

    SELECT * FROM CUX_MOG_BAK130917001

    ) D21

    ;

     

     

    =================================================

     

     

    --WPB

    SELECT'S' DIFF_FLAG,S.*

    FROM(

    SELECT * FROM CUX_WPB_BAK130917001

    INTERSECT

    SELECT * FROM CUX_WPB_BAK130917002

    ) S

    UNIONALL

    SELECT'D12' DIFF_FLAG,D12.*

    FROM(

    SELECT * FROM CUX_WPB_BAK130917001

    MINUS

    SELECT * FROM CUX_WPB_BAK130917002

    ) D12

    UNIONALL

    SELECT'D21' DIFF_FLAG,D21.*

    FROM(

    SELECT * FROM CUX_WPB_BAK130917002

    MINUS

    SELECT * FROM CUX_WPB_BAK130917001

    ) D21

    ;

     

     

    =================================================

     

     

    --WSRJ

    SELECT'S' DIFF_FLAG,S.*

    FROM(

    SELECT * FROM CUX_WSRJ_BAK130917001

    INTERSECT

    SELECT * FROM CUX_WSRJ_BAK130917002

    ) S

    UNIONALL

    SELECT'D12' DIFF_FLAG,D12.*

    FROM(

    SELECT * FROM CUX_WSRJ_BAK130917001

    MINUS

    SELECT * FROM CUX_WSRJ_BAK130917002

    ) D12

    UNIONALL

    SELECT'D21' DIFF_FLAG,D21.*

    FROM(

    SELECT * FROM CUX_WSRJ_BAK130917002

    MINUS

    SELECT * FROM CUX_WSRJ_BAK130917001

    ) D21

    ;

     

     

    =================================================

     

     

    --WSSJ

    SELECT'S' DIFF_FLAG,S.*

    FROM(

    SELECT * FROM CUX_WSSJ_BAK130917001

    INTERSECT

    SELECT * FROM CUX_WSSJ_BAK130917002

    ) S

    UNIONALL

    SELECT'D12' DIFF_FLAG,D12.*

    FROM(

    SELECT * FROM CUX_WSSJ_BAK130917001

    MINUS

    SELECT * FROM CUX_WSSJ_BAK130917002

    ) D12

    UNIONALL

    SELECT'D21' DIFF_FLAG,D21.*

    FROM(

    SELECT * FROM CUX_WSSJ_BAK130917002

    MINUS

    SELECT * FROM CUX_WSSJ_BAK130917001

    ) D21

    ;

     

     

    =================================================

     

    --WSMT

    SELECT'S' DIFF_FLAG,S.*

    FROM(

    SELECT * FROM CUX_WSMT_BAK130917001

    INTERSECT

    SELECT * FROM CUX_WSMT_BAK130917002

    ) S

    UNIONALL

    SELECT'D12' DIFF_FLAG,D12.*

    FROM(

    SELECT * FROM CUX_WSMT_BAK130917001

    MINUS

    SELECT * FROM CUX_WSMT_BAK130917002

    ) D12

    UNIONALL

    SELECT'D21' DIFF_FLAG,D21.*

    FROM(

    SELECT * FROM CUX_WSMT_BAK130917002

    MINUS

    SELECT * FROM CUX_WSMT_BAK130917001

    ) D21

    ;

     

    =================================================

     

    update mtl_material_transactions mmt
    set costed_flag = 'N'
    where 1=1
    and mmt.transaction_id = &wls_transaction_id

    clip_image010

     

     

    UPDATE WSM_SPLIT_MERGE_TRANSACTIONS
    SET COSTED = 1
    WHERE 1=1
    AND TRANSACTION_ID IN(
        SELECT TRANSACTION_ID FROM WSM_SM_RESULTING_JOBS 
        WHERE 1=1 AND WIP_ENTITY_ID IN(SELECT WIP_ENTITY_ID FROM WIP_ENTITIES WHERE 1=1 AND WIP_ENTITY_NAME LIKE 'G12%'))
    AND TRANSACTION_ID = &WLS_SOURCE_TRANSACTION_ID;

     
     
     
     
     
     
     

     

    clip_image012

     

    update WIP_REQUIREMENT_OPERATIONS wro
    set costed_quantity_issued = ( D21.costed_quantity_issued >>> D12.costed_quantity_issued )
    where 1=1
    and wip_entity_id in( &wls_source_job_id, &wls_job_id)

     
     
     
     
     
     

    clip_image014

     

     

    UPDATE WIP_PERIOD_BALANCES wpb
       SET TL_RESOURCE_IN = 0,
           TL_OVERHEAD_IN = 0,
           TL_OUTSIDE_PROCESSING_IN = 0,
           PL_MATERIAL_IN = 0,
           PL_MATERIAL_OVERHEAD_IN = 0,
           PL_RESOURCE_IN = 0,
           PL_OVERHEAD_IN = 0,
           PL_OUTSIDE_PROCESSING_IN = 0,
           TL_MATERIAL_OUT = 0,
           TL_MATERIAL_OVERHEAD_OUT = 0,
           TL_RESOURCE_OUT = 0,
           TL_OVERHEAD_OUT = 0,
           TL_OUTSIDE_PROCESSING_OUT = 0,
           PL_MATERIAL_OUT = 0,
           PL_MATERIAL_OVERHEAD_OUT = 0,
           PL_RESOURCE_OUT = 0,
           PL_OVERHEAD_OUT = 0,
           PL_OUTSIDE_PROCESSING_OUT = 0,
           TL_MATERIAL_VAR = 0,
           TL_MATERIAL_OVERHEAD_VAR = 0,
           TL_RESOURCE_VAR = 0,
           TL_OUTSIDE_PROCESSING_VAR = 0,
           TL_OVERHEAD_VAR = 0,
           PL_MATERIAL_VAR = 0,
           PL_MATERIAL_OVERHEAD_VAR = 0,
           PL_RESOURCE_VAR = 0,
           PL_OVERHEAD_VAR = 0,
           PL_OUTSIDE_PROCESSING_VAR = 0
     WHERE     1 = 1
           AND WIP_ENTITY_ID IN (&WLS_SPLIT_JOB_ID)
           AND WIP_ENTITY_ID IN (SELECT WIP_ENTITY_ID
                                   FROM WIP_ENTITIES
                                  WHERE 1 = 1 AND WIP_ENTITY_NAME LIKE 'G12%');

     
     
     
     
     
     
     
     
     

    UPDATE WIP_PERIOD_BALANCES wpb
       SET
           TL_MATERIAL_OUT = 0,
           TL_MATERIAL_OVERHEAD_OUT = 0,
           TL_RESOURCE_OUT = 0,
           TL_OVERHEAD_OUT = 0,
           TL_OUTSIDE_PROCESSING_OUT = 0,
           PL_MATERIAL_OUT = 0,
           PL_MATERIAL_OVERHEAD_OUT = 0,
           PL_RESOURCE_OUT = 0,
           PL_OVERHEAD_OUT = 0,
           PL_OUTSIDE_PROCESSING_OUT = 0,
           TL_MATERIAL_VAR = 0,
           TL_MATERIAL_OVERHEAD_VAR = 0,
           TL_RESOURCE_VAR = 0,
           TL_OUTSIDE_PROCESSING_VAR = 0,
           TL_OVERHEAD_VAR = 0,
           PL_MATERIAL_VAR = 0,
           PL_MATERIAL_OVERHEAD_VAR = 0,
           PL_RESOURCE_VAR = 0,
           PL_OVERHEAD_VAR = 0,
           PL_OUTSIDE_PROCESSING_VAR = 0
     WHERE     1 = 1
           AND WIP_ENTITY_ID IN (&WLS_SOURCE_JOB_ID)
           AND WIP_ENTITY_ID IN (SELECT WIP_ENTITY_ID
                                   FROM WIP_ENTITIES
                                  WHERE 1 = 1 AND WIP_ENTITY_NAME LIKE 'G12%');

     
     
     
     
     
     
     
     
     

     

    clip_image016

  • 相关阅读:
    Redis 安装(Windows)
    etcd简介与应用场景
    Nginx+SignalR+Redis(二)windows
    Nginx+SignalR+Redis(一)windows
    Windows 版MongoDB 复制集Replica Set 配置
    走进异步世界async、await
    认识和使用Task
    进程、应用程序域、线程的相互关系
    ASP.NET Core实现类库项目读取配置文件
    用idea做springboot开发,设置thymeleaf时候,新手容易忽略误区
  • 原文地址:https://www.cnblogs.com/quanweiru/p/3332194.html
Copyright © 2011-2022 走看看