No
hay necesidad de utilizar la herramienta Oracel Reports o un procedimiento almacenado por pl/sql para crear un informe XML en este caso. Aquí
vamos a crear una plantilla de datos e incluye nuestra consulta SQL en él. Nosotros
vamos a usar el ejecutable (XDODTEXE) para
satisfacer nuestras necesidades.
Paso a paso la
instrucción para crear un informe utilizando XML plantilla de datos.
1.
Preparar la consulta, en base a sus necesidades
de negocio.
En este caso haremos un reporte donde obtendremos las
facturas dentro de un rango de fechas
SELECT POV.VENDOR_NAME,
AIA.INVOICE_ID,
AIA.INVOICE_NUM,
AIA.INVOICE_AMOUNT,
AIA.INVOICE_DATE,
AIA.PAY_GROUP_LOOKUP_CODE
FROM AP_INVOICES_ALL
AIA, PO_VENDORS POV
WHERE AIA.VENDOR_ID = POV.VENDOR_ID
AND AIA.INVOICE_DATE BETWEEN
&P_START_DATE AND
&P_END_DATE
2.
Definir un archivo XML de plantilla de datos.
(Por favor, consulte la plantilla de datos de ejemplo se adjunta a
continuación)
Es muy importante para crear la plantilla de datos en el
formato correcto. Vamos a ir a través de las diferentes secciones de la misma.
<dataTemplate name>
|
Nombre
de su plantilla de datos, Ejemplo: NOBANK_DD
|
<parameters>
|
Agregar
parámetros independientes para cada entrada (variable de condiciones)
utilizado en la consulta.
|
<dataQuery>
|
Su
consulta creada anteriormente con variables de enlace adecuados.
|
<dataTrigger>
|
(opcional)El
trigger que se dispara en un evento (beforereport o afterreport )
|
<dataStructure>:
|
Es
la estructura de datos de salida XML.
|
Recreado el query debe tener el siguiente esquema
<?xml version="1.0"
encoding="WINDOWS-1252" ?>
<!-- $Header: XXTESTGHH.xml 115.0
2013/12/12 GHH $ -->
<!-- dbdrv: none -->
<dataTemplate name="XXTESTGHH"
description="Reporte de
Facturas" Version="1.0" >
<parameters>
<parameter name="P_START_DATE" dataType="date" />
<parameter name="P_END_DATE" dataType="date"/>
</parameters>
<dataQuery>
<sqlStatement name="Q1">
<![CDATA[
SELECT POV.VENDOR_NAME,
AIA.INVOICE_ID,
AIA.INVOICE_NUM,
AIA.INVOICE_AMOUNT,
AIA.INVOICE_DATE,
AIA.PAY_GROUP_LOOKUP_CODE
FROM AP_INVOICES_ALL
AIA, PO_VENDORS POV
WHERE AIA.VENDOR_ID = POV.VENDOR_ID
AND AIA.INVOICE_DATE
BETWEEN :P_START_DATE AND :P_END_DATE
]]>
</sqlStatement>
</dataQuery>
<dataTrigger name="beforeReport" source="XXPACKAGE.PROCEDURE"
/>
<dataStructure>
<group name="HEADER"
source="Q1">
<element name="PROVEEDOR" value="VENDOR_NAME"/>
<group name="DETAIL" source="Q1">
<element name="ID_FACTURA" value="INVOICE_ID"/>
<element name="NUM_FACTURA" value="INVOICE_NUM"/>
<element name="MONTO_FACTURA" value="INVOICE_AMOUNT"/>
<element name="GRUPO_SEDE" value="PAY_GROUP_LOOKUP_CODE"/>
</group>
</group>
</dataStructure>
<dataTrigger name="afterReport" source="XXPACKAGE.PROCEDURE"
/>
</dataTemplate>
Como no ejecutaremos algún proceso durante el reporte
sacaremos los datatriggers quedando el xml de la siguiente forma. Se recomienda
usar NOTEPAD++
NOTA: Los DataTriggers son muy importantes por si
necesitamos ejecutar un proceso en especial como crear o limpiar una tabla
entre otras cosas.
3.
Crear una
definición de datos (Ex. código corto: XXTESTGHH) en la aplicación de prueba.
Ir al Navegador: Administrador de XML Publisher à Página Inicial à
Definiciones de los datos à Crear definición de
datos
Una vez creado. Adjunte el archivo XML a plantilla de datos anteriormente creada a
ella como una planilla de datos.
Grabar y volver al Administrador
de sistemaàProgramaàDefinir
4.
Registrar el procedimiento concurrente en el EBS
(programa concurrente código corto: XXTESTGHH) de la siguiente manera
Igualmente para cada parámetro
Tener en cuenta El token(Señal) de parámetros del
programa concurrente debe coincidir con el nombre del parámetro de la plantilla
de datos.
5.
Agregar programa concurrente para el grupo de
solicitud.
6.
Ejecute el informe y guardar la salida como
sample.xml
7.
Crear una plantilla rtf (XXTESTGHH.rtf) en MS
Word basado en sample.xml (usando BI Publisher Escritorio)
8.
Definir una plantilla en la aplicación de
prueba.
Ir al Navegador: Administrador de XML Publisher à Página Inicial à
Plantillas à Crear Plantilla
·
Consulte la misma definición de datos creado
anteriormente (código corto: XXTESTGHH).
·
Coloque la plantilla rtf anteriormente creada
(XXTESTGHH.rtf) para esta plantilla.
·
Seleccione "Tipo de salida
predeterminado" según necesidad.
9.
Ejecute el programa Concurrente de nuevo para
obtener el resultado deseado.
Hola, En la plantilla ¿para hacer una suma de cada columna? tengo la siguiente sentencia:
ResponderEliminarPERO NO ME FUNCIONA, QUE ES LO QUE ME HACE FALTA?
" "
ResponderEliminarHola, En la plantilla ¿para hacer una suma de cada columna? tengo la siguiente sentencia:
ResponderEliminarPERO NO ME FUNCIONA, QUE ES LO QUE ME HACE FALTA?
Podrías indicarme el comando. Te mande un correo todo caso tengas problemas al subir el comando
EliminarConsulta, conocen la tabla donde se registran estos datos.
ResponderEliminarNecesito saber si hubo alguna actualización sobre el XML.
Estas son las tablas donde se almacena la información de la plantillas XDO_TEMPLATES_VL y xdo_lobs
EliminarHa sido de mucha ayuda, gracias!
ResponderEliminarGracias Gustavo. Recién comienzo con Oracle y ha sido genial leer tus artículos.
ResponderEliminar