How To Integrate XML Publisher and OAF:Generating output in PDF, MSWord, MSExcel and HTML Format

Integrating XML Publisher and OAF:Generating output in PDF, MSWord, MSExcel and HTML Format


We often get business 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. 
To generate the output in PDF or other formats we need the following:
  • XML Data Definition, registered with Apps
  • Template, registered with Apps
  • XML Publisher APIs to process the template and generate the output in required format.
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.
Steps to Generate the Output in required format:
Step 1: Create OAWorkspace, Project, packages, VO and AM (We assume that you already are familiar with these)
Step 2: Import following Packages in AM and Controller:
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 should look like this:
public void getPrintDataXML()
{
 try
 {
   ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
   OAViewObject vo = (OAViewObject)am.findViewObject(“XXEGASRPrintPageVO1”);
   ((XMLNode) vo.writeXML(4, XMLInterface.XML_OPT_ALL_ROWS)).print(outputStream);
   System.out.println(outputStream.toString());
  }
 catch(Exception e)
 {
  throw new OAException (e.getMessage());
 }
}  
Statements highlighted(BOLD) 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.
1
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). 
Step 4: Design your template
Step 5: Register your Template and data Definition in Oracle Apps
2
Step 5: Register your Template and data Definition in Oracle Apps
3
Click on “Create Data Definition” button
4
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
5
 Click on “Create Template” button
6
Fill in all the mandatory columns and give a short code (It will be used by XML Publisher APIs to process the template) for your template and clink on “Apply” button
 Step 6: Generate output, using XML publisher APIs
    Step 6.1: Create a submit button to Generate the output say “Print”
     Step 6.2: Add following method to your AM Impl class
  public XMLNode getPrintDataXML()//XMLNode
  {
   OAViewObject vo = (OAViewObject)findViewObject(“EmpVO1”);
   ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
   XMLNode xmlNode = (XMLNode) vo.writeXML(4, XMLInterface.XML_OPT_ALL_ROWS);
   return xmlNode;
  }
     Step 6.3: Handle the event for “Print” button:
 /*
 * 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();
                           // Set the Output Report File Name and Content Type
                           String contentDisposition = “attachment;filename=PrintPage.pdf”;
                           response.setHeader(“Content-Disposition”,contentDisposition);
                           response.setContentType(“application/pdf”);
                           // Get the Data XML File as the XMLNode
                           XMLNode xmlNode = (XMLNode) am.invokeMethod(“getPrintDataXML”);
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
            ByteArrayOutputStream pdfFile = new ByteArrayOutputStream();
            //Generate the PDF Report.
            //Process Template
            TemplateHelper.processTemplate(
            ((OADBTransactionImpl)pageContext.getApplicationModule(webBean).getOADBTransaction()).getAppsContext(),
            “AK”,//APPLICATION SHORT NAME
            “Print Template TMP”, //TEMPLATE_SHORT_CODE
            ((OADBTransactionImpl)pageContext.getApplicationModule(webBean).getOADBTransaction()).getUserLocale().getLanguage(),
            ((OADBTransactionImpl)pageContext.getApplicationModule(webBean).getOADBTransaction()).getUserLocale().getCountry(),
            inputStream,
            TemplateHelper.OUTPUT_TYPE_PDF,
            null,
            pdfFile);
              //TemplateHelper.
            // Write the PDF Report to the HttpServletResponse object and flush.
            byte[] b = pdfFile.toByteArray();
            response.setContentLength(b.length);
            os.write(b, 0, b.length);
            os.flush();
            os.close();
    pdfFile.flush();
    pdfFile.close();
            }
            catch(Exception e)
            {
            response.setContentType(“text/html”);
            throw new OAException(e.getMessage(), OAException.ERROR);
            }
            pageContext.setDocumentRendered(true);
            } 
Now run your page and click on Print button:
7
In this manner we can generate the output in Excel, Word and HTML format also but we need to modify our code a bit, few statements in above code are in BOLD… 
The statements in BOLD need to be modified:
First file name in following statement :
String contentDisposition = “attachment;filename=PrintPage.pdf”;
In above statement PrintPage.pdf  can be  replaced with<userdefined_filename>.doc/.xls/.htm
Second is file MIME Type needs to be changed:
response.setContentType(“application/pdf”);
Here application/pdf can be replaced with valid MIME type for Excel/Word and HTML 
Third, TemplateHelper.OUTPUT_TYPE_PDF, in this OUTPUT_TYPE_PDF can be replaced by OUTPUT_TYPE_HTML/ OUTPUT_TYPE_EXCEL/ OUTPUT_TYPE_RTF.

COMMENTS

Name

Account Payables,1,Advance Table In OAF,1,AME,1,AOL Concepts,19,AP Holds,1,Apps Initialization,1,Blanket Purchase Orders,1,Blanket Releases,1,Careers,9,Common Errors and Solutions,2,Concurrent Programs,10,Contract Purchase Orders,1,Corporate Culture,3,Corporate Ladder,3,Customer Interface,3,Customization,1,De-Normalization,1,EAM,1,EBS Tutorials,10,Education,16,Emterprise Asset Management,1,English,1,Enterprise Asset Management,1,Entrepreneur,1,Error Fixes,1,Executables,2,Extension,1,fnd_user,1,FNDLOAD,1,Global Agreements,1,Guest Posts,7,Handy Scripts,63,Health Tips,1,Important Apps Queries,1,Infographic,3,Interview Preparation,62,Interview Q/A,68,Inventory Org ID,1,Iproc,4,Iprocurement,4,IT,3,jDeveloper,1,Job Search,1,Key Tables In Oracle Apps,5,Learning English,1,MDS,1,Metadata Tables,2,Multi Org Architecture,2,Normalization,1,O2C,1,OAF Interview,50,OAF Personalization,1,OAF Tutorials,52,Operating Unit,1,Oracle 10g,1,Oracle 11g,1,Oracle Access Manager,1,Oracle ADF,1,Oracle Alerts,2,Oracle AP,12,Oracle Apex,1,Oracle APIs,4,Oracle Application Object Library,19,Oracle Applications,10,Oracle Approvals Management,1,Oracle Apps,4,Oracle Apps DBA,2,Oracle Apps Interviews,36,Oracle Apps Tips,9,Oracle Apps Tutorials,98,Oracle AR,18,Oracle Assets,2,Oracle BAM,1,Oracle BI Publisher,1,Oracle BPEL,1,Oracle BPM,1,Oracle Dabase Structure,2,Oracle Database Architecture,2,Oracle Database Key Tables,3,Oracle EAM,2,Oracle EBS,5,Oracle Financials,2,Oracle Forms And Reports,17,Oracle Forms Interview Questions,6,Oracle Forms Tutorials,6,Oracle GL,4,Oracle Holds,1,Oracle HRMS,10,Oracle Human Resources,1,Oracle Inventory,4,Oracle Payables,1,Oracle Payroll,1,Oracle POTutorials,1,Oracle Purchasing,7,Oracle Reports Interview,9,Oracle Reports Tutorials,3,Oracle SOA,1,Oracle System Administrator,4,Oracle Workflow,4,Order Management,2,Organization ID,3,Organizations,3,Performance Tuning,2,Personalization,1,PL/SQL Block,1,PL/SQL Interview Questions,11,PL/SQL Scripts,44,PL/SQL Tutorials,53,Planned Purchase Orders,1,PO,1,PO Action History,1,PO_ACTION_HISTORY,1,POracle Purchasing,1,PR,1,Procedures And Functions,2,Profile Options,2,Purchase Orders,1,Purchase Requisition,2,Receipts,1,Request Groups,1,Responsibility,1,Shell Script,1,SOA Tutorials,4,Social Media,1,Software Industry,2,Software Tools,1,SQL And PL/SQL Interview,38,SQL Interview,52,SQL Scripts,38,SQL Tutorials,43,Standard Purchase Orders,1,Troubleshooting,1,Unexpected error,1,Unix/Linux Commands,3,User,1,Value Sets,1,Weblogic,1,XML Publisher,4,
ltr
item
Oracle Apps Guy: How To Integrate XML Publisher and OAF:Generating output in PDF, MSWord, MSExcel and HTML Format
How To Integrate XML Publisher and OAF:Generating output in PDF, MSWord, MSExcel and HTML Format
How To Integrate XML Publisher and OAF:Generating output in PDF, MSWord, MSExcel and HTML Format,Integrating XML Publisher and OAF:Generating output in PDF, MSWord, MSExcel and HTML Format
https://dineshnair.files.wordpress.com/2009/06/1.jpg?w=640
Oracle Apps Guy
https://www.oracleappsguy.com/2016/09/how-to-integrate-xml-publisher-and-OAF.html
https://www.oracleappsguy.com/
https://www.oracleappsguy.com/
https://www.oracleappsguy.com/2016/09/how-to-integrate-xml-publisher-and-OAF.html
true
4186973960539901882
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share. STEP 2: Click the link you shared to unlock Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy