Вы находитесь на странице: 1из 103

XMLP Reports

XML Publisher/ BI Publisher


Overview
Operational Reporting Requirements
• Rich Formatted Reports
• Partner Reports
• Financial Statements
• Government forms
• Marketing materials Cheques
• Contracts Invoices
• Checks, Labels
• XML
• EFT / EDI
Labels
• Multiple destinations Reports

Destinations
XML / EFT / EDI
Many Types of Report Outputs
Classic Reporting Tools Issue

Data logic Layout

Report file
Translation
Less flexibility
XML Publisher Reporting Paradigm
Separate data / layout / translation

Data Logic

Layout

XML Publisher
Report
Translation
output

More flexibility
Reduced maintenance
XML Publisher Overview
Translations PDF
Email
XLIFF Translations
RTF

HTML Printer

Excel
XML Publisher Fax
Application
Logic
XSL XML

Templates EDI Repository

External
•Word EFT

Data •Acrobat e-Commerce


•Excel

Data Source Layout Tools Output Delivery


Formats Manager
One Template – Multiple Outputs
XML Data

PDF

HTML

XML Publisher

EXCEL

RTF

RTF Templates are converted to XSL-FO, then formatted to


multiple outputs
Bursting using XML Publisher

EDI
Control HTML
Batch
Data File

PDF
XML
Publisher

PDF

XML

Templates

• Burst individual documents from a batch


• Dynamic generation based on data
• Deliver in desired layout format
• Deliver in desired output format
• Deliver down desired delivery channel
• Integrated into concurrent processing
XML Publisher Advantages
In simple words, for easy generation of reports.

The following are the advantages of XML Publisher:

a. Main advantage is Data separation and Presentation.


b. Rapid development of Report
c. Cost reduction
d. Control over Report Layout and High customization
e. Different presentation tools.
f. Output in the format of one’s choice.

Quality, Performance, Security and Language Support are the main features
of XML Publisher.
Benefits for all Stakeholders

End User
• Consistent user interface
• Report in multiple formats
• Language and locale options
• Multiple delivery channels

Business Consultant IT Consultant


• Focus on business requirements
• Faster deployment
• Uses familiar tools to prototype report
• Report matches prototype
(Excel, Word or Acrobat)
• Reduced maintenance
• Higher Productivity
RTF Template
Contents
 RTF Template Basics

 Defining Header, Footer and Page Number

 Creating Groups

 Use Of Tables

 Conditional Formatting

 Number and Date Formatting

 Adding Page Numbers

 Adding Page Breaks

 All About Totals

 Printing Summary in the Last Page


Contents
 Logos/Digital Signatures

 Sorting

 Extended Function Support in RTF Templates

 Dynamic Columns

 RTF Template – Parameters

 RTF Template – Variables

 RTF Template Registration

 Sample Demo of RDF report with RTF Template.


RTF Template Basics
 BI Publisher supports RTF templates which are most common and
provide a wide range of output formats. You can use the BI Publisher
Template Builder which is a add-in to Microsoft word to build an RTF.
 Open MS word  Add-Ins  Load XML data by selecting previously
saved output file TEST_CUSTOMER.xml
 When the data loaded successfully a message box appears click OK.
RTF Template Basics (Cont..)

 Follow the following screen shots to add the Table of Invoices to the RTF file.
RTF Template Basics (Cont..)

 In the Table wizard window, select the Table option and click Next.
RTF Template Basics (Cont..)

 For the Grouping field select the last item with list of Invoices from the drop down
list. Click Next.
RTF Template Basics (Cont..)

 Select the fields shown in the image below and move them into the right pane.
Click Next.
RTF Template Basics (Cont..)

 Select the fields shown in the image below and move them into the right pane.
Click Next.
RTF Template Basics (Cont..)

 In the Group by window, Click Next.


RTF Template Basics (Cont..)

 In the Sort by window, select Transaction Date from the drop-down list. Let the
sort be Ascending order, which is default. Click Finish.
RTF Template Basics (Cont..)

RTF Template Registration


Defining Header, Footer and Page Number
 To create a header or footer and page Number use your word processing
application’s header and footer insertion tools.
 If you have multiple headers and footers you can use <?start:body?> and <?end
body?> tags to distinguish the header and footer regions from the body of your
report.
Creating Groups
 Defining a group will notify XML Publisher that for each occurrence of an
element, you want the included fields displayed. At runtime, XML Publisher will
loop through the occurrences of the element and display the fields each time
 To define a group, follow the steps below.

1. Create a form-field
2. Write the text “<?for-each:GROUP_NAME?>” in the “help text“of the form-
field. This indicates the starting of the GROUP. Where GROUP_NAME is the
“Group Element Tag Name” in the XML output.
3. Create another form-field and write the text “<?end for-each?>” in the “help
text” of the form-field. This indicates the end of the GROUP.
4. Create as many form-fields, to display the records of the group, in between
the above 2 form-fields
Use Of Tables

Table -> Insert -> Enter Number of Setting Row height and Width
columns and number of rows
Use Of Tables (Cont..)

Setting Row height and Width Preventing the Row Breaking and Header to
repeat on each page
Conditional Formatting
 Conditional Formatting occurs when a formatting element appears only when a
certain condition is met. For eg. You can specify that if a report number reach
certain threshold, they will be displayed in red.
If Statements:
1. Insert the following syntax to designate the beginning of the conditional area.
<?if:condition?>
2. Insert the following syntax at the end of conditional area: <?end if?>

 Use the following RTF and XML file to test the conditional Formatting. In this
example the report will print the output only if the vendor ‘ABC Ltd’ and if the
entered amount is greater than 100 then the amount will be highlighted.
Number and Date Formatting
Adding Page Numbers
To add page numbers, define a field in the template where you want the page
number to appear and enter an initial value in that field as follows:
Decide the position on the template where you want the page number to
be displayed.
 Create a placeholder field called @pagenum@
 Enter a starting value for the page number in the Default field. If the XML data
includes a value for this field, the start value assigned in the template will be
overridden. If no start value is assigned, it will default to 1. The fig below shows
the Field Properties dialog for a page number field:
Adding Page Breaks
You can define a page break in your template to occur after a repeatable field. To insert a
page break after the occurrence of a specific field, add the following to the syntax in the
Short Description field of the Field Properties dialog box
page_break="yes"
For example:
<?rep_field="T1_G3", page_break="yes"?>
We want to report the salary information for each employee by department as shown in
the following template
Adding Page Breaks (Cont..)

Example:
To insert a page break after each department, insert the page break syntax in the
Short Description (or Tooltip field) for the SUMSALPERDEPTNO field as follows:
<?rep_field="T1_G3", page_break="yes"?> The Field Properties dialog box for the
field is shown in the following figure
Printing Summary in the Last Page
 In this example we will discuss about the summary or content that needs to be
displayed on the last page of the document only.
 Use the below attached RTF, XML and Output file.

 The first page will be normal as shown in the below image.


Printing Summary in the Last Page
(Cont..)

 In second page, define a section break and enter last page header and body.
Printing Summary in the Last Page
(Cont..)
XML Basics
Introduction
– What is XML?

– How can XML be used?

– What does XML look like?

– XML and HTML

– XML is free and extensible


What is XML?
•XML stands for Extensible Markup Language.

•XML developed by the World Wide Web Consortium (www.W3C.org)

•Created in 1996. The first specification was published in 1998 by the


W3C

•It is specifically designed for delivering information over the internet.

•XML like HTML is a markup language, but unlike HTML it doesn’t


have predefined elements.

•You create your own elements and you assign them any name you
like, hence the term extensible.

•HTML describes the presentation of the content, XML describes the


content.

•You can use XML to describe virtually any type of document.


How can XML be Used?
•XML is used to Exchange Data

•With XML, data can be exchanged between incompatible


systems

•With XML, financial information can be exchanged over the


Internet

•XML can be used to Share Data

•XML can be used to Store Data

•XML can make your Data more Useful

•XML can be used to Create new Languages


What does XML look like?
<Bibliography>
<Book>
<Title> Java </Title>
<Author> Manish
</Author>
Book <Year> 1995 </year>
Title Author year </Book>
Java Manish 1995


Pascal Ashish 1980 …
<Book>
Basic Ajay 1975
<Title> Oracle </Title>
Oracle Anil 1973 <Author> Anil
…. …. </Author>
<Year> 1973
</Year>
Relation </Book>
….
….
</ Bibliography>

XML document
XML and HTML …
•XML is not a replacement for HTML

•XML was designed to carry data

•XML and HTML were designed with different goals

• XML was designed to describe data and to focus on


what data is
• HTML was designed to display data and to focus on how
data looks.

•HTML is about displaying information, while XML is about describing information


XML and HTML
•HTML is for humans
• HTML describes web pages
• You don’t want to see error messages about the web pages
you visit
• Browsers ignore and/or correct as many HTML errors as
they can, so HTML is often sloppy

•XML is for computers


• XML describes data
• The rules are strict and errors are not allowed
– In this way, XML is like a programming language
• Current versions of most browsers can display XML
XML is free and extensible
•XML tags are not predefined

• You must "invent" your own tags


• The tags used to mark up HTML documents and the
structure of HTML documents are predefined
• The author of HTML documents can only use tags that are
defined in the HTML standard

•XML allows the author to define his own tags and his own document
structure, hence the term extensible.
The Anatomy of XML Document
<?xml version:”1.0”?>
XML Processing
Declaration instruction
<?xml-stylesheet type="text/xsl" href=“template.xsl"?>

Comments <!-- File name: Bibliography.xml -->


Attribute
<Bibliography>
<Book ISBN=“1-111-122”>
<Title> Java </Title>
<Author> Manish </Author>
<Year> 1995 </Year>
</Book>
Elements nested
Root or document .
element Within root element
.
<Book>
<Title> Oracle </Title>
<Author> Anil </Author>
<Year> 1973 </Year>
</Book>
</Bibliography>
Components of an XML Document
•Elements
• Each element has a beginning and ending tag
• <TAG_NAME>...</TAG_NAME>
• Elements can be empty (<TAG_NAME />)

•Attributes
• Describes an element; e.g. data type, data range, etc.
• Can only appear on beginning tag
– Example: <Book ISBN = “1-111-123”>

•Processing instructions
• Encoding specification (Unicode by default)
• Namespace declaration
• Schema declaration
XML declaration
•The XML declaration looks like this:

<?xml version="1.0" encoding="UTF-8“ standalone="yes"?>

– The XML declaration is not required by browsers, but is required


by most XML processors (so include it!)

– If present, the XML declaration must be first--not even white space


should precede it

– Note that the brackets are <? and ?>

– version="1.0" is required (I am not sure it is the only version so far)

– encoding can be "UTF-8" (ASCII) or "UTF-16" (Unicode), or


something else, or it can be omitted

– standalone tells whether there is a separate DTD


Processing Instructions
•PIs (Processing Instructions) may occur anywhere in the XML
document (but usually in the beginning)

•A PI is a command to the program processing the XML document to


handle it in a certain way

•XML documents are typically processed by more than one program

•Programs that do not recognize a given PI should just ignore it

•General format of a PI: <?target instructions?>

•Example: <?xml-stylesheet type="text/css“ href="mySheet.css"?>


XML Elements
•An XML element is everything from the element's start tag to the
element's end tag
•XML Elements are extensible and they have relationships
•XML Elements have simple naming rules

– Names can contain letters, numbers, and other characters

– Names must not start with a number or punctuation character

– Names must not start with the letters xml (or XML or Xml ..)

– Names cannot contain spaces


XML Attributes
•XML elements can have attributes
•Data can be stored in child elements or in attributes
•Should you avoid using attributes?

 Here are some of the problems using attributes:


• attributes cannot contain multiple values (child elements
can)

• attributes are not easily expandable (for future changes)

• attributes cannot describe structures (child elements can)

• attributes are more difficult to manipulate by program code

• attribute values are not easy to test against a Document


Type Definition (DTD) - which is used to define the legal
elements of an XML document
Distinction between sub-element and
attribute
•In the context of documents, attributes are part of markup, while sub-
element contents are part of the basic document contents

•In the context of data representation, the difference is unclear and


may be confusing

– Same information can be represented in two ways

• <Book … Publisher = “McGraw Hill” … </Book>

• <Book>

<Publisher> McGraw Hill </Publisher>

</Book>

•Suggestion: use attributes for identifiers of elements, and use sub-


elements for contents
XML Validation
•Well-Formed XML document:

– Is an XML document with the correct basic syntax

•Valid XML document:


– Must be well formed plus

– Conforms to a predefined DTD or XML Schema.


Rules For Well-Formed XML
•Must begin with the XML declaration

•Must have one unique root element

•All start tags must match end-tags

•XML tags are case sensitive

•All elements must be closed

•All elements must be properly nested

•All attribute values must be quoted

•XML entities must be used for special characters


Data Template
Why Data Template? Agenda
Architecture
1. Parameter
2. data query and data trigger
3. data structure and group

Implementation Steps

Practice Assignment 1
Practice Assignment 2
Practice Assignment 3

Recap Data Template & Architecture Cont…


1. Properties Declaration
2. Lexical References
- Practice Assignment 4
1. Data Triggers
2. Summary Column
- Practice Assignment 5
1. Formula Column + Place Holder
- Practice Assignment 6
Data Template
• The XML Publisher(XMLP / BI Publisher ) requires a Template layout
and Data XML to generate the report in PDF, EXCEL, RTF or HTML
format .
• The Data XML can be generated from Oracle Report, OA
Framework and Data Template.
• Using Data Template approach, you can develop BI Publisher
reports in Oracle EBS, without having to develop an RDF report.
• You can specify an SQL Statement in an XML file, and results of that
SQL Statement are published as XMLP Output.
Why Data Template?
Data Template allows:
• Multiple Queries/Joins
• Event Triggers (Currently pl/sql support but java support will be
available in future)
• Flex field Support
• Formula/ Summary columns/ Placeholder columns
• Data Structure
• Group filters
• Rich Java API layer - call a data template from your jsp or java app
• Pluggable Data Templates (build a core data template and then
allow a plug in DT to be applied over the top to get more data from
other sources – Future Support)
Architecture
Architecture
Architecture… Parameter
Architecture…Data Query & Data Trigger
Architecture… Data Structure and Group
Implementation Steps
• 1. Create Oracle Report / Data Template
• 2. Create RTF Template
• 3. Register Concurrent Program.
• 4. Define Parameters
• 5. Register Data Definition.
• 6 Register Layout Template.

• Assign Concurrent Program to Request Group.


Implementation Steps – Example
1.Create Oracle Report / Data Template
Implementation Steps – Example –
2 Create RTF Template Cont.
Implementation Steps – Example –
Cont.
• 3. Register Concurrent Program.
Implementation Steps – Example –
4. Define Parameters Cont.
Implementation Steps – Example –
Cont.
• 5. Register Data Definition.
Implementation Steps – Example Cont.
• 6. Assign Concurrent Program to Request Group
Implementation Steps – Example –
Cont.
Architecture Cont… Properties Declaration
Property Name Description
include_parameters Indicates whether to include parameters in the output.
Valid values are:
 True (default)
 False

include_null_Element Indicates whether to remove or keep the null elements in the output.
Valid values are:
 True (default)
 False

xml_tag_case Allows you to set the case for the output XML element names.
Valid values are:
 upper (default)
 lower
 as_are (The case will follow the definition in the dataStructure section.)

db_fetch_size Sets the number of rows fetched at a time through the jdbc connection. The default value is 500.
scalable_mode Sets the data engine to execute in scalable mode. This is required when processing a large volume of data.
Valid values:
 on
 off (default)

include_rowsettag Allows you to include or exclude the Rowset Tag from the output.
Valid values:
 true (default)
 false

debug_mode Turns debug mode on or off.


Valid values:
 on
 off (default)
Architecture Cont… Lexical References

Lexical Reference
Architecture Cont… Data Triggers
Example – Data Triggers
Before Report Trigger

After Report Trigger


Example – Data Triggers – Cont….
Architecture Cont… Summary Column
Attribute Description

Name The XML tag name to be used in xml data output

Source The name of the column that contains the data on which the
summary calculation is to be performed. The source remains
unchanged
Function The aggregation function to be performed. The type tells the
XDO Engine how to compute the summary column values.
Valid Values are :-
 SUM()
 AVG()
 COUNT()
 MAX()
 MIN()
Example – Summary Column

Summary Function
Architecture Cont… Formula Col, Place Holder
•Requirement – Report need column segment1 and description in Report Output.

•Technical Solution ( RDF )–


•Create one Place Holder Column.
•Create Report Formula Column which will return Segment1 information and
•Assign Description into Place Holder Column.

•Technical Solution ( Data Template )–


•Create one Database Package Variable.
•Create Database Function ( Place Holder ) which will return Package Variable to
calling Program.
•Create Formula Column – Database Function which will assign value to Place
Holder Package Variable.

•SQL Query will call Database Function ( Formula Column ) and Database Function (
Formula Column)
•To return both the value to Report.


Example – Formula Column + Place
Holder

Declare Package Variable Create Database Function

(Place Holder Variable ) (Formula Column Function)

Create Database Function

(Place Holder Function)


Example – Formula Column + Place
Holder Cont..
Define Database Function

Return Place Holder Information

Assign Value to Place Holder Variable


Example – Formula Col, Place Holder Cont..

Calling Formula Column and Place


Holder Function
Training Agenda

 RTF Template Basics

 Defining Header, Footer and Page Number

 Creating Groups

 Use Of Tables

 Conditional Formatting

 Number and Date Formatting

 Adding Page Numbers

 Adding Page Breaks

 All About Totals

 Printing Summary in the Last Page


Training Agenda

 Logos/Digital Signatures

 Sorting

 Extended Function Support in RTF Templates

 Dynamic Columns

 RTF Template – Parameters

 RTF Template – Variables

 RTF Template Registration


Sorting
•You can sort a group by any element within the group. Insert the
following syntax within the group tags:
•<?sort:element name?>
•For example, to sort the Payables Invoice Register (shown at the
beginning of this chapter) by Supplier (VENDOR_NAME), enter the
following after the <?for-each:G_VENDOR_NAME?> tag:
•<?sort:VENDOR_NAME?>
•To sort a group by multiple fields, just insert the sort syntax after the
primary sort field. To sort by Supplier and then by Invoice Number,
enter the following
•<?sort:VENDOR_NAME?> <?sort:INVOICE_NUM?>
Extended Function Support in RTF
Templates
SQL Statement or XSL Expression Usage
2+3 <?xdofx:2+3?>

2-3 <?xdofx:2-3?>

2*3 <?xdofx:2*3?>

2/3 <?xdofx:2/3?>

2**3 <?xdofx:2**3?>

3||2 <?xdofx:3||2?>

lpad('aaa',10,'.') <?xdofx:lpad('aaa',10,'.')?>

rpad('aaa',10,'.') <?xdofx:rpad('aaa',10,'.')?>

decode('xxx','bbb','ccc','xxx','ddd') <?xdofx:decode('xxx','bbb','ccc','xxx','ddd')?>

Instr('abcabcabc','a',2) <?xdofx:Instr('abcabcabc','a',2)?>

substr('abcdefg',2,3) <?xdofx:substr('abcdefg',2,3)?>

replace(name,'John','Jon') <?xdofx:replace(name,'John','Jon')?>

to_number('12345') <?xdofx:to_number('12345')?>
Extended Function Support in RTF Templates
(Cont..)
SQL Statement or XSL Expression Usage
to_char(12345) <?xdofx:to_char('12345')?>
to_date <?xdofx:to_date ( char [, fmt [, 'nlsparam']] )
sysdate() <?xdofx:sysdate()?>
Minimum <?xdoxslt:minimum(ELEMENT_NAME)?>
Maximum <?xdoxslt:minimum(ELEMENT_NAME)?>
Maximum <?xdoxslt:maximum(ELEMENT_NAME)?>
Chr <?xdofx:chr(n)?>
Ceil <?xdofx:ceil(n)?>
Floor <?xdofx:floor(n)?>
round <?xdofx:round ( number [, integer ] )?>
Lower <?xdofx:lower (char)?>
Upper <?xdofx:upper(char)?>
Length <?xdofx:length(char)?>
Greatest <?xdofx:greatest ( expr [, expr]... )?>
Least <?xdofx:least ( expr [, expr]... )?>
Extended Function Support in RTF
Templates (Cont..)
Dynamic Columns

•The ability to construct dynamic data columns is a very powerful feature of the RTF template.
Using this feature you can design a template that will correctly render a table when the number
of columns required by the data is variable.
•For example, you are designing a template to display columns of test scores within specific
ranges. However, you do not how many ranges will have data to report. You can define a dynamic
data column to split into the correct number of columns at runtime.

•Use the following tags to accommodate the dynamic formatting required to render the data
correctly:
• Dynamic Column Header
• <?split-column-header:group element name?>
• Use this tag to define which group to split for the column headers of a table.
Dynamic Columns (Cont..)

•Dynamic Column Header


•<?split-column-header:group element name?>
•Use this tag to define which group to split for the column headers of a table.
•Dynamic Column <?split-column-data:group element name?>
•Use this tag to define which group to split for the column data of a table.
•Dynamic Column Width
•<?split-column-width:name?> or
•<?split-column-width:@width?>

•Use one of these tags to define the width of the column when the width is described in the XML
data.
Defining Columns (Cont..)

•The width can be described in two ways:


•An XML element stores the value of the width. In this case, use the syntax <?split-column-
width:name?>, where name is the XML element tag name that contains the value for the width.
•If the element defined in the split-column-header tag, contains a width attribute, use the syntax
<?split-column-width:@width?> to use the value of that attribute.

•Dynamic Column Width's unit value (in points) <?split-column-width-unit:value?>


•Use this tag to define a multiplier for the column width. If your column widths are defined in
character cells, then you will need a multiplier value of ~6 to render the columns to the correct
width in points. If the multiplier is not defined, the widths of the columns are calculated as a
percentage of the total width of the table. This is illustrated in the following table:
Dynamic Columns (Cont..)

•Sample Files :
RTF Template - Parameters
• You can pass runtime parameter values into your template. These can then be referenced
throughout the template to support many functions. For example, you can filter data in the
template, use a value in a conditional formatting block, or pass property values (such as
security settings) into the final document.
• Using a parameter in a template

1. Declare the Parameter


• <?param@begin:parameter_name;parameter_value?>
• parameter_name is the name of the parameter
• parameter_value is the default value for the parameter (the parameter_value is optional)
• param@begin: is a required string to push the parameter declaration to the top of the
template at runtime so that it can be referred to globally in the template
RTF Template – Parameters (Cont..)

•2. Refer to the parameter in the template by prefixing the name with a "$" character. For
example, if you declare the parameter name to be "InvThresh", then reference the value using
"$InvThresh".
RTF Template – Parameters (Cont..)
RTF Template – Parameters (Cont..)
RTF Template – Parameters (Cont..)

Sample Files:
RTF Template – Variables

•Updateable variables differ from standard XSL variables <xsl:variable> in that they are
updateable during the template application to the XML data. This allows you to create many new
features in your templates that require updateable variables.
•The variables use a "set and get" approach for assigning, updating, and retrieving values.

•Use the following syntax to declare/set a variable value:


•<?xdoxslt:set_variable($_XDOCTX, 'variable name', value)?>

•Use the following syntax to retrieve a variable value:


•<?xdoxslt:get_variable($_XDOCTX, 'variable name')?>
RTF Template – Calculations

•You can use this method to perform calculations. For example:


•<?xdoxslt:set_variable($_XDOCTX, 'x', xdoxslt:get_variable($_XDOCTX, 'x' + 1)?>

•This sets the value of variable 'x' to its original value plus 1, much like
•using "x = x + 1".

•The $_XDOCTX specifies the global document context for the variables. In a multi-threaded
environment there may be many transformations occurring at the same time, therefore the
variable must be assigned to a single transformation.
RTF Template – Variables &
Calculations - Example

Declare Variable
Variable Name - ORIG_AMT
RTF Template – Variables &
Calculations - Example

Display Variable
RTF Template – Variables &
Calculations - Example

•Sample Files
Bursting using XML Publisher

EDI
Control HTML
Batch
Data File

PDF
XML
Publisher

PDF

XML

Templates

• Burst individual documents from a batch


• Dynamic generation based on data
• Deliver in desired layout format
• Deliver in desired output format
• Deliver down desired delivery channel
• Integrated into concurrent processing
XML Publisher - Bursting
• Implementation of Bursting
– Batch program: Example Print PO Report as XML
output
– Bursting JCP: XML Publisher Report Bursting Program,
call this from After Report Trigger
– Template: Template for the formatting of the burst
data
– Control File: This is the bursting control file telling the
bursting engine how to burst. The entire logic for
bursting is written in this control file. Bursting Control
File is attached to the Data Definition of the
concurrent program.
XML Publisher - Bursting
• Sample Bursting Control File

<?xml version="1.0" encoding="UTF-8"?>


<xapi:requestset xmlns:xapi="http://xmlns.oracle.com/oxp/xapi">
<xapi:request select="/APXPBSRA/LIST_G_SEL_CHECKS/G_SEL_CHECKS">
<xapi:delivery>
<xapi:email server="smtp.yourdomain.com" port="25" from="youremail@yourdomain.com" reply-to
="">
<xapi:message id="${C_CHECK_ID}" to="${C_REMITTANCE_EMAIL}" cc="yourcc@yourdomain.com"
attachment="true"
subject="Virtuate - Remittance Advice for Payment ${C_CHECK_NUMBER}"> Please find attached
Remittance Advice for payment ${C_CHECK_NUMBER}. Regards, The Payables Team Virtuate Limited
</xapi:message>
</xapi:email>
</xapi:delivery>
<xapi:document output="Remit_Advice_${C_CHECK_NUMBER}" output-type="pdf"
delivery="${C_CHECK_ID}">
<xapi:template type="rtf" location="xdo://SQLAP.XXV8_APXPBSRA.en.US/?getSource=true"
filter=""></xapi:template>
</xapi:document>
</xapi:request>
</xapi:requestset>

Вам также может понравиться