12
返回列表 发新帖
楼主: cuimajun

PO單處於“處理中”狀態

[复制链接]
论坛徽章:
7
祖国60周年纪念徽章
日期:2009-10-09 08:28:00参与WIN7挑战赛纪念
日期:2009-11-06 14:50:072010新春纪念徽章
日期:2010-01-04 08:33:082010新春纪念徽章
日期:2010-03-01 11:19:59ITPUB9周年纪念徽章
日期:2010-10-08 09:28:532011新春纪念徽章
日期:2011-02-18 11:42:48咸鸭蛋
日期:2012-03-12 13:54:58
11#
发表于 2009-12-11 12:04 | 只看该作者
原帖由 comtony 于 2006-9-9 23:43 发表
如查处理工作流还不能审批通过,那可以考虑将原来的工作流清掉,再让PO的提交者从新提交审批,下面这个SQL可以实现,这个SQL应该在这个坛子里有的,我之前下载过,现在重新贴上来

set serveroutput on size 100000
DECLARE

CURSOR potoreset is
SELECT wf_item_type, wf_item_key, po_header_id, segment1,
revision_num, type_lookup_code
FROM po_headers_all
WHERE segment1 = '&po_number'
and org_id = &org_id
and authorization_status IN ('IN PROCESS', 'PRE-APPROVED')
and NVL(cancel_flag, 'N') = 'N'
and NVL(closed_code, 'OPEN') != 'FINALLY_CLOSED';

CURSOR maxseq(id number, subtype po_action_history.object_sub_type_code%type) is
SELECT nvl(max(sequence_num), 0)
FROM po_action_history
WHERE object_type_code IN ('PO', 'PA')
AND object_sub_type_code = subtype
AND object_id = id
AND action_code is NULL;

CURSOR poaction(id number, subtype po_action_history.object_sub_type_code%type) is
SELECT nvl(max(sequence_num), 0)
FROM po_action_history
WHERE object_type_code IN ('PO', 'PA')
AND object_sub_type_code = subtype
AND object_id = id
AND action_code = 'SUBMIT';

submitseq po_action_history.sequence_num%type;
nullseq po_action_history.sequence_num%type;

BEGIN
FOR pos in potoreset LOOP
dbms_output.put_line('Processing '||pos.type_lookup_code
||' PO Number: '
||pos.segment1);
dbms_output.put_line('......................................');

dbms_output.put_line('Closing Notifications...');
BEGIN

UPDATE wf_notifications set status = 'CANCELED'
WHERE notification_id in (
select ias.notification_id
from wf_item_activity_statuses ias,
wf_notifications ntf
where ias.item_type = pos.wf_item_type
and ias.item_key = pos.wf_item_key
and ntf.notification_id = ias.notification_id)
AND NVL(status, 'OPEN') = 'OPEN';

EXCEPTION
WHEN OTHERS THEN
null;
END;

dbms_output.put_line('Aborting Workflow...');
BEGIN
WF_Engine.AbortProcess(pos.wf_item_type, pos.wf_item_key);
EXCEPTION
WHEN OTHERS THEN
null;
END;

dbms_output.put_line('Updating PO Status...');
UPDATE po_headers_all
set authorization_status = decode(pos.revision_num, 0, 'INCOMPLETE',
'REQUIRES REAPPROVAL'),
wf_item_type = NULL,
wf_item_key = NULL
where po_header_id = pos.po_header_id;

OPEN maxseq(pos.po_header_id, pos.type_lookup_code);
FETCH maxseq into nullseq;
CLOSE maxseq;

OPEN poaction(pos.po_header_id, pos.type_lookup_code);
FETCH poaction into submitseq;
CLOSE poaction;

IF nullseq > submitseq THEN

dbms_output.put_line('Deleting PO Action History...');

DELETE FROM po_action_history
WHERE object_id = pos.po_header_id
AND object_type_code IN ('PO', 'PA')
AND object_sub_type_code = pos.type_lookup_code
AND sequence_num >= submitseq;
END IF;

dbms_output.put_line('Done Processing.');
dbms_output.put_line('................');
dbms_output.put_line('Please issue commit, if no errors found.');

END LOOP;
END;
/


您好,能解釋下為什麽closed_code 會為NULL嗎,trm中似乎為提及NULL的狀態,謝謝指教,學習

使用道具 举报

回复
论坛徽章:
15
NBA常规赛纪念章
日期:2013-04-22 11:49:35NBA季后赛纪念徽章
日期:2013-06-21 14:52:05ITPUB社区12周年站庆徽章
日期:2013-10-08 14:54:39马上加薪
日期:2014-10-23 16:03:28马上有对象
日期:2014-12-22 11:23:38知识
日期:2015-08-11 10:22:26知识
日期:2015-08-11 10:34:17秀才
日期:2015-09-21 09:46:16
12#
发表于 2009-12-12 09:25 | 只看该作者
以前秀才专门开过这个帖子。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表