Oracle EBS 11i中,经常会出现PO在审批的工作流中卡掉的情况,即到某一个审批节点时出 现异常,无法进行下一步。此时,一般可以通过运行指定的脚本,Retry这个工作流节点。 Retry都可以将异常的工作流跑通,如果还是出现异常,则可能需要进行reset操作,即将审 批中的单据退回到提交审批前的状态。这样的话工作人员需要重新进行审批。

PO模块工作流异常Retry的办法。

0)查询单据的item_type,item_key,wf_approval_process

--PR
SELECT HR.NAME, PRH.SEGMENT1, PRH.WF_ITEM_TYPE, PRH.WF_ITEM_KEY
  FROM PO_REQUISITION_HEADERS_ALL PRH, HR_ALL_ORGANIZATION_UNITS HR
 WHERE PRH.ORG_ID = HR.ORGANIZATION_ID
 AND PRH.SEGMENT1 = '&Enter_PR_Number';
 
--PO
SELECT HR.NAME, POH.SEGMENT1, POH.WF_ITEM_TYPE, POH.WF_ITEM_KEY
  FROM PO_HEADERS_ALL POH, HR_ALL_ORGANIZATION_UNITS HR
 WHERE POH.ORG_ID = HR.ORGANIZATION_ID
   AND POH.SEGMENT1 = '&Enter_PO_Number';
 
--PO Relese
SELECT HR.NAME,
       POH.SEGMENT1,
       POR.RELEASE_NUM,
       POR.WF_ITEM_TYPE,
       POR.WF_ITEM_KEY
  FROM PO_HEADERS_ALL            POH,
       PO_RELEASES_ALL           POR,
       HR_ALL_ORGANIZATION_UNITS HR
 WHERE POH.ORG_ID = HR.ORGANIZATION_ID
   AND POR.ORG_ID = POH.ORG_ID
   AND POH.PO_HEADER_ID = POR.PO_HEADER_ID
   AND POH.SEGMENT1 = '&Enter_PO_Number'
   AND POR.RELEASE_NUM = '&Enter_Release_Num';
 
--wf approval process
SELECT DOCUMENT_TYPE_CODE,
       DOCUMENT_SUBTYPE,
       WF_APPROVAL_ITEMTYPE,
       WF_APPROVAL_PROCESS,     --确认该值
       WF_CREATEDOC_ITEMTYPE,
       WF_CREATEDOC_PROCESS
  FROM PO_DOCUMENT_TYPES_ALL_B
 WHERE DOCUMENT_TYPE_CODE IN('REQUISITION','PO','RELEASE')
 ORDER BY 1,2,3;

1)在管理界面Retry,需要sysadmin权限。

  • 以sysadmin登陆;

  • 操作路径: Workflow Administrator Web Applications –> Status Monitor -> 输入查询条件 (Type Internal Name 即对应 item_type) –> Action History -> Retry 即可。

2)登录到服务器的SQL*Plus,运行wfretry.sql脚本。

  • 以mgr用户,登录到服务器,并切换到 $FND_TOP/sql 路径下;
  • 以apps用户登录到SQL*Plus
  • 运行脚本: @wfretry,并按提示输入参数即可。

示例,以 PR 81000902 为例:

SQL> conn apps
Enter password: 
Connected.

SQL> @wfretry
Enter value for 1: REQAPPRV
Enter value for 2: 267857-933577
Select from list of error activities
 
LABEL                          RESULT
------------------------------ ------------------------------
VERIFY_APPROVER_AUTHORITY      #EXCEPTION
 
Label: MAIN_REQAPPRV_PROCESS
SKIP, RETRY or RESET activity?
Command: RETRY
Result of activity if command is SKIP
Result: 
 
PL/SQL procedure successfully completed.
 
 
Commit complete.
 
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.6.0 - Production

3)在SQL*Plus或者PL/SQL Developer中运行wf_engine.HandleError存储过程。

以PR 81000902 为例,确认好上述参数后,运行如脚本:

BEGIN
   wf_engine.HandleError('REQAPPRV','267857-933577','MAIN_REQAPPRV_PROCESS','RETRY');
END;
 
commit;

4)确认时,查看该单据的工作流详情即可:

--查看工作流详情
SELECT WIAV.NAME ATTR_NAME,
       SUBSTR(NVL(WIAV.TEXT_VALUE,
                  NVL(TO_CHAR(WIAV.NUMBER_VALUE),
                      TO_CHAR(WIAV.DATE_VALUE, 'DD-MON-YYYY hh24:mi:ss'))),
              1,
              30) VALUE
  FROM WF_ITEM_ATTRIBUTE_VALUES WIAV, WF_ITEM_ATTRIBUTES WIA
 WHERE WIAV.ITEM_TYPE = '&item_type'
   AND WIAV.ITEM_KEY = '&item_key'
   AND WIA.ITEM_TYPE = WIAV.ITEM_TYPE
   AND WIA.NAME = WIAV.NAME
--   AND WIAV.NAME = 'SYSADMIN_ERROR_MSG'
   AND WIA.TYPE <> 'EVENT';

小结

一般情况下,retry都可以将异常的工作流跑通,如果还是出现异常,则可能需要进行reset 操作,即将审批中的单据退回到提交审批前的状态。这样的话工作人员需要重新进行审批。



blog comments powered by Disqus

Published

16 August 2013

Categories

Tags

Github