问题现象:
CUX:应付原始单据归档报表(XXX.rdf + XXX.rtf 组合类型报表) 请求报警告,输出为XML代码而非PDF文件。
错误信息如下:
节点 EBSDEMO 上的请求 3588993 于 18-01-2013 10:06:05 开始进行后期处理。
请求 3588993 的后期处理于 18-01-2013 10:08:07 失败,并显示错误消息:
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; --请求编号
通过上面代码可以查看报错请求的日志文件路径,在日志文件中可以看到很多类似如下错误提示:
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.