--- layout: post title: Retry PO Approval Workflow Process in EBS category : Oracle tags : [Oracle, DBA, EBS, Exception] --- 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 操作,即将审批中的单据退回到提交审批前的状态。这样的话工作人员需要重新进行审批。