Tuesday, September 02, 2008

XML / BI Publisher concurrent request fails with no error message? Check Output Post Processor (OPP) logfile for errors like: invalid char in text

So your Oracle Reports based concurrent request completed with warning and your concurrent request log file looks like this:

+------------- 1) PUBLISH -------------+
Beginning post-processing of request 1294502 on node XXXX01 at 02-SEP-2008 12:53:28.
Post-processing of request 1294502 failed at 02-SEP-2008 12:53:33 with the error message:
One or more post-processing actions failed. Consult the OPP service log for details.
+--------------------------------------+

And if you go to System Administrator, Concurrent > Manager > Administer, Query up "Output Post Processor", click on Processes, View Manager Log, you see something like:

[9/2/08 10:44:34 AM] [198325:RT1294354]
Template code: XXGLXXXX
Template app:  XXV8
Language:      en
Territory:     US
Output type:   EXCEL
[9/2/08 10:44:49 AM] [UNEXPECTED] [198325:RT1294354] java.lang.reflect.InvocationTargetException
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:585)
 at oracle.apps.xdo.common.xml.XSLT10gR1.invokeParse(XSLT10gR1.java:517)
 at oracle.apps.xdo.common.xml.XSLT10gR1.transform(XSLT10gR1.java:224)
 at oracle.apps.xdo.common.xml.XSLTWrapper.transform(XSLTWrapper.java:177)
 at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(FOUtility.java:1044)
 at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(FOUtility.java:997)
 at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(FOUtility.java:212)
 at oracle.apps.xdo.template.FOProcessor.createFO(FOProcessor.java:1657)
 at oracle.apps.xdo.template.FOProcessor.generate(FOProcessor.java:967)
 at oracle.apps.xdo.oa.schema.server.TemplateHelper.runProcessTemplate(TemplateHelper.java:5888)
 at oracle.apps.xdo.oa.schema.server.TemplateHelper.processTemplate(TemplateHelper.java:3438)
 at oracle.apps.xdo.oa.schema.server.TemplateHelper.processTemplate(TemplateHelper.java:3527)
 at oracle.apps.fnd.cp.opp.XMLPublisherProcessor.process(XMLPublisherProcessor.java:247)
 at oracle.apps.fnd.cp.opp.OPPRequestThread.run(OPPRequestThread.java:157)
Caused by: oracle.xdo.parser.v2.XMLParseException: Invalid char in text.
 at oracle.xdo.parser.v2.XMLError.flushErrors1(XMLError.java:324)
 at oracle.xdo.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:290)
 at oracle.xdo.parser.v2.XMLParser.parse(XMLParser.java:266)
 ... 17 more
[9/2/08 10:44:49 AM] [198325:RT1294354] Completed post-processing actions for request 1294354.

You look at your XML file via View Concurrent Requests, Diagnostics, View XML. Then how do you find the invalid character?

Try loading the XML Data in BI Publisher Desktop Word Plugin (Data > Load XML Data), and hopefully you'll see something like the following that gives the details of where the error is occurring (of course without the smudges ;-):

In this case the "invalid char" is indicated by the square box.

Throwing that into a hex editor (part of the highly recommended PSPad) we see character hex 05 followed by the two periods (hex 2E):

Looking at our ASCII table we see 05 is Enquiry - but this isn't a printing character and so will be causing the problem.

Okay, so now we know what's causing it, we can just update the data to remove the special character, and run the report again without hassles!

Or we could write a wrapper PL/SQL procedure to remove the control characters from the affected fields and add to the Report definition SQL.

Or those of you with more problems that just one occurrence of the control character could log an SR and see if something can be done other than that referred to in Note:155078.1!

1 comment:

Unknown said...

Thanks for the insight.
BI Publisher Desktop Word Plugin failed to load our corrupt xml file - try http://validator.w3.org as an alternative to verify xml data.
Regards,
Neal.