日期:2014-05-16 浏览次数:20574 次
需求: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) ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,''