任务单案例一
2015-08-13 11:21
281 查看
转自:http://blog.csdn.net/samt007/article/details/8569824
这个程序,根据输入的参数可以自动处理WIP_MOVE_TXN_INTERFACE表。
虽然一般都是排一个“WIP 移动事务处理管理器”定期处理,但是个人认为这样子处理还是有一定的滞后性。用户想操作完毕立刻看到效果,但是老要等上几分钟。
所以专门开发了这个自动处理的程序。也是蛮实用。
逻辑也很简单,就是自动提交一个“WIP 移动事务处理工作流程”处理对应GROUP_ID的数据。
代码也共享出来:
-----------------------------
--处理接口表,可选处理方式
-----------------------------
PROCEDURE PROCESS_MOVE_TXN_INTERFACE(
P_PROCESS_TYPE VARCHAR2 ---处理方式,目前只有 提交请求 SUBMIT_REQUEST 希望以后有 立刻过账 PROCESS_ONLINE
,P_GROUP_ID NUMBER ---处理的组ID
,x_REQUEST_ID OUT NUMBER --输出的请求ID
,x_retcode OUT NUMBER ---0:成功 非0:失败( 或者:0:成功 1:警告 2:错误 ----注意:确定警告的时候要做什么动作)
,x_errbuf OUT VARCHAR2 ---具体的错误信息
)
IS
L_PROCESS_PHASE NUMBER; --标识程序的进度
---
L_REQUEST_ID NUMBER;
---
BEGIN
x_retcode := 0;
x_errbuf := Null;
L_PROCESS_PHASE := 0;
---首先的第一步是:检查不可以为空的参数
IF P_PROCESS_TYPE IS NULL OR P_GROUP_ID IS NULL
THEN
x_errbuf := '调用PROCESS_MOVE_TXN_INTERFACE的时候,必要的参数不存在,请检查参数!';
x_retcode := 2;
RETURN;
END IF;
L_PROCESS_PHASE := 1;
------------Start------------
IF P_PROCESS_TYPE = 'SUBMIT_REQUEST' THEN
---自动提交过账的请求
---WIP 移动事务处理工作流程
-----WIP Move Transaction Worker
L_REQUEST_ID :=
FND_REQUEST.SUBMIT_REQUEST( 'WIP', -- application
'WICTWS', -- program
NULL,
NULL, -- start_time (optional)
FALSE, -- sub_request
to_char(P_GROUP_ID), -- Group id to process
'1', -- 貌似都给1,不知道什么情况下给2,需要验证!
'2400', -- 貌似都给2400
'1', -- 貌似都给1
chr(0)
);
L_PROCESS_PHASE := 2;
dbms_output.PUT_LINE('自动产生的请求ID:'||L_REQUEST_ID);
IF L_REQUEST_ID = 0 THEN
x_errbuf := '自动提交请求失败!';
x_retcode := 2;
RETURN;
ELSE
x_errbuf := x_errbuf||'自动提交请求成功!请求ID:'||L_REQUEST_ID;
END IF;
x_REQUEST_ID := L_REQUEST_ID;
L_PROCESS_PHASE := 3;
ELSIF P_PROCESS_TYPE = 'PROCESS_ONLINE' THEN
x_errbuf := '目前程序不支持处理方式:('||P_PROCESS_TYPE||')!请检查参数!';
x_retcode := 2;
RETURN;
L_PROCESS_PHASE := 5;
ELSE
x_errbuf := '参数P_PROCESS_TYPE('||P_PROCESS_TYPE||')无效,请检查参数!';
x_retcode := 2;
RETURN;
END IF;
------------End--------------
L_PROCESS_PHASE := 6;
EXCEPTION
WHEN OTHERS
THEN
x_retcode := 2;
x_errbuf :=
'P_PROCESS_TYPE:'
|| P_PROCESS_TYPE
|| ' P_GROUP_ID:'
|| P_GROUP_ID
|| ' 产生移动事务处理的时候有异常错误!'
|| CHR(10)
|| '错误信息:'
|| TO_CHAR(SQLCODE)
|| '-'
|| SQLERRM
|| CHR(10)
|| '程序进度:'
|| L_PROCESS_PHASE;
----可以适当编写:如果错误,另外还需要处理的SQL
---因为如果前面有做UPDATE/INSERT/DELETE动作,虽然是跳到异常,但是,这动作不会自动回滚的!
END;
--------------------------测试部分:
DECLARE
L_RETCODE NUMBER;
L_ERRBUF VARCHAR2(4000);
---
L_GROUP_ID NUMBER;
L_REQUEST_ID NUMBER;
---
BEGIN
fnd_client_info.set_org_context(104);
fnd_global.APPS_Initialize( user_id=>5954, resp_id=>52054, resp_appl_id =>20003);
L_GROUP_ID := 9999;
---立刻过账
XYG_PUB_WIP_PKG.PROCESS_MOVE_TXN_INTERFACE('SUBMIT_REQUEST',L_GROUP_ID,L_REQUEST_ID,L_RETCODE,L_ERRBUF);
dbms_output.PUT_LINE(L_RETCODE || '-' || L_ERRBUF);
IF L_RETCODE = 0 THEN
dbms_output.PUT_LINE('成功产生请求ID:' || L_REQUEST_ID);
COMMIT;
ELSE
dbms_output.PUT_LINE('过账有异常问题发生!'||L_ERRBUF);
ROLLBACK;
END IF;
END;
这个程序,根据输入的参数可以自动处理WIP_MOVE_TXN_INTERFACE表。
虽然一般都是排一个“WIP 移动事务处理管理器”定期处理,但是个人认为这样子处理还是有一定的滞后性。用户想操作完毕立刻看到效果,但是老要等上几分钟。
所以专门开发了这个自动处理的程序。也是蛮实用。
逻辑也很简单,就是自动提交一个“WIP 移动事务处理工作流程”处理对应GROUP_ID的数据。
代码也共享出来:
-----------------------------
--处理接口表,可选处理方式
-----------------------------
PROCEDURE PROCESS_MOVE_TXN_INTERFACE(
P_PROCESS_TYPE VARCHAR2 ---处理方式,目前只有 提交请求 SUBMIT_REQUEST 希望以后有 立刻过账 PROCESS_ONLINE
,P_GROUP_ID NUMBER ---处理的组ID
,x_REQUEST_ID OUT NUMBER --输出的请求ID
,x_retcode OUT NUMBER ---0:成功 非0:失败( 或者:0:成功 1:警告 2:错误 ----注意:确定警告的时候要做什么动作)
,x_errbuf OUT VARCHAR2 ---具体的错误信息
)
IS
L_PROCESS_PHASE NUMBER; --标识程序的进度
---
L_REQUEST_ID NUMBER;
---
BEGIN
x_retcode := 0;
x_errbuf := Null;
L_PROCESS_PHASE := 0;
---首先的第一步是:检查不可以为空的参数
IF P_PROCESS_TYPE IS NULL OR P_GROUP_ID IS NULL
THEN
x_errbuf := '调用PROCESS_MOVE_TXN_INTERFACE的时候,必要的参数不存在,请检查参数!';
x_retcode := 2;
RETURN;
END IF;
L_PROCESS_PHASE := 1;
------------Start------------
IF P_PROCESS_TYPE = 'SUBMIT_REQUEST' THEN
---自动提交过账的请求
---WIP 移动事务处理工作流程
-----WIP Move Transaction Worker
L_REQUEST_ID :=
FND_REQUEST.SUBMIT_REQUEST( 'WIP', -- application
'WICTWS', -- program
NULL,
NULL, -- start_time (optional)
FALSE, -- sub_request
to_char(P_GROUP_ID), -- Group id to process
'1', -- 貌似都给1,不知道什么情况下给2,需要验证!
'2400', -- 貌似都给2400
'1', -- 貌似都给1
chr(0)
);
L_PROCESS_PHASE := 2;
dbms_output.PUT_LINE('自动产生的请求ID:'||L_REQUEST_ID);
IF L_REQUEST_ID = 0 THEN
x_errbuf := '自动提交请求失败!';
x_retcode := 2;
RETURN;
ELSE
x_errbuf := x_errbuf||'自动提交请求成功!请求ID:'||L_REQUEST_ID;
END IF;
x_REQUEST_ID := L_REQUEST_ID;
L_PROCESS_PHASE := 3;
ELSIF P_PROCESS_TYPE = 'PROCESS_ONLINE' THEN
x_errbuf := '目前程序不支持处理方式:('||P_PROCESS_TYPE||')!请检查参数!';
x_retcode := 2;
RETURN;
L_PROCESS_PHASE := 5;
ELSE
x_errbuf := '参数P_PROCESS_TYPE('||P_PROCESS_TYPE||')无效,请检查参数!';
x_retcode := 2;
RETURN;
END IF;
------------End--------------
L_PROCESS_PHASE := 6;
EXCEPTION
WHEN OTHERS
THEN
x_retcode := 2;
x_errbuf :=
'P_PROCESS_TYPE:'
|| P_PROCESS_TYPE
|| ' P_GROUP_ID:'
|| P_GROUP_ID
|| ' 产生移动事务处理的时候有异常错误!'
|| CHR(10)
|| '错误信息:'
|| TO_CHAR(SQLCODE)
|| '-'
|| SQLERRM
|| CHR(10)
|| '程序进度:'
|| L_PROCESS_PHASE;
----可以适当编写:如果错误,另外还需要处理的SQL
---因为如果前面有做UPDATE/INSERT/DELETE动作,虽然是跳到异常,但是,这动作不会自动回滚的!
END;
--------------------------测试部分:
DECLARE
L_RETCODE NUMBER;
L_ERRBUF VARCHAR2(4000);
---
L_GROUP_ID NUMBER;
L_REQUEST_ID NUMBER;
---
BEGIN
fnd_client_info.set_org_context(104);
fnd_global.APPS_Initialize( user_id=>5954, resp_id=>52054, resp_appl_id =>20003);
L_GROUP_ID := 9999;
---立刻过账
XYG_PUB_WIP_PKG.PROCESS_MOVE_TXN_INTERFACE('SUBMIT_REQUEST',L_GROUP_ID,L_REQUEST_ID,L_RETCODE,L_ERRBUF);
dbms_output.PUT_LINE(L_RETCODE || '-' || L_ERRBUF);
IF L_RETCODE = 0 THEN
dbms_output.PUT_LINE('成功产生请求ID:' || L_REQUEST_ID);
COMMIT;
ELSE
dbms_output.PUT_LINE('过账有异常问题发生!'||L_ERRBUF);
ROLLBACK;
END IF;
END;
相关文章推荐
- Ubuntu系统下的Hadoop集群(6)_Hadoop安装配置简略教程
- 浅谈C/C++内存泄漏及其检测工具
- POJ 3620 Avoid The Lakes【DFS】
- java程序由mysql转到sqlserver时在浮点数处理上遇到的错误
- UVA 11584 Partitioning by Palindromes 划分回文串 (Manacher算法)
- Java DecimalFormat 用法
- 实际iOS编程中遇到的自定义导航栏按钮,导致手势返回失效的解决方法
- 在spring官网下载jar包、源码、文档
- Bit Manipulation - Number of 1 Bits
- SpringMVC表单标签(6)
- Android结合volley的netWorkImageview实现图片文件缓存
- 安装samba后在init.d文件夹没有smb
- 安装samba后在init.d文件夹没有smb
- remove '^M' in shell script
- c# winform 模拟web post图片
- uva 10139 求n的阶乘能否整除m
- Android FragmentManage FragmentTransaction介绍(一)
- rsync 文件同步
- 轻量级java ee 中的相关技术概述
- 为Elasticsearch添加中文分词,对比分词器效果