An Insider to XML Publisher

Oracle XML Publisher has gained a lot of popularity among developers and also among the businesses as its very easy to create a report using XML Publisher and even more easy to generate reports in various formats like PDF, EXCEL, RTF etc.

In this case it became very complex and cumbersome even if the report needed minor changes. yes custom. XML Publisher treats all the three aspects of report generation i. This means less time and money is being spent in maintenance of these reports. the data definition. All these and many more hiccups made Oracle to come up with XML Publisher. EXCEL (HTML) and even PLAIN TEXT for transmission using EFT and EDI. The working of the XML Publisher can be understood with the help of the following diagram: Business Logic: In this part or aspect the required data (as per the business logic) is extracted/fetched from the database and is converted in to XML Strings. but at run time all the three aspects are brought together and the final report is generated. the report layout and the translation in to a single entity.e. Translation: The translation handler will manage the translation that is required at runtime. These layouts or template can be very easily created using familiar word processing software like Microsoft Word.oracleappsframework. Also if the same report is required in another language then one more report needs to be generated in other language. template and then generate the report in any of the desired form such as PDF. www. the report layout and the translation separately at design time. So if the report needs changes at the report layout level then Data Definition and the Translation part are not supposed to be touched and only the Report Design can be changed alone. the data definition.oracleappsframework.com/blog .g. EXCEL. Oracle created XML Publisher is as a template based tool for publishing reports and much more along with Oracle Ebusiness Suite. XML Publisher is powerful enough to populate the data fetched by a PL SQL package into a custom. Microsoft Excel etc. RTF. With XML Publisher things were very different in a positive way.e. Difference between Classical Reporting Tools and XML Publisher: The classical reporting tool had very different approach from that of XML Publisher e. in Report 6i used to combine all the aspects of report generation i. HTML.A short guide to XML Publisher XML Publisher Oracle XML Publisher has gained a lot of popularity among developers and also among the businesses as its very easy to create a report using XML Publisher and even more easy to generate reports in various formats like PDF.com 2 www. Report Layout: In this aspect or section of the XML Publisher the layout or the template of the final report to be generated is stored and Managed in the Template Manager. RTF etc.

After the installation is completed Open MS Word.oracleappsframework. Oracle XML Publisher Release 5. Steps to install XML Publisher: 1. you will be able to see one more menu item named “Template Builder” as shown in the image below.exe.com/blog . MS Office 2000 or higher to create templates. 2. Go to XML Publisher Desktop and double click the setup. 3. this will start the Install Shield Wizard which will guide you throughout the process 2. This menu will enable you embed the XML data into your template. Template builder (Usually gets installed with Oracle XML Publisher 5.A short guide to XML Publisher How to generate reports using XML Publisher Pre-Requisites: 1. set many preferences and preview the output of the report.5 or higher. www.com 3 www.5 itself).oracleappsframework.

full_name prsn_name . 6.pg.name grade FROM per_all_people_f papf. Create a PL SQL Package or Procedure that will fetch the required data as per the business requirement and then place the data to be displayed in XML tags into an output file.person_id prsn_id .com 4 www.grade_id AND paaf.oracleappsframework.papf. Create an AOL concurrent program that will execute the PL SQL stored procedure created in step 1. Republish the Report. per_all_assignments_f paaf. Run the AOL concurrent program so that it in turn executes the PL SQL stored procedure to generate the data for the report. Below is a simple example of such a PL SQL package. per_grades pg WHERE papf. 2. Upload the finalized template or layout of the report to Oracle Application using XML Publisher Administrator responsibility.assignment_type='E' AND paaf.primary_flag='Y' www.A short guide to XML Publisher Steps to generate a report using XML Publisher: 1. /*Demo Package Specification*/ CREATE OR REPLACE PACKAGE Demo_XDO_pkg AS PROCEDURE Demo_RTF(o_errbuf OUT VARCHAR2.person_id AND paaf.oracleappsframework. Now let’s elaborate each and every point mentioned above:  We will create a PL SQL package that will fetch the data from the data base tables and then populate the same data in to XML tags. 5.com/blog .o_retcode END Demo_XDO_pkg.grade_id=pg.o_retcode AS /*Cursor to fetch Employee Records*/ OUT VARCHAR2 ) CURSOR csr_employee IS SELECT papf.person_id=paaf. CREATE OR REPLACE PACKAGE BODY Demo_XDO_pkg as PROCEDURE Demo_RTF( o_errbuf OUT VARCHAR2. /*Demo Package Definition*/ OUT VARCHAR2 ). 4. Create a template or the desired layout of the report to be generated using Template Builder.employee_number emp_no . 3.

PUT_LINE(FND_FILE.date_end.OUTPUT.OUTPUT.effective_end_date.person_id child_id .effective_start_date AND papf.'<GRADE>' || v_employee.OUTPUT.PUT_LINE(FND_FILE.'<EMP_NO>' || v_employee.contact_type='C' AND TRUNC(SYSDATE) BETWEEN NVL(pcr.PUT_LINE(FND_FILE.sysdate) AND NVL(pcr.OUTPUT.OUTPUT.emp_no || '</EMP_NO>').'<G_EMP_NAME>').date_to.person_id=p_person_id AND pcr.papf. BEGIN /*First line of XML data should be ‘<?xml version="1.0"?>').OUTPUT.prsn_name || '</EMP_NAME>').PUT_LINE(FND_FILE.date_from.effective_start_date AND paaf.effective_start_date AND papf.effective_end_date TRUNC(SYSDATE) BETWEEN NVL(pg. FND_FILE.business_group_id=5603 ROWNUM<2.A short guide to XML Publisher AND AND AND AND AND TRUNC(SYSDATE) BETWEEN papf. FND_FILE.sysdate) AND TRUNC(SYSDATE) BETWEEN papf.sysdate) papf.'<EMP_NAME>' || v_employee. /*Embed data between XML tags for ex:.<EMP_NAME>Abeesh</EMP_NAME>*/ FND_FILE. FOR v_children IN csr_children(v_employee. FND_FILE.full_name child_name .contact_person_id=papf.'<PERDUMMY1>').oracleappsframework.papf.0"?>’*/ FND_FILE. /*Cursor to fetch employee’s dependent (Children) records*/ CURSOR csr_children(p_person_id NUMBER) IS SELECT papf.PUT_LINE(FND_FILE.sysdate) AND NVL(pg.com 5 www. per_all_people_f papf WHERE pcr. FOR v_employee IN csr_employee LOOP /*for each record create a group tag <G_EMP_NAME> at the start*/ FND_FILE.grade ||'</GRADE>').prsn_id) LOOP www.effective_end_date TRUNC(SYSDATE) BETWEEN paaf.date_of_birth dob FROM per_contact_relationships pcr.PUT_LINE(FND_FILE.com/blog .oracleappsframework.person_id AND pcr.'<?xml version="1.date_start.

PUT_LINE(FND_FILE. /*finally Close the starting Report tag*/ FND_FILE.'<CHILD_NAME>' || v_children. Here’s the navigation for creating an Executable Application Developer Responsibility -> Concurrent ->Executable www. END Demo_XDO_pkg.OUTPUT. FND_FILE. We will name the executable as DEMOXDO2 that will call above mentioned procedure Demo_XDO_pkg. FND_FILE. END Demo_RTF. FND_FILE.'</G_EMP_NAME>').'<CHILD_CLASS> I</CHILD_CLASS>').OUTPUT.PUT_LINE(FND_FILE.PUT_LINE(FND_FILE.OUTPUT.PUT_LINE(FND_FILE.oracleappsframework.oracleappsframework.'</G_NO_CHILD>').'<G_NO_CHILD>').OUTPUT. END LOOP.OUTPUT.OUTPUT.'<CHILD_FEES>100 </CHILD_FEES>').OUTPUT. FND_FILE.OUTPUT. FND_FILE. so that the PL SQL stored procedure can be executed.OUTPUT. /*Close the group tag </G_EMP_NAME> at the end of employee record*/ FND_FILE.com/blog .PUT_LINE(FND_FILE.  Now we will have to create an executable and attach the newly created executable to a concurrent program.'</PERDUMMY1>').Demo_RTF. /*Close the group tag </G_NO_CHILD> at the end of child record*/ FND_FILE.PUT_LINE(FND_FILE.'<CHILD_SCHOOL>BHAVANS </CHILD_SCHOOL>').dob || '</CHILD_DOB>').PUT_LINE(FND_FILE.'<CHILD_DOB>' || v_children.PUT_LINE(FND_FILE.child_name || '</CHILD_NAME>').PUT_LINE(FND_FILE.A short guide to XML Publisher /*for each child record create a group tag <G_NO_CHILD> at the start*/ FND_FILE. END LOOP.com 6 www.

www. This step can be understood from the screen shot below.oracleappsframework.A short guide to XML Publisher Also we need to create a new concurrent Program say (“New Demo XDO Reports”) that will call above mentioned executable DEMOXDO2 To create new concurrent program just go to Application Developer Responsibility -> Concurrent ->Program Attach the newly created Concurrent Program to a specific Request Group from where the Concurrent Program is supposed to run.oracleappsframework.com/blog .com 7 www.

com 8 www.oracleappsframework.com/blog . www. As you can see that the block mentioning the Layout is blank.oracleappsframework. use the Submit Request form to run the concurrent request and cross check the XML output that is generated.A short guide to XML Publisher From the appropriate responsibility. this is because we haven’t yet attached any layout or template to the report being generated.

xml”). A screen shot of a demo template is shown below for reference. www. Let’s have a look at how each step is supposed to be performed. 1.oracleappsframework.A short guide to XML Publisher Once you run the concurrent program. Designing the template as specified in the business requirement. Please save this XML file on your desktop computer with some name say (“Demo. 2. 1. but make sure that you remove all the dashes “-“ that appear in the file.com/blog . Designing the template as specified in the business requirement. Marking up the XML template layout with the XML tags. For this step we need to use the Microsoft MS Word application to design a template and then save the template a “RTF” file on your desktop computer. Creation of a template in itself is a two step process.oracleappsframework.com 9 www.  For the next step we will create a template which will act as the layout for the final report that will be generated soon. click on the view output button so as to see the XML file along with the data that has been generated as a result of the concurrent program run.

com 10 www. The next step is to add the XML tags to the report template layout. Marking up the XML template layout with the XML tags.oracleappsframework.com/blog . we need to insert the XML tags into the template.xml” file that we have saved previously to our desktop computer? We just need to select that file. Just select the appropriate tag and click on the “Insert” button. www. locate the place where the data will be inserted at runtime. Once done with the creation of the template. We will be asked to select the XML data. these tags will be replaced by data at runtime. This will open up a popup containing all the XML tags that we got in our “Demo.oracleappsframework. The screen shot below displays the insertion of “Emp_Name” tag into the report layout. In order to achieve this go to the “Template Builder” menu and the select Data and then Load XML Data.xml” file.A short guide to XML Publisher 2. this is a very easy step and fun to do. In the report layout. remember the “Demo. highlight that place and then from the “Template Builder” menu select the “Insert” menu and then select the “Field” item.

and then “Table/Form” will look as shown in the screen shot below. in our case the parent node is “G_NO_CHILD”.com/blog . To insert the repeating tags into the XML report layout. Suppose we want to add the summation of a column also at some place in the report layout.com 11 www. The popup window opened by selecting “Insert”. www.oracleappsframework.A short guide to XML Publisher Note: 1. we have to select the “Insert” and then “Table/Form” from the “Template Builder” menu.oracleappsframework. This will become clear by the following screen shot. This will open a different popup window which will ask to select the parent node. then we need to select the “Insert” and then “Field” and then select the tag whose summation is supposed to be displayed.

com 12 www.oracleappsframework. www. then how come we can preview the report? Remember the “Demo.A short guide to XML Publisher Once all the above mentioned steps are over.com/blog .xml” file that we have saved on our desktop? The data from the same file will be used to preview the report. our report template will look as the one shown in the below screen shot.oracleappsframework. XML Publisher gives you the freedom to preview the report before running it. To preview the report select “Preview” from the menu under “Template Builder” menu. But you must be thinking that we don’t have data.

as this allows the concurrent manager to get a list of templates that are available for that concurrent program at runtime.xml” that we have save to our desktop. In the XML Schema field browse to the “Demo.com 13 www. Using this responsibility we can add a template to the report. Give a name to the data definition. The most important point to remember here is that. Here’s the screen shot of the Data Definition creation page with the data definition code highlighted.oracleappsframework. the data definition code (shown highlighted) should be the same as that of the concurrent program short name. www.oracleappsframework. Step. To achieve this we should have “XML Publisher Administrator” responsibility to the user. The process of adding a template to the report is again broken into steps for easy understanding and remembrance.A short guide to XML Publisher  Add the report layout template in to Oracle Application.com/blog .1 Initially we have to register our concurrent request as a data definition. To achieve this go to XML Publisher Administrator -> Data Definitions -> Create Data Definition.

2 now we will register our template with the use of template manager.com 14 www.oracleappsframework. While registering the template we will be asked to assign an already existing Data Definition to it. go to the XML Publisher Administrator and then templates and Create Template. Then upload the RTF template layout and select the language and territory. www.com/blog .oracleappsframework.A short guide to XML Publisher Step. hence we will assign the data definition that we have created in the previous step to our template. Doing this is simple.

com/blog . template language and also the output format for the report to be generated.oracleappsframework. we have attached the template to the concurrent program we can see that the Layout Block displays the name of the template that has been attached to the report. To complete this step.A short guide to XML Publisher  This will be the final step in the generation of the report. run the concurrent program from the appropriate responsibility.oracleappsframework. Also. from this window we can activate the XML Publisher’s preview feature. www. In the layout section of the submit request window we can select the template (if there are more than one template).com 15 www. Since.

There are many other options also available on the Concurrent Manager menu. we can even republish and view the report or simply we can reprint the report.com 16 www.oracleappsframework. We can republish and print the report. www.com/blog .oracleappsframework.A short guide to XML Publisher Upon the completion of the concurrent program run click on the view output run button to view the final report that has been generated. Below screen shot shows the report generated in the PDF format.

Thanks for reading www.com www.oracleappsframework. The data. Republish and View – this option allows us to select a new template and output format for the completed request data for viewing only.oracleappsframework.com 17 www.oracleappsframework. The formatting is performed without creating a new concurrent request.oracleappsframework.com/blog . and output selections are sent to XML Publisher to republish the request data. layout.A short guide to XML Publisher The difference between these actions is given below. Reprint – sends the published request to the selected printer Hope that this guide helps you.    Republish and Print – This action allows us to select a new template and output format for the completed concurrent request data.com/blog www.

Sign up to vote on this title
UsefulNot useful