EBS中经常会出现PO提交审批后状态为“处理中”的情况,此时PO创建人无法打开,审批人也无法打开,工作流等查看也无异常,可以使用一下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 = '14681' --'&po_number'
AND ORG_ID = 81--&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;

PO状态为“处理中”的处理方法的更多相关文章

  1. Java线程状态及Thread类中的主要方法

    要想实现多线程,就必须在主线程中创建新的线程对象. 不论什么线程一般具有5种状态,即创建,就绪,执行,堵塞,终止. 创建状态: 在程序中用构造方法创建了一个线程对象后,新的线程对象便处于新建状态,此时 ...

  2. 为什么不能在init和dealloc函数中使用accessor方法

    前言 为什么不要在init和dealloc方法中调用getter和setter:Apple在Mac与iOS中关于内存管理的开发文档中,有一节的题目为:"Don'tUse Accessor M ...

  3. GpsLocationProvider中的sendExtraCommand方法

    Android系统源码中GpsLocationProvider类中包含sendExtraCommand方法,代码如下 @Override public boolean sendExtraCommand ...

  4. jquery 中一些 特殊方法 的特殊使用 一览表

    cnblogs的页面, 一种是管理页面, 是随笔的列表 a full list of essays. 另一种是 首页. 要搜索文档的话, 就使用 "首页"的那种方式. 一个jque ...

  5. jquery中的clone()方法使用

    clone([Even[,deepEven]]) 描述: 克隆匹配的DOM元素并且选中这些克隆的副本. 在想把DOM文档中元素的副本添加到其他位置时这个函数非常有用. 1:一个布尔值(true 或者 ...

  6. OpenStack安装部署管理中常见问题解决方法

    一.网络问题-network 更多网络原理机制可以参考<OpenStack云平台的网络模式及其工作机制>. 1.1.控制节点与网络控制器区别 OpenStack平台中有两种类型的物理节点, ...

  7. Web Api中实现Http方法(Put,Post,Delete)

    在Web Api中实现Http方法(Put,Post,Delete) 系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 在Web Api中,我 ...

  8. jQuery中的ready方法及实现按需加载css,js

    模拟jQuery中的ready方法及实现按需加载css,js 一.ready函数的实现 经常用jQuery类库或其他类库中的ready方法,有时候想想它们到底是怎么实现的,但是看了一下jQuery中的 ...

  9. $.ajax()方法详解 jquery中的ajax方法

    jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(p ...

随机推荐

  1. 【IPC通信】基于管道的popen和pclose函数

    http://my.oschina.net/renhc/blog/35116 [IPC通信]基于管道的popen和pclose函数 恋恋美食  恋恋美食 发布时间: 2011/11/12 23:20 ...

  2. asp.net调用非托管dll,无法加载 DLL,找不到指定模块解决方法。

    最近开发一个项目,里面用到了非.net开发的一个dll文件接口,发现发布到window2003服务器上后,运行网站总是提示 "无法加载 DLL"D:\11\1.dll": ...

  3. C#中MessageBox用法总结

    我们在程序中经常会用到MessageBox. MessageBox.Show()共有21中重载方法.现将其常见用法总结如下: 1.MessageBox.Show("Hello~~~~&quo ...

  4. 【拆点费用流】【HDU1853】【 Cyclic Tour】

    题意: 有N个城市,M条单向路,Tom想环游全部城市,每次至少环游2个城市,每个城市只能被环游一次.由于每条单向路都有长度,要求游遍全部城市的最小长度. // 给定一个有向图,必须用若干个环来覆盖整个 ...

  5. Android Studio无法关联Api23源码-提示Souces for android api 23 platform not found

    最近升级了As,然后忽然就关联不上源码了,很不方便,找个Activity的源码都只有outline没有解释,还提示这个错误: Decompiled .class file, bytecode vers ...

  6. 实现FileCopy(Ring0 x86 x64)

    1.1 内核不接受一个字符串文件路径,必须填写一个OBJECT_ATTRIBUTES结构. 这个结构,在InitializeObjectAttributes初始化 typedef struct _OB ...

  7. media queries(练习)

    根据不同的窗口尺寸来选择使用不同的样式的示例 MAIN SUB 01 SUB 02

  8. sass颜色

    1只定义一次颜色 {优点:可以给变量赋予不同的值: {缺点:变量名称更改与变量值混乱: 2变浅加深 /*颜色函数*/ .warning-box { background-color:lighten($ ...

  9. ApiGen4.1 windows安装教程

    一. ApiGen4.1版本介绍 1.ApiGen介绍 ApiGen是自动生成PHP项目的阅读文档工具. 用于从PHP源代码创建专业的API文档,类似于phpDocumentor/phpDoc. Ap ...

  10. Python命令行参数sys.argv[]

    学习C语言的时候就没弄明白命令行参数的用法,在学习Pyton 的时候又遇到了命令行参数,在这里稍微学习了一下,稍微明白了一些在这里做个记录方便后面回顾复习. Sys.argv[]是用来获取命令行参数的 ...