採购单据审批研究

流程

採购模块同意你使用通用的流程审批非常多不同单据类型。

Oracle採购模块中的单据审批路径包含例如以下单据类型:

 

  • 採购申请
  • 内部申请
  • 标准採购订单
  • 计划採购订单
  • 一揽子採购协议
  • 全球採购协议
  • 一揽子採购协议发放
  • 计划发放
  • 合同採购协议
  • 全球合同採购协议

主要採购类型的审批路径被分解为下面两个工作流:

  • 採购订单审批工作流(poxwfpoa.wft)
  • 採购申请审批工作流(poxwfrqa.wft)

以下的项目类型在两个基本的工作流中都会讲到:

poxwfpoa.wft
- POAPPRV

poxwfrqa.wft
- REQAPPRV



整体上的审批路径逻辑例如以下:

  1. 创建并完毕须要提交的单据
  2. 发起单据审批流程
  3. 假设‘全部者能够审批’被同意,单据审批将在这个层次发生
  4. 假设单据须要额外的用户审批,单据将按以下路径审批
  5. 不论审批在哪个级别发生,审批层次都会被调用
  6. 採购模块提供以下的单据审批活动:

-    保留或非保留(假设使用保留/ 预算控制)

-提交审批

-转发

     7.通过以下的一种选择或组合发出供应商通知

-打印选项(单据一旦批准会自己主动打印)

-传真

-电子邮件

-电子数据交换(EDI)

-可扩展标记语言

     8.提交审批来检查单据的完整性而且在一个适当的活动状态

 

 

流程简述

REQAPPRV

AME_APPROVAL_LIST_ROUTING

  • 使用AME的审批列表路径
  • 通过AME 审批列表处理单据审批路径
  • 在AME审批列表里处理审批通知和回复审批人

APPROVAL_LIST_ROUTING

  • 审批列表路径
  • 通过主审批列表处理单据审批路径
  • 在主审批列表里处理审批通知和回复审批人

APPROVAL_ROUTING_CHOOSER

  • 审批路径选择
  • 处理决定哪个路径被调用(标准工作流或AME)
  • 调用:AME_APPROVAL_LIST_ROUTING
  • 调用:APPROVAL_LIST_ROUTING

APPROVAL_REQ_SUB_PROCESS

  • 批准採购申请
  • 在IS_DOCUMENT_APPROVE被调用时处理决定路径
  • 处理部分通知和回应处理
  • 调用: DOC_STATE_CHECK_BEFORE_APP
  • 调用: DOC_SUBMISSION_CHECK_BEF_APP
  • 调用: DOC_APPROVE_SUB_PROCESS

BUILD_APPROVAL_LIST_PROCESS

  • 建立审批列表
  • 检查是否当前的审批列表已经存在
  • 处理建立默认的审批列表决定

CHECK_REQUIRE_APPROVAL_PROCESS

  • 审批路径须要吗?
  • 检查全部者能否够审批
  • 调用: VERIFY_APPROVER_AUTH_PROCESS

DOC_APPROVE_SUB_PROCESS

  • 单据管理器审批子流程
  • 处理调用APPROVE_REQUISITION功能

DOC_STATE_CHECK

  • 单据状况检查子流程
  • 处理调用VERIFY_STATE_CHECK_APPROVE功能

DOC_STATE_CHECK_BEFORE_APP

  • 批准子流程前的单据状况检查
  • 处理一个调用VERIFY_STATE_CHECK_APPROVE 的功能

MAIN_REQAPPRV_PROCESS

  • 基本的採购申请审批
  • 处理採购申请审批的主要调用和流
  • 调用: START_OF_APPROVE_REQ
  • 调用: VERIFY_REQUISITION
  • 调用: BUILD_APPROVAL_LIST_PROCESS
  • 调用: CHECK_REQUIRES_APPROVAL_PROCESS
  • 调用: APPROVAL_ROTUING_CHOOSER
  • 调用: REJECT_REQUISITION_PROCESS
  • 调用: APPROVE_REQ_SUB_PROCESS

 

NOTIFY_APPROVER_CHOOSER

  • 通知审批人选择
  • 处理调用IS_FORWARD_ACTION_ALLOWED的功能
  • 调用:Calls: NOTIFY_APPROVER_PROCESS

NOTIFY_APPROVER_PROCESS

  • 通知审批人
  • 处理最初的发送到或来自审批人的审批通知
  • 处理通知提醒调用

NOTIFY_APPROVER_PROCESS_SIMPLE

  • 通知审批人(简化的)
  • 处理调用INSERT_ACTION_HISTORY的功能

NOTIFY_APPROVER_SIMPLE_AME

  • 通知在AME中的审批人(简化的)
  • 处理AME路径中的调用INSERT_ACTION_HISTORY的功能

NOTIFY_RETURN_REQ

  • 被採购员返回的採购申请通知
  • 处理调用GET_REQUISITION_DATA功能

REJECT_REQUISITION_PROCESS

  •  拒绝採购申请
  • 处理调用REJECT_REQUISITION

RESPONSE_APPROVE

  • 对审批活动进行反应
  • 审批人处理实际的审批回复活动
  • 调用: VERIFY_APPROVER_AUTH_APPROVE

RESPONSE_APPROVE_AME

  • 使用AME回应审批活动
  • 处理调用UPDATE_APPROVAL_RESPONSE_AME功能
  • 处理调用UPDATE_ACTION_HISTORY_APPROVE功能

RESPONSE_APPROVE_FORWARD

  • 回应审批和转发活动
  • 处理审批人实际的审批和转发回复活动
  • 调用: VERIFY_APPROVER_AUTH_APPROVE

RESPONSE_FORWARD

  • 回应转发活动
  • 处理调用UPDATE_APPR_LIST_RESP_FWD功能
  • 处理调用UPDATE_ACTION_HISTORY_FORWARD功能

RESPONSE_REJECT

  • 回应拒绝活动
  • 处理调用UPDATE_APPR_LIST_RESP_REJECT功能
  • 处理调用UPDATE_ACTION_HISTORY_REJECT功能

 RESPONSE_REJECT_AME

  • 使用AME回应审批活动
  • 处理调用UPDATE_APPROVAL_RESPONSE_AME功能
  • 处理调用UPDATE_ACTION_HISTORY_APPROVE功能

START_OF_APPROVE_REQ

  • 開始採购申请审批流程
  • 处理调用IS_AME_USED_FOR_APPROVAL功能
  • 处理调用FIND_APPROVAL_LIST功能
  • 处理调用GET_WORKFLOW_APPROVAL_MODE功能

VERIFY_APPROVER_AUTH_APP_FWD

  • 核实审批和转发的审批权限
  • 处理调用IS APPROVER THE PREPARER?功能
  • 处理调用VERIFY_APPROVER_AUTHORITY功能
  • 处理调用CAN_OWNER_APPROVE功能

VERIFY_APPROVER_AUTH_APPROVE

  • 为审批活动核实审批权限
  • 处理调用IS APPROVER THE PREPARER?功能
  • 处理调用VERIFY_APPROVER_AUTHORITY功能
  • 处理调用CAN_OWNER_APPROVE功能

 VERIFY_APPROVER_AUTH_PROCESS

  • 核实审批权限
  • 处理调用VERIFY_APPROVER_AUTHORITY功能

VERIFY_REQUISITION

  • 核实採购申请
  • 调用:DOC_STATE_CHECK

 

基本的採购申请审批

  

 

POAPPRV

APPROVE_AND_FORWARD_PO

  • 审批和转发採购订单
  • 调用:DOC_STATE_CHECK_APP_FWD
  • 调用:DOC_COMLETE_CHECK_APP_FWD
  • 在通知发送审批和转发活动前处理验证

APPROVE_PO_SUB_PROCESS

  • 审批採购订单
  • 调用:DOC_STATE_CHECK_BEFORE_APP
  • 调用:DOC_COMPLETE_CHECK_BEFORE_APP
  • 在通知和传递发送前处理验证

APPROVE_PO_SUB_PROCESS_CO

  • 审批採购订单(更改订单)
  • 调用:DOC_STATE_CHECK_BEFORE_APP_CO
  • 调用:DOC_COMP_CHECK_BEFORE_APP_CO
  • 在更改订单的通知和传递发送之前处理验证

CREATE_SR_AND_ASL

  • 创建来源规则和批准的供应商列表
  • 处理调用功能
  • 为採购订单审批处理来源规则和批准的供应商列表

DOC_COMP_CHECK_BEFORE_APP_CO

  • 在审批子流程(更改订单)单据完毕检查
  • 处理调用SUBMISSION_CHECK功能
  • 在审批子流程调用前处理CO单据检查校验

DOC_COMPLETE_CHECK

  • 单据完毕检查子流程
  • 处理调用SUBMISSION_CHECK功能
  • 处理单据检查校验

DOC_COMPLETE_CHECK_APP_FWD

  • 在审批&转发子流程之前单据完毕检查
  • 处理调用功能
  • 在审批&转发子流程前处理单据检查校验

DOC_COMP_CHECK_BEFORE_APP

  • 在审批子流程前单据完毕检查
  • 处理调用SUBMISSION_CHECK功能
  • 在审批子流程调用之前处理单据检查验证

DOC_RESERVE_PROCESS

  • 单据保留子流程
  • 处理调用功能
  • 为调用预保留账户处理保留活动

DOC_RESERVE_PROCESS_CO

  • 单据保留子流程(订单更改)
  • 处理调用RESERVE DOCUMENT功能
  • 为更改订单处理保留活动

DOC_STATE_CHECK

  • 单据状况检查子流程
  • 处理调用功能
  • 为採购订单审批处理单据状况检查

DOC_STATE_CHECK_FWD

  • 在审批&转发子流程前单据状况检查
  • 处理调用VERIFY_STATE_CHECK_APPROVE功能
  • 在调用审批&转发子流程前处理单据状况

DOC_STATE_CHECK_BEFORE_APP

  • 在审批子流程前单据状况检查
  • 处理调用VERIFY_STATE_CHECK_APPROVE功能
  • 在调用审批子流程前处理单据状况检查

DOC_STATE_CHECK_BEFORE_APP_CO

  • 在审批子流程(更改订单之前)单据状况检查
  • 处理调用VERIFY_STATE_CHECK_APPROVE功能
  • 在调用审批子流程前为CO处理单据状况检查

 

FIND_APPROVER

  • 找到审批人
  • 调用: VERIFY_APP_AUTH_FWD_NO_HIER
  • 调用: VERIFY_APP_AUTH_FWD_HIER
  • 处理调用FOWARD_TO_PROVIDED功能
  • 处理调用GET_APPROVAL_PATH_ID功能
  • 处理调用FORWARDING_MODE功能
  • 处理调用USE_POSITION_FLAG功能
  • 处理採购订单活动审批人的安全性

 

FORWARD_PO

  • 转发採购订单
  • 处理调用IS_PO_PRE-APPROVED-1功能
  • 处理调用FORWARD_PO_INPROCESS功能
  • 处理调用FORWARD_PO_PREAPPROVED-1功能
  • 处理调用GET_PO_DATA功能
  • 处理调用GET_PO_DATA-1功能
  • 处理採购订单审批转发活动

 

GET_ALL_CHANGES

  • 获得全部的单据更改
  • 调用: GET_CONTRACT_PO_CHANGES:
  • 调用: GET_BLANKET_PO_CHANGES
  • 调用: GET_PLANNED_PO_CHANGES
  • 调用: GET_STANDARD_PO_CHANGES
  • 调用: GET_REL_CHANGES

GET_BLANKET_PO_CHANGES

  • 获得全部的一揽子採购订单更改
  • 处理调用GET_HEADER_CHANGES功能
  • 处理调用GET_LINE_CHANGES功能
  • 处理调用GET_SHIPMENTS_CHANGES功能

 

GET_CONTRACT_PO_CHANGES

  • 获得全部的合同订单更改
  • 处理调用GET_HEADER_CHANGES功能
  •  

GET_PLANNED_PO_CHANGES

  • 获得全部的发放更改
  • 处理调用GET_HEADER_CHANGES功能
  • 处理调用GET_LINE_CHANGES功能
  • 处理调用GET_SHIPMENTS_CHANGES功能
  • 处理调用GET_DIST_CHANGES功能

GET_REL_CHANGES

  • 获得全部的发放更改
  • 处理调用GET_RELEASE_CHANGES功能
  • 处理调用GET_SHIPMENTS_CHANGES功能
  • 处理调用GET_DIST_CHANGES功能

GET_STANDARD_PO

  • 获得全部的标准订单更改
  • 处理调用GET_HEADER_CHANGES功能
  • 处理调用GET_LINE_CHANGES功能
  • 处理调用GET_SHIPMENT_CHANGES功能
  • 处理调用GET_DIST_CHANGES功能

 

MAIN_POAPPRV_PROCESS

  • 採购订单审批流程
  • 调用: VERIFY_PO
  • 调用: FIND_APPROVER
  • 调用: RETURN_PO
  • 调用: FORWARD_PO
  • 调用: VERIFIY_APPROVER_AUTH_PROC
  • 调用: NOTIFY_APPROVER_PROCESS-1
  • 调用: APPROVE_AND_FORWARD_PO
  • 调用: REJECT_PO_PROCESS
  • 调用: RESERVE_BEFORE_APPROVE-1
  • 调用: RAISE_CHANGE_EVENT3
  • 调用: APPROVE_PO_SUB_PROCESS
  • 调用: RAISE_CHANGE_EVENT2
  • 调用: RAISE_SEND_PO_EVENT
  • 调用: CREATE_SR_AND_ASL
  • 处理调用CAN_OWNER_APPROVE功能
  • 处理调用IS_FORWARD_TO_USER_NAME_VALID功能
  • 处理调用IS APPROVER ALSO THE PREPARER功能
  • 处理调用IS_PO_PRE_APPROVED功能
  • 处理调用FORWARD_TO_PROVIDED功能
  • 处理调用SET_PO_STAT_TO_PREAPPROVED功能
  • 处理调用DOES_USER_WANT_SR_ASL_CREATED功能

NOTIFY_APPROVER_PROCESS

  • 通知审批人
  • 调用:NOTIFY_APPROVER_SUBPROCESS
  • 处理调用功能PO_NEW_COMMUNICATION
  • 处理调用功能GET_APP_NOTIFICATION_ATTRIBUTE
  • 处理调用功能IS_FORWARD_TO_VALID
  • 处理建立和发送通知活动给审批人

NOTIFY_APPROVER_SUBPROCESS

  •  通知审批人子流程
  • 处理调用功能PO_NEW_COMMUNICATION
  • 为建立和发送通知活动给审批人处理子流程

 

 

基本的採购订单审批



出错诊断:

跟踪

 

下面步骤可用来跟踪在审批流程用使用的SQL语句

1.在採购模块中启用追踪

-从系统管理员职责进入应用

 -选择配置文件=> 系统

 -选择应用选择框

 -输入採购作为应用的值

  -用以下的语句更新设置配置选项‘初始化SQL语句 – 定制’:
BEGIN FND_CTL.FND_SESS_CTL('','', '', 'TRUE','','ALTER SESSION SET TRACEFILE_IDENTIFIER='||''''||'<Provide a unique identifier, like SR#>' ||''''||' EVENTS ='||''''||' 10046 TRACE NAME CONTEXT FOREVER, LEVEL 12 '||''''); END;

提示:SQL语句应该在用户层针对定制的配置使用。确保语句作为一个完整的没有不论什么回车符的行,密切注意在行的文本内提供有效的标识符。

2针对被设定的配置选项,立马切换到採购职责,反复想得到追踪信息的问题。

这样做的目标是仅仅抓取与看到的问题相关的数据库指令。

3.通过以下的步骤定位新生成的追踪文件:

使用下面SQL语句定位DUMP的地点:

select name, value from v$parameter where name like 'user_dump_dest';

返回的路径是追踪文件在数据库server上位置

在这个文件夹内前一个语句所选择的标识符上查找

4.找到的跟踪文件能够有Tkprof格式。和RAW格式的跟踪文件
tkprof <文件名称>.trc <文件名称>.out explain=<找到的 username/password>
5.在应用层关掉前面设置的配置。停止追踪。这能够阻止生成额外的追踪文件。

 

日志

调试日志

为进行深入的分析,Debug logging 可在文档管理器级别启用来显示在处理过程中所作的活动。能够按下面步骤进行:

1.在应用层设置下面配置文件选项

  • 设置 "PO: Set Debug Workflow ON" to "Yes"
  • 设置 "PO: Set Debug Concurrent ON " to "Yes"

2.设置Document Manager processes的数值为1

3.通过删除表po_wf_debug的内容来清空DEBUG 表

4.重新启动Document Manager process.

5.重现问题

6.查询表po_wf_debug 以找到生成的日志行

7.改回配置选项的设定

8.重新启动Document Approval Manager来更新设置的改变

数据与查询

下面查询可用来验证部分审批流程中的数据。

採购订单状态:

select segment1 po#, revision_num r#, 
substr(type_lookup_code,1,4) type, authorization_status auth_status,   
closed_code, wf_item_type, wf_item_key, org_id  
from po_headers_all   
where segment1 = '&PO_NUMBER' 
 

採购申请状态:

select segment1 req#,authorization_status auth_status,  
closed_code, wf_item_type, wf_item_key, org_id 
from   po_requisition_headers_all  
where segment1 = '&REQ_NUM' 

发放状态:

select po.segment1 po#, rel.release_num rel#, po.revision_num po_r#,  
po.authorization_status po_status, po.closed_code close_po, 
po.wf_item_type po_type, po.wf_item_key po_key, po.org_id org,  
rel.wf_item_type rel_type, rel.wf_item_key rel_key,  
rel.po_release_id rel_id, rel.authorization_status rel_status, rel.hold_flag hold 
from po_headers_all po, po_releases_all rel 
where po.po_header_id = rel.po_header_id 
  and po.segment1 = '&PO_NUM' 
  and rel.release_num = 'REL_NUM' 
order by 1,2


採购订单活动历史:

select poah.sequence_num seq#, poah.action_date, poah.action_code, 
poah.employee_id emp_id, fnd.user_name, substr(poah.object_type_code,1,3) type, poah.object_sub_type_code sub_type, 
poah.object_revision_num rev, pohead.org_id 
from po_action_history poah, fnd_user fnd, po_headers_all pohead 
where poah.object_id = pohead.po_header_id 
and pohead.segment1 = '&PO_NUMBER' 
and pohead.org_id = '&ORG_ID' 
and   substr(poah.object_type_code,1,3) = 'PO' 
and   poah.employee_id = fnd.employee_id 
and   fnd.session_number != 0 
order by 2,1


採购申请活动历史:

select poah.sequence_num seq#, poah.action_date, poah.action_code, 
poah.employee_id emp_id, fnd.user_name, substr (poah.object_type_code,1,3) type, poah.object_sub_type_code sub_type, 
poah.object_revision_num rev, pohead.org_id, poah.note 
from po_action_history poah, fnd_user fnd, po_requisition_headers_all pohead 
where poah.object_id = pohead.requisition_header_id 
and pohead.segment1 = '&REQ_NUMBER' 
and substr(poah.object_type_code,1,3) = 'REQ' 
and pohead.org_id = '&ORG_ID' 
and poah.employee_id = fnd.employee_id 
and fnd.session_number != 0 
order by 9,2,1


与username关联的职位:

SELECT pos.name  position_name, pa.position_id,fnd.user_name 
FROM PER_ALL_ASSIGNMENTS_F pa, per_positions pos,per_jobs job, fnd_user fnd 
WHERE pa.POSITION_ID =  pos.POSITION_ID 
and pa.job_ID = job.job_id 
and sysdate between pa.EFFECTIVE_START_DATE 
and pa.EFFECTIVE_END_DATE 
and pa.primary_flag = 'Y' 
and pa.assignment_type = 'E' 
and pa.person_id = fnd.employee_id 
and pa.PERSON_ID = (select employee_id 
                    from fnd_user 
                    where user_name = '&user_name'

 

代码文件

下面代码文件可用来比較在有问题的环境文件版本号与那些在后来的可能修复问题的补丁版本号。这些文件也可用来在METALINK上按文件名称查找对应的补丁。

 

Type Filename Description
Workflow poxwfrqa.wft 採购申请审批工作流文件
Workflow poxwfpoa.wft 採购订单审批工作流文件
Workflow poxwfatc.wft CREATEPO 工作流文件
Package POXWPA1B.pls PO_REQAPPROVAL_INIT1 - 主要的採购申请审批
Package POXWPA2B.pls PO_POAPPROVAL_INIT1 - 主要的採购订单审批
Package POXWPA3B.pls PO_REQAPPROVAL_FINDAPPRV1 -为採购申请找到审批人
Package POXWPA4B.pls PO_REQAPPROVAL_ACTION - 採购申请审批活动与历史
Package POXWPA5B.pls PO_REQAPPROVAL_LAUNCH - 開始採购申请审批流程
Package POXWPA9B.pls PO_APPROVAL_ACTION -採购订单审批活动与历史

很多其它的内容能够參考oracle官方说明:https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=2237097423346821&id=1593055.1&displayIndex=5&_afrWindowMode=0&_adf.ctrl-state=189i723xec_306

原文地址:https://www.cnblogs.com/zsychanpin/p/7040713.html