Oracle EBS: 获取PO审批人名字

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

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


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

假设基本的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;



[本日志由 admin 于 2010-06-07 11:28 AM 编辑]
上一篇: [译]Oracle EBS:追踪PO全过程
下一篇: FlashPaper2在Windows7不能使用的解决方案
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: PO审批人
相关日志:
评论: 0 | 引用: 0 | 查看次数: 14683
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 30 字 | UBB代码 关闭 | [img]标签 关闭