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的参数就是,个性化的中设置的变元。
建议呢!每个自定义代码都加上加上作者的注释,包括作者、用途、及时间。
此次新增的代码为:
v_Po_Header_Id Number(30) := Name_In('PO_RELEASES.PO_HEADER_ID');
由于我的代码中使用到 Editor_Pkg.Report过程,这个过程是在FNDCONC.pll中,所以我们需要把FNDCOC库添加到CUSTOM下面才可以使用。
如果本地resource没有,我们要从服务器上下载,也是在$AU_TOP/resource/目录下。
下载后,附加动作如下:
3.上传并编译CUSTOM.pll
将编辑好的CUSTOM.pll文件保存,并上传至$AU_TOP/resource/目录下,覆盖。
编译pll.
cd $AU_TOP/resource/
frmcmp_batch module_type=LIBRARY module=CUSTOM userid=apps/apps
以上所用版本为R12。
如果是11i,编译命令如下:
f60gen module_type=LIBRARY module=CUSTOM userid=apps/apps
4.设置个性化
在 PO发放界面的个性化上面新增2个规则
1.新增菜单项
先设置规则,及条件,如图:
2.设置菜单项执行动作
规则、条件
活动设置
5.验证个性化及自定义程序
注意的是, 调用自定义程序库,必须重新登录EBS才能生效!OK搞定!
缺点:
1.版本控制麻烦,每个程序新增功能前都必须下载最新的CUSTOM.pll,而且必须得知会所有程序员。
2.CUSTOM.pll为公用的程序库,如果发生未知异常,且编译时不体现的话,全部的Form都可能受到影响。
欢迎补充。。。。欢迎拍砖!