需求: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