1,实现java类,生成PDF或Excel等类型的文件
可以参考前面的文章: Java代码导出Jasperreport
注意jasper文件的路径和生成PDF文件的路径处理。
将开发好的工程打成Jar包,Shell脚本的Java命令要使用该类。
2,定义基于Shell并发程序
1)编写shell脚本: exportpdf.prog
该脚本主要功能是调用1中实现的Java类去生成PDF文件。
... ...
... ...
export CLASSPATH=$JASPER_BASE/lib/exportreports.jar:$BASEDIR/jasper/$form_locale:"$CLASSPATH"
java cn.shawn.report.main.ExportReport -t $outputformat -f $FORM -o $OUT $ARG_INPUT -b $DBCONF -n $reqid
if [ $? -ne 0 ]; then
exit 1
fi
exit 0
可以参考这个FTP的例子:http://www.cnblogs.com/benio/archive/2011/06/10/2077312.html
2)将shell脚本放到应用模块下的bin目录下,如$FND_TOP/bin下
3)从shell脚本文件创建一个链接到$FND_TOP/bin/fndcpesr文件,fndcpesr文件是用来处理将并发管理器的参数传给shell脚本,以便shell脚本里面可以通过$N的方式取得参数的值。
$XXAU_TOP/bin/exportpdf -> ../../../fnd/12.0.0/bin/fndcpesr
4)注册可执行类型为:Host
Executable: exportpdf
Short Name: exportpdf
Application: XXAU Application
Description: null
Execution Method: Host
Execution File Name: exportpdf
Subroutine Name: null
Execution File Name: null
注意: Execution File Name 是定义好的Shell文件,shell脚本的名字、fndcpesr的链接要相同。Application要保证Shell脚本处于该应用目录结构中。
5)注册Concurrent Program
这里不详细描述了,需要注意的是: executable选择定义好的Host可执行,Output如果是Excel选择PostScript。
3,定义Package,将业务数据保存到临时表,可参考: http://blog.csdn.net/luyushuang/article/details/8555331。
数据Commit后,要调用2中注册的Concurrent Program去生成PDF文件。
然后,将开发好的Package做为PLSQL类型的可执行注册表EBS中,输出为None即可。
4,开发业务报表,SQL语句从3中的临时表取数据。开发完成后,将jasper文件上传到指定应用目录。提交3中注册的Concurrent Program,会连续提交两个并发请求,第二个会输出需要的PDF文件,点击其Output即为结果。