Form 个性化-调用自定义程序库(实现:提交请求,自动输出请求结果)
来源:互联网 发布:软件需求十步走 编辑:程序博客网 时间:2024/06/05 18:04
需求: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) ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,''); Commit; If l_Request_Id Is Null Or l_Request_Id = 0 Then Return; End If; fnd_message.set_string('请求提交成功,请稍等!请求ID:'||l_Request_Id); fnd_message.show; --更改鼠标式样:漏斗鼠标(忙状态)SET_APPLICATION_PROPERTY(CURSOR_STYLE, 'BUSY'); --显示进度条窗口,并设置进度为0 APP_WINDOW.PROGRESS(0); l_Bl_Result := Fnd_Concurrent.Wait_For_Request(l_Request_Id ,1 ,0 ,x_Phase ,x_Status ,x_Dev_Phase ,x_Dev_Status ,x_Message); If x_Dev_Phase = 'COMPLETE' And x_Dev_Status = 'NORMAL' Then Editor_Pkg.Report(l_Request_Id ,'Y'); --使输出的报表pdf文件在浏览器中显示。 Else Fnd_File.Put_Line(1 ,Rpad('x_phase' ,20 ,' ') || '=' || x_Phase); Fnd_File.Put_Line(1 ,Rpad('x_status=' ,20 ,' ') || '=' || x_Status); Fnd_File.Put_Line(1 ,Rpad('x_dev_phase=' ,20 ,' ') || '=' || x_Dev_Phase); Fnd_File.Put_Line(1 ,Rpad('x_dev_status=' ,20 ,' ') || '=' || x_Dev_Status); Fnd_File.Put_Line(1 ,Rpad('x_message=' ,20 ,' ') || '=' || x_Message); Fnd_File.Put_Line(1 ,'Warning : Starting journal print report failure! It did not running in 120 seconds, its request_id is ' || To_Char(l_Request_Id) || ' please check it.'); End If;SET_APPLICATION_PROPERTY(CURSOR_STYLE, 'DEFAULT'); APP_WINDOW.PROGRESS(1); --显示进度条窗口,并设置进度为1(100%) End Run_Blanket_Release_Pdf;pll里面代码可以自由发挥了,其实跟写Form一样。
如果需要带入参数,可以用 Name_In来取Form上面的值,如:
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都可能受到影响。
欢迎补充。。。。欢迎拍砖!
- Form 个性化-调用自定义程序库(实现:提交请求,自动输出请求结果)
- Form个性化--调用自定义程序库
- Oracle EBS Form个性化调用自定义程序库入门
- Oracle EBS Form个性化调用自定义程序库入门
- EBS FORM 个性化工具栏调用请求
- Form中调用请求
- Form 表单实现多个Action 请求,将表单数据提交到不同请求
- java 发送http请求(提交form表单)
- Http 模拟form表单提交Post请求
- PHP select筛选提交form表单请求
- Json实现异步请求(提交评论)
- Json实现异步请求(提交评论)
- Form表单提交,Ajax请求,$http请求的区别
- Oracle Form中调用并发请求生成报表并输出为PDF的方法 (FND_CONCURRENT.WAIT_FOR_REQUEST)
- jQuery 提交请求并返回结果
- Oracle Form/PLSQL 在Form或PLSQL提交并发请求
- js 提交form表单 和 设置form 表单请求路径
- Form 中调用并发请求生成报表并输出PDF的方法
- MQ配置文档说明手册
- JAVA=====选项卡的实例化
- oracle中以dba_、user_、v$_、all_、session_、index_开头
- 关于linuxmint下自动挂载分区的权限问题
- java数据类型
- Form 个性化-调用自定义程序库(实现:提交请求,自动输出请求结果)
- 树 森林和二叉树的转换
- JAVA======窗体事件实例化
- 如何在Gallery3D中支持Gif功能
- MySQL BIT类型字段插入不成功的问题
- 给学习J2EE的朋友一些值得研究的开源项目
- 进程和线程同步的方法
- centos rsync 配置
- UBI Volume Table