Integration of XML Publisher With OAF - v1
Integration of XML Publisher With OAF - v1
Integration of XML Publisher With OAF - v1
It is a very common requirement where we want to generate reports in PDF, MSWord, MS Excel and
HTML format from an OAF page itself without submitting any concurrent program.
As we are going to generate the output from OAF, we need to generate the XML data using view object,
View Object is having inbuilt functionality to read and write data in XML format. View Object is having
one method called writeXML which will generate the data in XML format. We can use it for two
purposes:
1. To generate XML Data in Jdeveloper Embedded OC4J Sever Log (It will give XML Definition
of data; we can use it for designing our Template and register this as Data definition).
2. To generate XML data for actual template processing.
Step 1: Create OAWorkspace, Project, packages, VO and AM (I hope you are already familiar with
these)
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import oracle.apps.fnd.framework.webui.beans.table.OAAdvancedTableBean;
import oracle.apps.xdo.oa.schema.server.TemplateHelper;
import oracle.jbo.XMLInterface;
Step 3: Create one method in your AM to generate XML output, call this method from your
processRequest mathod and get it printed on Jdeveloper console:
Your code for should look like this:
Statements highlighted will print the XML data generated by your view object to Jdeveloper console.
In first line vo.writeXML will generate the XML for VO and print method will write the XML data in
outputstream that can further be used to print XML data on Jdeveloper console using println method.
You can copy this output and save with some meaningful name and use it to register as data definition
and to design your template(copy only XML data).
Fill in all the mandatory columns and give a short code for your data definition and clink on “Apply”
button, now click on “Template” Tab
Step 6.1: Create a submit button to Generate the output say “Print”
Step 6.2: Add following method to your AM Impl class
/*
* Handles functionality of Print button
*/
if(pageContext.getParameter("btnPrint")!=null)
{
// Get the HttpServletResponse object from the PageContext. The report output is written to
HttpServletResponse.
DataObject sessionDictionary = (DataObject)pageContext.getNamedDataObject("_SessionParameters");
HttpServletResponse response =
(HttpServletResponse)sessionDictionary.selectValue(null,"HttpServletResponse");
try {
ServletOutputStream os = response.getOutputStream();
((OADBTransactionImpl)pageContext.getApplicationModule(webBean).getOADBTransaction()).getAp
psContext(),
“AK”,//APPLICATION SHORT NAME
“Print Template TMP”, //TEMPLATE_SHORT_CODE
((OADBTransactionImpl)pageContext.getApplicationModule(webBean).getOADBTransaction()).getUs
erLocale().getLanguage(),
((OADBTransactionImpl)pageContext.getApplicationModule(webBean).getOADBTransaction()).getUs
erLocale().getCountry(),
inputStream,
TemplateHelper.OUTPUT_TYPE_PDF,
null,
pdfFile);
//TemplateHelper.
}
catch(Exception e)
{
response.setContentType("text/html");
throw new OAException(e.getMessage(), OAException.ERROR);
}
pageContext.setDocumentRendered(true);
Here application/pdf can be replaced with valid MIME type for Excel/Word and HTML