Está en la página 1de 15

Uso de CrystalReports 10 en Java

USO DE CRYSTALREPORTS 10 EN JAVA


Versión 1.0

Agosto 2007

Área de Integración y Arquitectura de Aplicaciones Página: 1


Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Uso de CrystalReports 10 en Java

INDICE

1 INTRODUCCION.................................................................................................... 3
2 CREACIÓN DEL INFORME .................................................................................. 4
3 LIBRERÍA CrystalReports2_0................................................................................. 7
4 CrystalReportAccion ................................................................................................ 7
4.1 Ejemplo genérico.............................................................................................. 8
4.2 EJEMPLOS CONCRETOS.............................................................................. 9
4.2.1 EjemploCR_PDF ...................................................................................... 9
4.2.2 EjemploCR_HTML ................................................................................ 10
4.2.3 EjemploCR_RTF .................................................................................... 11
4.2.4 EjemploCR_Parametros ......................................................................... 11
5 LIBRERÍA CrystalReportsWS............................................................................... 12
6 CrystalReportWSAccion ........................................................................................ 12
6.1 Ejemplo genérico............................................................................................ 14

Área de Integración y Arquitectura de Aplicaciones Página: 2


Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Uso de CrystalReports 10 en Java

1 INTRODUCCION

Desde java podemos acceder a los reports creados en CrystalReports 10. Tenemos dos
opciones:

• Invocar directamente el informe desde java. De esta forma podemos obtener


informes en los siguientes formatos:
1. PDF
2. RTF
3. HTML

En este caso el informe se va a encontrar dentro de la web de java y se hará uso de la


librería CrystalReports2_0.

• Llamar desde java a un Webservice de Delphi que genera el informe. De esta


forma podemos obtener informes en los siguientes formatos:
1. PDF
2. DOC (Word)
3. XLS (Excel)

En este caso el informe se va a encontrar dentro de la web del Webservice de Delphi y


se hará uso de la librería CrystalReportsWS.

En ambos casos es necesario que se incluya el fichero redireccion.jsp en el directorio WEB-


INF/jsp de la aplicación.

Desde una aplicación solo se debería utilizar una única forma de generar los informes o
mediante la llamada al webservice o mediante la invocación directa desde java.

Área de Integración y Arquitectura de Aplicaciones Página: 3


Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Uso de CrystalReports 10 en Java

2 CREACIÓN DEL INFORME

Cuando se crea en CrystalReports hay que conectarse a la base de datos de Oracle mediante
JDBC si se va a invocar el informe directamente desde java.

Crystal Reports no viene con un driver JDBC para desarrollar reports con JDBC.
Hay que descargar el fichero InstallNewDriversv10.zip descomprimirlo y ejecutar la intalación y
cuando se complete ya se puede hacer un report contra el driver JDBC.

Además es necesario editar un fichero de configuración en el directorio C:\Archivos de


programa\Archivos comunes\Crystal Decisions\2.5\bin, El fichero se llama
CRDB_JavaServer.ini

[Common]
PATH = C:\Producto\JavaSoft\j2sdk1.4.2_04\jre\bin
CLASSPATH = "C:\Archivos de programa\Archivos comunes\Crystal
Decisions\2.5\bin\CRDBJAVAServer.jar;C:\Archivos de programa\Archivos comunes\Crystal
Decisions\2.5\java\lib\jdbc\ojdbc14.jar";${CLASSPATH}

IORFileLocation = d:/temporal
JavaServerTimeout = 1800
JVMMaxHeap = 64000000
JVMMinHeap = 32000000

[CRDB_JDBC]
CacheRowSetSize = 100
JDBCURL = jdbc:oracle:thin:@icm21:1521:denivel2
JNDIURL =
JDBCUserName =
JDBCDriverName = oracle.jdbc.driver.OracleDriver
JNDIUserName =
JNDIConnectionFactory =
JNDIInitContext = java:/comp.env.jdbc
GenericJDBCDriverBehavior = Oracle

[CRDB_XML]
PREREADNBYTE = 5000
CacheRowSetSize = 100
XMLLOCALURL =
SCHEMALOCALURL =
XMLHTTPURL =
SCHEMAHTTPURL =
USETEMPFile = TRUE

En la ruta del CLASSPATH tenemos que comprobar si se corresponde con nuestra ruta, en
particular con el fichero ojdbc14.jar que debemos incluir en nuestra instalación. Este fichero
contiene los drivers de jdbc para oracle.

CLASSPATH = "C:/Archivos de programa/Archivos comunes/Crystal


Decisions/2.5/bin/CRDBJAVAServer.jar; C:/Archivos de programa/Archivos
comunes/Crystal Decisions/2.5/java/lib/jdbc/ojdbc14.jar";${CLASSPATH}

Por otra parte hay que indicar cual es la ruta del jdk de java que se debe corresponder con el
jdk instalado en nuestro pc.

PATH = C:\Producto\JavaSoft\j2sdk1.4.2_04\jre\bin

Área de Integración y Arquitectura de Aplicaciones Página: 4


Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Uso de CrystalReports 10 en Java

Una vez configurado este fichero cuando vamos a crear un informe al elegir la fuente de
los datos nos aparece la siguiente ventana:

Cuando se vaya a usar la librería CrystalReports2_0 debemos elegir JDBC (JNDI) y al pulsar el
signo ‘+’ nos mostrará una ventana con la información de la conexión JDBC.

Área de Integración y Arquitectura de Aplicaciones Página: 5


Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Uso de CrystalReports 10 en Java

En esta ventana podemos modificar el parámetro URL de conexión y actualizarlo con nuestra
base de datos. Al pulsar el botón de siguiente nos solicitará que le indiquemos el usuario y la
password.

Una vez incluidos ya nos aparece la lista de tablas disponibles para realizar el informe.

En el caso en el que se utilice la librería CrystalReportsWS en la ventana asistente de base de


datos debemos elegir Servidor de Oracle y al pulsar el signo ‘+’ nos mostrará una ventana con
la información de la conexión.

Área de Integración y Arquitectura de Aplicaciones Página: 6


Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Uso de CrystalReports 10 en Java

En esta ventana habrá que indicar el nombre del servicio, el usuario y la password.

Una vez incluidos ya nos aparece la lista de tablas disponibles para realizar el informe.

3 LIBRERÍA CrystalReports2_0

Esta librería contiene las siguientes clases públicas para tratamiento de reports solamente
desde Java:

• CrystalReportAccion: A partir de los atributos del request ejecuta el report


correspondiente.

• CrystalReportBean: Bean con información del report y métodos para exportarlo a los
distintos formatos soportados: PDF y RTF .

Con la clase acción anterior se podría ejecutar un informe directamente o bien podríamos
heredar de ella y modificarla para lo que no se pudiera realizar directamente.

4 CrystalReportAccion

Se ha creado una clase llamada CrystalReportAccion en el paquete crystalreports.acciones


que a partir de unos atributos del request ejecuta el report correspondiente.

Los parámetros del request son:

• REPORT: Nombre del report.

Área de Integración y Arquitectura de Aplicaciones Página: 7


Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Uso de CrystalReports 10 en Java

• PARAMETROS: Parámetros del report en forma de campo=valor y si vienen varios,


cada uno en una línea.
Si lo que se quiere pasar es una fecha se tendrá que poner en el formato
campo=date(aaaa,mm,dd).

• TIPO_SALIDA: Tipo de ejecución del report que puede ser:


1. PDF
2. RTF
3. HTML

Los reports se deben encontrar en un directorio dentro del web de nuestra aplicación por
debajo del directorio WEB_INF.

Este directorio se especifica en el fichero de configuración de la aplicación en la propiedad


reports.directorio = WEB_INF/reports.

Por otra parte para que el Controlador encuentre la clase CrystalReportAccion hay que ponerla
en el fichero de configuración de la siguiente forma:

CrystalReportAccion = crystalreports.acciones

Si en la aplicación se está haciendo uso del datasource de Oracle para acceder a la base de
datos hay que incluir en el fichero de configuración los parámetros bd.usuario y bd.clave con
sus valores correspondientes dado que serán requeridos por la librería CrystalReports2_0
cuando ésta vaya a generar los informes.

Se tendrá que incluir el fichero redireccion.jsp en el directorio WEB-INF/jsp de la aplicación.

4.1 Ejemplo genérico

A continuación se muestra un ejemplo de llamada a la Accion CrystalReportAccion desde una


página jsp:

<jsp:useBean id="report" scope="request" class="java.lang.String" />

<HTML>
<HEAD>
<TITLE>Genera Report</TITLE>
<SCRIPT>
function enviarFormulario(destino){
document.formulario.action = destino;
document.formulario.submit();
}
</SCRIPT>

<!--mstheme-->
<link rel="stylesheet" type="text/css"
href="../../_themes/portaldesarrollo/port1110.css">
<meta name="Microsoft Theme" content="portaldesarrollo 1110, default">
</HEAD>
<BODY>
<p style="text-align: center">
<font size="4" color="#800000">Generación de report genérica</font>
</p>
<form name="formulario" method="POST" action="">
<table border="4" cellspacing="4" width="100%" id="AutoNumber1" cellpadding="4”>
<tr>
<td width="100%" bgcolor="#FFCC99">
<b>Nombre del report:</b>
<blockquote>

Área de Integración y Arquitectura de Aplicaciones Página: 8


Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Uso de CrystalReports 10 en Java

<p>&nbsp;
<input type="text" name="REPORT" value="<%=report%>" size="47">
</p>
</blockquote>
</td>
</tr>
<tr>
<td width="100%" bgcolor="#FFFFCC">
<b>Parámetros del informe: </b>
<p>
Si el informe tiene parámetros se deben introducir de la
siguiente forma:
</p>
<blockquote>
<p>nombre=valor <i>Ejemplo: (codigo=6)</i></p>
</blockquote>
<p>
En el caso de tener varios parámetros se pondrá cada
uno en una línea
</p>
<blockquote>
<p>
<textarea rows="5" name="PARAMETROS" cols="53"></textarea>
</p>
</blockquote>
</td>
</tr>
<tr>
<td width="100%" bgcolor="#FFCC99">
<b>Tipo de salida:</b>
<blockquote>
<p>
<select size="1" name="TIPO_SALIDA">
<option selected value="PDF">PDF</option>
<option value="RTF">RTF</option>
<option value="HTML">HTML</option>
</select>
</blockquote>
</p>
</td>
</tr>
<tr>
<td width="100%">
<input type="submit" value="Ejecutar" name="generar"
onclick=enviarFormulario("CrystalReportAccion.icm")>
&nbsp;&nbsp;
<input type="reset" value="Restablecer" name="B2">
</td>
</tr>
</table>
</form>
</BODY>
</HTML>

4.2 EJEMPLOS CONCRETOS

A continuación se muestran unos ejemplos concretos en los que se conoce a priori el tipo de
salida, el nombre del fichero o los parámetros.

4.2.1 EjemploCR_PDF

En este caso se genera un fichero PDF para el report aplicación_1.rpt

Área de Integración y Arquitectura de Aplicaciones Página: 9


Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Uso de CrystalReports 10 en Java

package report.acciones;

import sistemas.framework.excepciones.AccionException;
import crystalreports.acciones.CrystalReportAccion;
import crystalreports.beans.CrystalReportBean;

public class EjemploCR_PDF extends CrystalReportAccion {


public EjemploCR_PDF () {
}

/**
* Este metodo nos permite modificar los valores que CrystalReportAccion asigna
* automaticamente al CrystalReportBean. O incluso obviar esos valores y establecer
* los valores por nuestra cuenta dependiendo de otras condiciones.
* @see crystalreports.acciones.CrystalReportAccion
*/
protected CrystalReportBean leerDatosRequest(CrystalReportBean crBean)
throws AccionException {
//Permitimos que establezca los valores iniciales a partir de los valores del request.
if (crBean == null){
crBean =new CrystalReportBean();
}

//Modificar crBean si fuera necesario.


String directorio = null;
try {
directorio = sistemas.util.Config.get("reports.directorio");
} catch (Exception ex1) {
throw new AccionException(
"Se debe especificar el parámetro reports.directorio" +
" en el fichero de configuración");
}
String report = "/"+ directorio + "/aplicacion_1.rpt";

crBean.setReport(report);
crBean.setTipo_salida(CrystalReportBean.SALIDA_PDF);

return crBean;
}
}

4.2.2 EjemploCR_HTML

En este caso se genera una página HTML para el report aplicación_1.rpt

package report.acciones;

import sistemas.framework.excepciones.AccionException;
import crystalreports.acciones.CrystalReportAccion;
import crystalreports.beans.CrystalReportBean;

public class EjemploCR_HTML extends CrystalReportAccion {

protected CrystalReportBean leerDatosRequest(CrystalReportBean arg0)


throws AccionException {
CrystalReportBean crBean = new CrystalReportBean();

String directorio = null;


try {
directorio = sistemas.util.Config.get("reports.directorio");
} catch (Exception ex1) {
throw new AccionException(
"Se debe especificar el parámetro reports.directorio" +
" en el fichero de configuración");
}
String report = "/" + directorio + "/aplicacion_1.rpt";

Área de Integración y Arquitectura de Aplicaciones Página: 10


Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Uso de CrystalReports 10 en Java

crBean.setReport(report);
crBean.setTipo_salida(CrystalReportBean.SALIDA_HTML);
return crBean;
}

public EjemploCR_HTML () {
}

4.2.3 EjemploCR_RTF

Se genera un documento word (.rtf) para el report aplicación_1.rpt

package report.acciones;

import crystalreports.acciones.CrystalReportAccion;
import crystalreports.beans.*;
import sistemas.framework.controlador.Controlador;
import sistemas.framework.excepciones.*;

public class EjemploCR_RTF extends CrystalReportAccion {


protected CrystalReportBean leerDatosRequest(CrystalReportBean crBean)
throws AccionException {

//Se construye un crbean para un informe genérico


crBean = new CrystalReportBean();

String directorio = null;


try {
directorio = sistemas.util.Config.get("reports.directorio");
} catch (Exception ex1) {
throw new AccionException(
"Se debe especificar el parámetro reports.directorio" +
" en el fichero de configuración");
}
String report = "/" + directorio + "/aplicacion_1.rpt";

crBean.setReport(report);
crBean.setTipo_salida(CrystalReportBean.SALIDA_RTF);

crBean.exportarARTF(request, response, Controlador.getContexto());


return crBean;
}

public EjemploCR_RTF () {
}
}

4.2.4 EjemploCR_Parametros

En este caso se genera un fichero PDF para el report param.rpt, al que se le pasan
parámetros.

package report.acciones;

import sistemas.framework.excepciones.AccionException;
import crystalreports.acciones.CrystalReportAccion;
import crystalreports.beans.CrystalReportBean;

Área de Integración y Arquitectura de Aplicaciones Página: 11


Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Uso de CrystalReports 10 en Java

public class EjemploCR_Parametros extends CrystalReportAccion {


protected CrystalReportBean leerDatosRequest(CrystalReportBean arg0)
throws AccionException {
CrystalReportBean crBean = new CrystalReportBean();

String directorio = null;


try {
directorio = sistemas.util.Config.get("reports.directorio");
} catch (Exception ex1) {
throw new AccionException(
"Se debe especificar el parámetro reports.directorio" +
" en el fichero de configuración");
}
String report = "/" + directorio + "/param.rpt";

crBean.setReport(report);
crBean.setTipo_salida(CrystalReportBean.SALIDA_PDF);

//En el caso de que sólo exista un parámetro se puede introducir como


//un String
//crBean.setParametros("codigo=BEGO");

//Si hay varios parámetros lo mejor es crear un objeto Properties


//y llamara al método setProperty para cada uno de los parámetros
java.util.Properties par = new java.util.Properties();
par.setProperty("codigo", "BEGO");
crBean.setParametros(par);
return crBean;
}

public EjemploCR_Parametros () {
}
}

5 LIBRERÍA CrystalReportsWS

Esta librería contiene las siguientes clases públicas para tratamiento de reports accediendo al
WebService de Delphi:

• CrystalReportWSAccion: A partir de los atributos del request accede al webservice


para solicitar el report, lo copia en la maquina donde se esta ejecutando la aplicación
java y lo visualiza.

• CrystalReportWSBean: Bean con información del report necesaria para el webservice.

Con la clase acción anterior se podría ejecutar un informe directamente o bien podríamos
heredar de ella y modificarla para lo que no se pudiera realizar directamente.

6 CrystalReportWSAccion

Se ha creado una clase llamada CrystalReportWSAccion en el paquete


crystalreports.acciones que a partir de unos atributos del request ejecuta el report
correspondiente.

Los parámetros del request son:

• REPORT: Nombre del report

Área de Integración y Arquitectura de Aplicaciones Página: 12


Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Uso de CrystalReports 10 en Java

• PARAMETROS: Valores de los parametros del report separados por puntos y coma,
estos valores se estableceran de forma secuencial según le llegan al webservice. En el
caso en el que el informe contenga un subinforme con parámetros el webservice
requerirá el valor de todos los parámetros del informe incluidos los del subinforme
aunque estos se encuentren vinculados a parámetros del informe principal.

• TIPO_SALIDA: Tipo de ejecución del report que puede ser:


o PDF
o WORD
o EXCEL

• SALIDA: Fichero de salida, debe tener la extensión que concuerde con el tipo de
salida.

Los reports se han de dejar en un directorio del webservices de Crystal Reports el cual tendrá
por nombre el código de la aplicación. Este directorio se especifica en el fichero de
configuración de la aplicación en la propiedad:
crystalreportsws.rutaReportsServidorRemoto = d:/icm/web/webservices/crpt/EJPL

Por otra parte para que el Controlador encuentre la clase CrystalReportWSAccion hay que
ponerla en el fichero de configuración de la siguiente forma:

CrystalReportWSAccion = crystalreports.acciones

Si en la aplicación se está haciendo uso del datasource de Oracle para acceder a la base de
datos hay que incluir en el fichero de configuración los parámetros bd.usuario y bd.clave con
sus valores correspondientes dado que serán requeridos por la librería CrystalReportsWS
cuando ésta vaya a generar los informes.

Otras variables de configuración que hay que especificar son:

Nombre variable crystalreportsws.webservice


Descripción Ruta hasta el WebService
Valor de ejemplo http://nticmdes09.icm.es/webservices/cgi-bin/wscreport.exe/soap/IWSCR

Nombre variable crystalreportsws.nombreServidorRemoto


Descripción Nombre del servidor en el que se encuentra el WebService, es
necesario para poder recuperar el informe una vez generado
Valor de ejemplo nticmdes09

Nombre variable crystalreportsws.puertoServidorRemoto


Descripción Puerto abierto en el servidor remoto con la aplicación de ficheros
remotos
Valor de ejemplo 8004

Nombre variable crystalreportsws.rutaReportsServidorRemoto


Descripción Ruta en la que se encuentra los ficheros de CrystalReport dentro del
servidor del WebService.El nombre del directorio coincide con el
código de la aplicación.
Valor de ejemplo d:/icm/web/webservices/crpt/EJPL

Nombre variable crystalreportsws.rutaFicherosTemporalesServidorRemoto


Descripción Ruta en la que el WebService generara los resultados de los informes
que ejecutemos
Valor de ejemplo d:/icm/web/webservices/salida

Área de Integración y Arquitectura de Aplicaciones Página: 13


Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Uso de CrystalReports 10 en Java

Nombre variable crystalreportsws.rutaFicherosTemporales


Descripción Ruta física donde se guardarán los resultados de los informes en la
máquina en la que se esta ejecutando la aplicación Java
Valor de ejemplo /usr/PRODUCTO/oracle/j2ee904/j2ee/temp

Nombre variable crystalreportsws.webFicherosTemporales


Descripción Ruta web que se devolvera al cliente para mostrar los datos del
informe, como con cualquier otro fichero que se deba descargar en los
sistemas de desarrollo y producción se debera usar la aplicación
PDFServlet.
Valor de ejemplo ../../../download

Nombre variable crystalreportsws.instanciaBD


Descripción Instancia de base de datos de la que el WebService obtendrá los datos
para generar el informe, el usario y la password con las que se
conectará serán las mismas que con las que se conecta la aplicación
Valor de ejemplo icm21_denivel2

Se tendrá que incluir el fichero redireccion.jsp en el directorio WEB-INF/jsp de la aplicación.

6.1 Ejemplo genérico

A continuación se muestra un ejemplo de llamada a la Accion InvocaWebService que extiende


de CrystalReportWSAccion desde una página htm:

<html><head><title>Página principal</title></head>

<body>

<script>
function Ver(){
cadena = document.forms[0].VER.value;
document.location = cadena;
}
</script>
<form action="InvocaWebService.icm" method="POST">
<table style="padding: 5px; border-collapse: collapse;"
id="AutoNumber1" bordercolorlight="#C0C0C0" border="0"
bordercolor="#008080" cellpadding="0" cellspacing="0" width="90%">
<tbody><tr>
<td align="center" width="20%"><font face="Arial"
size="2"> <span lang="es">
Tipo de exportación</span></font></td>
<td width="80%"><font face="Arial" size="1">
<span lang="es"><select size="1"
name="TIPO_SALIDA"><option selected="selected" value="PDF">Acrobat
PDF</option><option value="WORD">Microsoft Word</option><option
value="EXCEL">Excel (.XLS)</option></select></span></font></td>
</tr>
<tr>
<td align="center" width="20%"><font face="Arial"
size="2"> <span lang="es">Report</span> </font>
</td>
<td width="80%"><font face="Arial" size="1">
<input name="REPORT" size="65" value="1.rpt" type="text"><br>

Área de Integración y Arquitectura de Aplicaciones Página: 14


Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Uso de CrystalReports 10 en Java

</font><span lang="es"><font face="Arial" size="2">


1.rpt = report normal rtf<br>
2.rpt = report con parámetro (indicar un número de 1 a
4)</font></span></td>
</tr>
<tr>
<td align="center" width="20%"><span lang="es">
<font face="Arial" size="2">Parámetros
Report</font></span></td>
<td width="80%"><font face="Arial" size="1">
<input name="PARAMETROS" size="65" value="4;3;2;1"
type="text"></font></td>
</tr>
<tr>
<td align="center" width="20%"><font face="Arial"
size="2"> <span lang="es">
Documento salida</span></font></td>
<td width="80%"><font face="Arial">
<input name="SALIDA" size="65" value="1.pdf"
type="text"></font></td>
</tr>
<tr>
<td colspan="2" align="center" width="100%">
<font face="Arial">
<input value=" Exportar " name="EXPORTAR"
type="submit"></font></td>
</tr>
</tbody>
</table>
</form>
</body>
</html>

package report.acciones;

import sistemas.framework.excepciones.AccionException;
import crystalreports.acciones.CrystalReportWSAccion;
import crystalreports.beans.CrystalReportWSBean;

public class InvocaWebService extends CrystalReportWSAccion {


/**
* Este metodo nos permite modificar los valores que CrystalReportWSAccion asigna
* automaticamente al CrystalReportWSBean. O incluso obviar esos valores y establecer
* los valores por nuestra cuenta dependiendo de otras condiciones.
* @see crystalreports.acciones.CrystalReportWSAccion
*/
protected CrystalReportWSBean leerDatosRequest(CrystalReportWSBean crBean)
throws AccionException {
//Permitimos que establezca los valores iniciales a partir de los valores del request.
crBean = super.leerDatosRequest(crBean);

//Modificar crBean si fuera necesario.

return crBean;
}
}

Área de Integración y Arquitectura de Aplicaciones Página: 15


Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras