日期:2014-05-16  浏览次数:20574 次

Form 个性化-调用自定义程序库(实现:提交请求,自动输出请求结果)

需求:PO发放界面,原有的菜单【查看文档】,标准输出的报表及数据源XML无法明细到Distribution。

解决思路:客制明细报表,并挂请求,PO发放界面,利用个性化,新增一个菜单项【查看文档-客制】,该菜单项来执行请求并将请求结果自动呈现给用户。

  Form 个性化中,内置的Action提供一种名为:“调用自定义程序库”,其实就是CUSTOM.pll,这个文件。

 当项目中不允许需改标准Form,且利用个性化又无法达到需求目的的时候,CUSTOM.pll,就是个很好的帮手。灵活性很大,但是也有缺点。缺点后面再说。


1.下载CUSTOM.pll文件。

用FTP工具,切换到路径$AU_TOP/resource/目录下,并下载CUSTOM.pll.

2.编辑CUSTOM.pll,新增自己的CODE。

用Form Builder打开CUSTOM.pll文件

此处需要注意的是,CUSTOM.pll其实就是一个package,Event就是自定义程序库的入口程序,其Event_Name的参数就是,个性化的中设置的变元。

建议呢!每个自定义代码都加上加上作者的注释,包括作者、用途、及时间。


此次新增的代码为:

Procedure Run_Blanket_Release_Pdf Is
    v_Po_Header_Id      Number(30) := Name_In('PO_RELEASES.PO_HEADER_ID');
    v_Release_Id        Number(30) := Name_In('PO_RELEASES.PO_RELEASE_ID');
    v_Org_Id            Number(30) := Name_In('PO_RELEASES.ORG_ID');
    l_Request_Id        Number;
    l_Bl_Result         Boolean;
    v_Layout            Boolean;
    x_Phase             Varchar2(100);
    x_Status            Varchar2(100);
    x_Dev_Phase         Varchar2(100);
    x_Dev_Status        Varchar2(100);
    x_Message           Varchar2(100);
    v_Template          Varchar2(100);
    v_Organization_Code Varchar2(10);
  Begin
    If v_Org_Id Is Not Null Then
      Begin
        Select Organization_Code
          Into v_Organization_Code
          From Org_Organization_Definitions t
         Where t.Operating_Unit = v_Org_Id;
      Exception
        When Others Then
          Fnd_Message.Set_String('异常错误,报表输出失败!');
          Fnd_Message.Error;
          Return;
      End;
    End If;

    If v_Organization_Code = 'SZ' Then
      v_Template := 'CUXPOR046_BLK_REL_SZ';
    Else
      v_Template := 'CUXPOR046_BLK_REL_TS';
    End If;
  
    v_Layout := Fnd_Request.Add_Layout('PO'
                                      ,v_Template
                                      ,Null
                                      ,Null
                                      ,'PDF');
  
    l_Request_Id := Fnd_Request.Submit_Request('PO'
                                              ,'CUXPOR046_BLK'
                                              ,''
                                              ,''
                                              ,False
                                              ,v_Po_Header_Id
                                              ,v_Release_Id
                                              ,''
                                              ,Chr(0)
                                              ,''
                                              ,''
                                              ,''
                                              ,''
                                              ,''
                                              ,''
                                              ,''
                                              ,''
                                              ,''
                                              ,''
                                              ,''
                                              ,''
                                              ,''
                                              ,''
                                              ,''
                                              ,''
                                              ,''
                                              ,''
                                              ,''
                                              ,''
                                              ,''