PO状态为“处理中”的处理方法
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状态为“处理中”的处理方法的更多相关文章
- Java线程状态及Thread类中的主要方法
要想实现多线程,就必须在主线程中创建新的线程对象. 不论什么线程一般具有5种状态,即创建,就绪,执行,堵塞,终止. 创建状态: 在程序中用构造方法创建了一个线程对象后,新的线程对象便处于新建状态,此时 ...
- 为什么不能在init和dealloc函数中使用accessor方法
前言 为什么不要在init和dealloc方法中调用getter和setter:Apple在Mac与iOS中关于内存管理的开发文档中,有一节的题目为:"Don'tUse Accessor M ...
- GpsLocationProvider中的sendExtraCommand方法
Android系统源码中GpsLocationProvider类中包含sendExtraCommand方法,代码如下 @Override public boolean sendExtraCommand ...
- jquery 中一些 特殊方法 的特殊使用 一览表
cnblogs的页面, 一种是管理页面, 是随笔的列表 a full list of essays. 另一种是 首页. 要搜索文档的话, 就使用 "首页"的那种方式. 一个jque ...
- jquery中的clone()方法使用
clone([Even[,deepEven]]) 描述: 克隆匹配的DOM元素并且选中这些克隆的副本. 在想把DOM文档中元素的副本添加到其他位置时这个函数非常有用. 1:一个布尔值(true 或者 ...
- OpenStack安装部署管理中常见问题解决方法
一.网络问题-network 更多网络原理机制可以参考<OpenStack云平台的网络模式及其工作机制>. 1.1.控制节点与网络控制器区别 OpenStack平台中有两种类型的物理节点, ...
- Web Api中实现Http方法(Put,Post,Delete)
在Web Api中实现Http方法(Put,Post,Delete) 系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 在Web Api中,我 ...
- jQuery中的ready方法及实现按需加载css,js
模拟jQuery中的ready方法及实现按需加载css,js 一.ready函数的实现 经常用jQuery类库或其他类库中的ready方法,有时候想想它们到底是怎么实现的,但是看了一下jQuery中的 ...
- $.ajax()方法详解 jquery中的ajax方法
jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(p ...
随机推荐
- List<T>用法总结【转】
List<T>用法总结 static void Main(string[] args) { Person p1 = new Person( "aladdin" , 20 ...
- Java报错--Unsupported major.minor version 52.0
遇到一个Java相关的报错: ... java.lang.UnsupportedClassVersionError: ... : Unsupported major.minor version 52. ...
- HashMap为什么线程不安全(hash碰撞与扩容导致)
一直以来都知道HashMap是线程不安全的,但是到底为什么线程不安全,在多线程操作情况下什么时候线程不安全? 让我们先来了解一下HashMap的底层存储结构,HashMap底层是一个Entry数组,一 ...
- asp.net页面与页面之间参数传递
传值asp文件send.aspx 代码如下 复制代码 <form id="form1" runat="server" action="recei ...
- SqlHelper数据库访问类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- 详解 CSS 属性 - 伪类和伪元素的区别(再也不用概念盲了!!!)
首先,阅读 w3c 对两者的定义: CSS 伪类用于向某些选择器添加特殊的效果. CSS 伪元素用于将特殊的效果添加到某些选择器. 可以明确两点,第一两者都与选择器相关,第二就是添加一些“特殊”的效果 ...
- VS单元测试入门实践教程
摘要:本教程不会介绍单元测试的基本理论知识,也不会和大家讨论在实际项目中是否需要写单元测试代码的问题.但是如果你此时想使用VS中的单元测试的工具来测试某个方法是否正确,可你又从来没真正实践过,那么本教 ...
- 各版本SDK Tools及ADT下载技巧
我们在开发的时候,尤其是使用Eclipse安装ADT插件进行环境配置,我们需要从下载ADT插件及SDK,当我们从官网下载的时候,有的时候可能找不到下载的地方或者下载不到自己想要的版本,我就在此总结下如 ...
- FPGrowth算法原理
算法实现: /** * FPGrowth算法的主要思想: * 1. 构造频繁1项集:遍历初始数据集构造频繁1项集,并作为项头表,建立将指向fpTree节点对应元素的引用 * 2. 构造FPTree:再 ...
- 南阳师范学院ACM集训队博客使用方法
南阳师范学院ACM集训队博客使用方法 为方便大家交流,我们使用的是同一个用户名和密码,所以请不要随意修改用户名和密码,不然大家都登不上了,谢谢! 首先进入主页:http://www.cnblogs.c ...