今天在做采购出入库明细报表的时候,有的时候能正常打印,有的时候报 One or more post-processing actions failed. Consult the OPP service log for details
查找原因过程
定位错误:
SELECT FCPP.CONCURRENT_REQUEST_ID REQ_ID,
FCP.NODE_NAME,
FCP.LOGFILE_NAME
FROM FND_CONC_PP_ACTIONS FCPP,
FND_CONCURRENT_PROCESSES FCP
WHERE FCPP.PROCESSOR_ID = FCP.CONCURRENT_PROCESS_ID
AND FCPP.ACTION_TYPE = 6
AND FCPP.CONCURRENT_REQUEST_ID = 3588980(请求编号)
查看日志
发现是解析XML的时候有转义字符,不能正常解析
查看数据发现物料说明里面有字符 “&” java遇到此字符不能转义
解决办法,在可能有次字符出现的地放,处理一下,例如
--item_name 里面有转义字符 ‘&’ 需要转义解析
output('<ITEM_NAME><![CDATA[' || rec_detail.item_name || ']]>
</ITEM_NAME>');
问题解决;
情况二:
错误三:
报表模板不存在,或者某个语言的模板不存在,检查之
网上对于此错误其他一些描述
请求报警告,错误信息为:Oneor more post-processing actions failed. Consult the OPP service log fordetails. 的解决方法
问题现象:
CUX:应付原始单据归档报表(XXX.rdf +XXX.rtf 组合类型报表) 请求报警告,输出为XML代码而非PDF文件。
只有如下错误信息:
节点 EBSDEMO上的请求 3588993于 18-01-201310:06:05开始进行后期处理。
请求 3588993的后期处理于 18-01-2013 10:08:07失败,并显示错误消息:
One or more post-processing actions failed. Consult the OPP service log fordetails.
定位错误:
SELECT FCPP.CONCURRENT_REQUEST_ID REQ_ID,
FCP.NODE_NAME,
FCP.LOGFILE_NAME
FROM FND_CONC_PP_ACTIONS FCPP,
FND_CONCURRENT_PROCESSES FCP
WHERE FCPP.PROCESSOR_ID =FCP.CONCURRENT_PROCESS_ID
AND FCPP.ACTION_TYPE = 6
ANDFCPP.CONCURRENT_REQUEST_ID = 3588980(请求编号);
通过上面代码可以查看报错请求的日志文件路径,在日志文件中可以看到很多类似如下错误提示:
java.lang.StackOverflowError
oracle.xdo.parser.v2.XSLSort.quicksortObjects(XSLSort.java:466)
从而可以肯定是由于排序导致内存溢出的问题。
解决方法:
1、查看该报表的排序代码是如何写的,发现该报表的排序居然是写在XXX.rtf模版文件中的,代码如下:
<?sort:ORDER_SEQUENCE_NUMBER;'ascending';data-type='number'?>
<?sort:JE_NUMBER;'ascending';data-type='text'?>
2、将模版中的排序代码去掉,然后在XXX.rdf程序中添加排序代码。
3、运行测试OK.
对于出现“One or more post-processing action failed. Consult the OPP service log for details.”一般有三种原因。
1.字符集不对。即encoding设为“UTF-8”.
2.报表和模板的加载有误。form中的fnd_request.add_layout中的模板名要和报表的代码相对应。
3.报表自身有问题。可以用log的方式逐行检查。
4.检查是否打印输出XML文件格式的时候,出现了空行,或者多余空格,如有,则删除即可。