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信息。 |

针对此问题进行实验,得到以下表结构的数据变化:
实验步骤:
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. 找出总记录数或最新更新日期有差异的表

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

SQL Script:
--create table
create table 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)
);
drop table cux_dev_analysis_tables;
delete from 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
where 1=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 not like 'CUX%'
and object_name not like '%$%'
and object_name not like '%#%'
and object_type = 'TABLE'
order by owner asc, object_name asc
;
==========================================================================
delete
from cux_dev_analysis_tables
where 1=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
where 1=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
where 1=1
and exists (
select 'X'
from all_tab_columns atc
where 1=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
where 1=1
and exists (
select 'X'
from all_tab_columns atc
where 1=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
where 1=1
and (count1 <> count2 or last_update_date1 <> last_update_date2 )
;
select
'SELECT * FROM ' || table_name || ';',
cda.*
from cux_dev_analysis_tables cda
where 1=1
and (count3 <> count2 or last_update_date3 <> last_update_date2 )
;
==========================================================================
Package:
CREATE OR REPLACE PACKAGE APPS.CUX_DEV_ANALYSIS_TOOLS
AS
TYPE T_CURSOR IS REF CURSOR;
FUNCTION EXECUTE_IMMEDIATE_SQL(P_SQL IN VARCHAR2) RETURN NUMBER;
FUNCTION DIGIT_TABLE(P_TABLE_NAME IN VARCHAR2) RETURN NUMBER;
END;
/
CREATE OR REPLACE PACKAGE BODY APPS.CUX_DEV_ANALYSIS_TOOLS
AS
FUNCTION EXECUTE_IMMEDIATE_SQL (P_SQL IN VARCHAR2)
RETURN NUMBER
IS
V_RESULT NUMBER := 0;
BEGIN
EXECUTE IMMEDIATE P_SQL INTO V_RESULT;
RETURN V_RESULT;
EXCEPTION
WHEN OTHERS
THEN
RETURN -1;
END;
FUNCTION DIGIT_TABLE (P_TABLE_NAME IN VARCHAR2)
RETURN NUMBER
IS
NUM_STEP NUMBER := 0;
V_RESULT NUMBER := 0;
BEGIN
LOOP
EXIT WHEN NUM_STEP > 9;
SELECT INSTR (P_TABLE_NAME, TO_CHAR (NUM_STEP)) INTO V_RESULT FROM DUAL;
IF (V_RESULT > 0)
THEN
RETURN 1;
END IF;
NUM_STEP := NUM_STEP + 1;
END LOOP;
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
UNION ALL
SELECT 'D12' DIFF_FLAG,D12.*
FROM(
SELECT * FROM CUX_MMT_BAK130917001
MINUS
SELECT * FROM CUX_MMT_BAK130917002
) D12
UNION ALL
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
UNION ALL
SELECT 'D12' DIFF_FLAG,D12.*
FROM(
SELECT * FROM CUX_WDJ_BAK130917001
MINUS
SELECT * FROM CUX_WDJ_BAK130917002
) D12
UNION ALL
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
UNION ALL
SELECT 'D12' DIFF_FLAG,D12.*
FROM(
SELECT * FROM CUX_WE_BAK130917001
MINUS
SELECT * FROM CUX_WE_BAK130917002
) D12
UNION ALL
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
UNION ALL
SELECT 'D12' DIFF_FLAG,D12.*
FROM(
SELECT * FROM CUX_WO_BAK130917001
MINUS
SELECT * FROM CUX_WO_BAK130917002
) D12
UNION ALL
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
UNION ALL
SELECT 'D12' DIFF_FLAG,D12.*
FROM(
SELECT * FROM CUX_WOR_BAK130917001
MINUS
SELECT * FROM CUX_WOR_BAK130917002
) D12
UNION ALL
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
UNION ALL
SELECT 'D12' DIFF_FLAG,D12.*
FROM(
SELECT * FROM CUX_WOY_BAK130917001
MINUS
SELECT * FROM CUX_WOY_BAK130917002
) D12
UNION ALL
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
UNION ALL
SELECT 'D12' DIFF_FLAG,D12.*
FROM(
SELECT * FROM CUX_WRO_BAK130917001
MINUS
SELECT * FROM CUX_WRO_BAK130917002
) D12
UNION ALL
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
UNION ALL
SELECT 'D12' DIFF_FLAG,D12.*
FROM(
SELECT * FROM CUX_MOG_BAK130917001
MINUS
SELECT * FROM CUX_MOG_BAK130917002
) D12
UNION ALL
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
UNION ALL
SELECT 'D12' DIFF_FLAG,D12.*
FROM(
SELECT * FROM CUX_WPB_BAK130917001
MINUS
SELECT * FROM CUX_WPB_BAK130917002
) D12
UNION ALL
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
UNION ALL
SELECT 'D12' DIFF_FLAG,D12.*
FROM(
SELECT * FROM CUX_WSRJ_BAK130917001
MINUS
SELECT * FROM CUX_WSRJ_BAK130917002
) D12
UNION ALL
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
UNION ALL
SELECT 'D12' DIFF_FLAG,D12.*
FROM(
SELECT * FROM CUX_WSSJ_BAK130917001
MINUS
SELECT * FROM CUX_WSSJ_BAK130917002
) D12
UNION ALL
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
UNION ALL
SELECT 'D12' DIFF_FLAG,D12.*
FROM(
SELECT * FROM CUX_WSMT_BAK130917001
MINUS
SELECT * FROM CUX_WSMT_BAK130917002
) D12
UNION ALL
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

|
UPDATE WSM_SPLIT_MERGE_TRANSACTIONS |
|

|
update WIP_REQUIREMENT_OPERATIONS wro |
|

|
UPDATE WIP_PERIOD_BALANCES wpb |
|
|
UPDATE WIP_PERIOD_BALANCES wpb |
|

open MMT.distributions = null on transaction type: WIP Lot Split的更多相关文章
- zookeeper启动错误 transaction type: 2 error: KeeperErrorCode = NoNode for /hbase
hbase伪分布式,与zookeeper同一台机器的时候,运行一段时间,启动zookeeper的时候,日志中有如下错误,导致无法启动zookeeper java.io.IOException: Fai ...
- org.springframework.beans.TypeMismatchException: Failed to convert property value of type 'null' to required type 'double' for property 'band'; nested exception is org.springframework.core.convert.Con
本文为博主原创,未经允许不得转载: 先将异常粘贴出来: 20:37:26,909 ERROR [com.suning.fucdn.controller.ProductDataStaticsContro ...
- leetcode 编译问题:Line x: member access within null pointer of type 'struct TreeNode'
参考: LEETCODE 中的member access within null pointer of type 'struct ListNode' 解决 leetcode 编译问题:Line x: ...
- 力扣 报错 runtime error: load of null pointer of type 'const int'
runtime error: load of null pointer of type 'const int' 要求返回的是int* 解决方案 1.指针使用malloc分配空间 用 int * p = ...
- swagger 报错:illegal defaultValue null for param type integer
swagger(版本2.9.2) 刷新报错,错误信息如下图: 问题原因: 根据上面这句报错信息,点进去AbstractSerializableParameter.java:412可以看到 源码, @J ...
- Swagger2异常:Illegal DefaultValue null for parameter type integer java
一.异常分析: Illegal DefaultValue null for parameter type integer`和`NumberFormatException: For input stri ...
- 解决 Illegal DefaultValue null for parameter type integer 异常
该异常是由 swagger 引起的 swagger 版本 1.9.2 解决原因:重新导入 swagger-annotations 和 swagger-models 版本 为 1.5.21 pom.xm ...
- swagger2 Illegal DefaultValue null for parameter type integer
问题,为了方便调试,引入了swagger2,但是在第一次访问的时候总是报 Illegal DefaultValue null for parameter type integer 让人看着很不输入 定 ...
- inceptor es表插入成功,返回报错you should set transaction.type before any DCL statement
在finebi下用星环的连接驱动去写inceptor es表,发现插入能成功,但是返回一个报错: Caused by: java.sql.SQLException: Error to commit. ...
随机推荐
- 禁用浏览器缓存Ajax请求
$.ajax({ url: 'url.php', cache: false, success: function(data){ //..... } }); 仅Get有缓存, Post不会缓存
- 再议Unity 3D
一年前,偶发冲动,翻译了<[译] Unity3D游戏和facebook绑定(1:简介)>系列文章. 现在看有2个明显的好处, 一:给这个不温不火的博客带了top 3的人气: 二:我个人由此 ...
- IOS-7步学会用代理
代理:又叫委托 自己不能去办的事委托给别人去办 之前学过的 UIAlertView UITextField都是使用了代理 反向传值代理 代理Block 写代理的步骤 需要帮忙的人(请求帮代饭的人) 1 ...
- Codevs 3289 花匠 2013年NOIP全国联赛提高组
3289 花匠 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 花匠栋栋种了一排花,每株花都 ...
- PHPEXCEL使用实例
最近在项目中要用到PHP生成EXCEL,上网找了一下,发现PHPEXCEL挺不错,用了一下,感觉还行,就是设置单元格格式的时候比较麻烦,总体来说功能还是比较强大的,还有生成PDF什么的,发一个实例吧 ...
- ExecutorService 接口
先看一个Executor接口,该接口只有一个方法:void execute(Runnable command),用于在未来某个时刻提交一个command,这个command可以被提交到一个新的线程,或 ...
- Chrome 建立SOCKS5代理
前提是putty已经在7090端口和远程服务器建立隧道. 假设你的chrome浏览器位于"C:\Program Files (x86)\Google\Chrome\Application\c ...
- jQuery Mobile里xxx怎么用呀?(缓存篇)
jQuery Mobile初始页面DOM Cache所引发的问题 HTML元素事件多次触发: jsFiddle: http://jsfiddle.net/gn9JA/2/ cause: 在jsFidd ...
- 不使用BeanUtils,利用Java反射机制:表单数据自动封装到JavaBean
在百度搜“java反射 将表单数据自动封装到javabean ”,第一页显示的都是一样的代码,都是利用导入第三方jar包<commons-beanutils>和<commons-lo ...
- 关于css中overflow:hidden的使用
overflow:hidden有两个用处经常用到: 1.通过设定自身的高度,加上overflow:hidden可以隐藏超过容器本身的内容: 但是,小编在以往的使用中,发现了一个问题,只要父级容 ...