惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
Microsoft Azure Blog
Microsoft Azure Blog
L
LangChain Blog
Y
Y Combinator Blog
Microsoft Security Blog
Microsoft Security Blog
宝玉的分享
宝玉的分享
B
Blog RSS Feed
MongoDB | Blog
MongoDB | Blog
Jina AI
Jina AI
D
Docker
B
Blog
Engineering at Meta
Engineering at Meta
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
I
InfoQ
G
Google Developers Blog
博客园 - Franky
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
大猫的无限游戏
大猫的无限游戏
阮一峰的网络日志
阮一峰的网络日志
U
Unit 42

博客园 - 德仔

Win7环境下装SQL SERVER 2005 IIS的设置 C# Winform 使用 MYSQL 新增,读取数据乱码问题 gridview中的" "问题解决方法 [译]SQL2005/2008错误18456 登录失败的 解决方案 Compilation Error 解决方案汇集 KM知识管理推广方案 Oracle EBS: ASCP 学习 PL-SQL问题集锦 Global.asax文件失效的解决办法 一份DBA面试题 oracle:IF语句 Loop循环 Cursor的用法(二) Oracle:IF语句 Loop循环 Cursor的用法(一) Oracle EBS:PO行接收关闭后修改其它行自动打开 异常:HRESULT: 0x80070057 (E_INVALIDARG) 的处理 NPOI动态获取数据源绑定Gridview显示 Oracle EBS:SQL 失效一揽子PO协议 Web开发电子期刊 2010年第5期(第45期) [译]Oracle EBS:追踪PO全过程 Oracle PL/SQL:IF语句的基本使用
Oracle EBS: 获取PO审批人名字
德仔 · 2010-06-08 · via 博客园 - 德仔

PO审批的动作从数据库中去看有:    

OPEN    NO ACTION    REJECT    FORWARD      APPROVE
SUBMIT    CLOSE  RETURN  CANCEL  IMPORT  FINALLY CLOSE

通过查看po_action_history表就会发现很有意思的事情了

http://www.dezai.cn/blog/article.asp?id=343

假设基本的PO审批架构为

跟单员->采购员1审核->采购员2审核->采购总监审核

Sequence_Num   Action_Code  两列的数据就可以很清晰查看到整个审批流程了

而表中的object_id实际上跟po_header_all的po_header_id 及po_release_all 中的po_release_id也是有关联的.

有了以上这几个字段就可以串出来了,action_code实际上也可以做个变量,这样控制也就更灵活了。

这个应用在打印PO合同里面自动带出采购员中可以应用,省去手工签字的麻烦。

function GetChecker(p_object_id in number) return varchar2 as
  
    v_user_name Varchar2(50);
  
  begin
  
    Select PO_EMPLOYEES_SV.GET_EMP_NAME(POAH.EMPLOYEE_ID)
      into v_user_name
      FROM PO_ACTION_HISTORY POAH,
           PO_LOOKUP_CODES   POLC1,
           PO_LOOKUP_CODES   POLC2
     Where POLC1.LOOKUP_CODE(+) = POAH.ACTION_CODE
       AND POLC1.LOOKUP_TYPE(+) = 'APPROVER ACTIONS'
       AND POLC2.LOOKUP_CODE(+) = POAH.ACTION_CODE
       AND POLC2.LOOKUP_TYPE(+) = 'CONTROL ACTIONS'
       AND POAH.Sequence_Num = 2
       AND POAH.Action_Code = 'FORWARD'
       and poah.Object_Id = p_object_id
       and rownum = 1;
  
    return v_user_name;
  
  end;

我原来是用这个的,但后来发现有问题

function GetChecker(p_object_id in number) return varchar2 as
  
    v_user_name Varchar2(50);
  
  begin
  
    \* select fu.Description
     into v_user_name
     from Fnd_User fu
    where fu.Employee_Id = p_agent_id;*\
    select pahv.employee_name
      into v_user_name
      from PO_ACTION_HISTORY_V pahv
     where pahv.object_id = p_object_id
       and pahv.action_code = 'FORWARD'
       and pahv.sequence_num = 2
       and pahv.object_type_code = 'PO'
       and rownum = 1; --转发
    return v_user_name;
  
  end;