Generar PDF a partir de un Crystal Report

Buenos dias a todos,

Estoy haciendo un pequeño desarrollo para generar PDF apartir de un Crystal Report de SAP B1.
He leido varios Post al respecto pero al compilar mi codigo me da el siguiente Error:
Indice No valido.

El bloque de codigo es:

    private void button2_Click(object sender, EventArgs e)
    {
        CrystalReport1 cryReportDocument = new CrystalReport1();
        cryReportDocument.Load(@"C:\Formatos\OV.rpt");
        cryReportDocument.SetDatabaseLogon("SYSTEM", "Password", "192.168.1.192:30015", "TEST");
        cryReportDocument.SetParameterValue("DocKey@", 9120);
        cryReportDocument.SetParameterValue("ObjectId@",17);
        cryReportDocument.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, @"c:\SAP\Archivo.PDF");

    }

Ya he ledio varios post al respecto pero sigo teniendo el mismo error, no entiendo que estoy haciendo mal o bien que me falta.

Agradezco de antemano.
Saludos.

Pregunta base…

¿Ese reporte lo has probado a generarlo directo en SAP? No sea que el reporte sea el que tiene un error en la construcción y te arroje ee error porque un error de “Indice no Valido” suena más a data que al reporte en sí.

1 me gusta

Hola @Ares17000

De antemano agradezco la atencion, el RPT funciona perfecto en SAP es el que esta en uso actualmente en productivo.
El tema de datos, ya intente con diferentes Numeros internos y me arroja el mismo error.
Uno de los post que consulte decia que probablemente podia ser que el nombre de lparametro no tenia el mismo que estaba asignado en el RPT, ya probe con nombre y con numero y tampoco.

Saludos.

Pero el Crystal Report en SAP tiene para exportar a PDF en su botoncito porque duplicar la función si ya la tiene?
Icono (Botón) de Exportar
image
Se selecciona el Tipo de Archivo

Saludos,
David

1 me gusta

@willis He tomado la decisión de que no contesto a quien no pase y deje su presentación en el apartado de presentaciones.

Por lo que entiendo esta desarrollando una APP externa a SAP en el cual quiere hacer un proceso de generar el PDF apartir de un Crystal Report que existe en su SAP.

Esto si es posible, solo tienes que tener en cuenta los parametros que vas a enviar al CR y de antemano te comento que antes de pasar los parametros metas una linea donde alimentes los datos de donde va tomar el DataSource para llenarlo.

saludos .

1 me gusta

Hola @ dgrvedado,

Esa funciona si la tiene activa. Gracias por responder.

Saludos.

Hola @juliancab, gracias por responder,

Lo que comentas es totalmente correcto, ahora mismo me estoy peleando con el datasource y su llenado.

Saludos.

Hola a todos los que han contribuido con sus respuestas e ideas. Este primer error ya lo solvente, reescribi el codigo usando los mismos nombre de “DocKey@” y “ObjectId@” y paso ese error.

Saludos.

Te paso un código de como lo hago:

 EventLog.WriteEntry(sSource, "Iniciando proceso para archivo: " + dr["XMLOriginal"].ToString());
                            ReportDocument cryReportDocument = new ReportDocument();
                            cryReportDocument.Load(sPlantilla);
                            cryReportDocument.SetDatabaseLogon(usuarioBD, passBD, servidorBD, nombreBD);
                            cryReportDocument.SetParameterValue("DocKey@", iDocEntry);
                            cryReportDocument.SetParameterValue("Cadena@", Cadena);
                            cryReportDocument.SetParameterValue("Firma@", Firma);
                            cryReportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, this.AttachPDF);
                            cryReportDocument.Dispose();
                            EventLog.WriteEntry(sSource, "XML y PDF Creados");

y me funciona excelente!

3 Me gusta

Muchas gracias @juliancab, olvide comentar que estoy con base de datos Hana, y me esta dando error la conexion. Al usar este código, sigo buscando…

Saluos.

Yo en un app.config hago todas mis configuraciones como la cadena de conexion:

<!--CONFIGURACION DEL SERVIDOR -->
    <add key="CadenaCon" value="Server=SERVERSAP:30015;DatabaseName=NDB;UserID=SYSTEM;Password=XXXX;Current Schema=SBO_TESTER"/>

luego a nivel código obtengo los valores


            HanaConnectionStringBuilder ocb = new HanaConnectionStringBuilder(CadenaCon);
            usuarioBD = ocb.UserName;
            passBD = ocb.Password;
            servidorBD = ocb.Server;
            nombreBD = ocb.CurrentSchema;

y el código que te pase, me funciona tal cual en HANA y SQL. En si el cambio existe en el archivo que guarda la cadena de conexión y el como obtienes esos valores.

saludos

Hola @juliancab,
De antemano, Gracias.
Me parece que no es el código, sino el Crystal. Ya que abro el RPT en el diseñador de Crystal en el servidor si se conecta sin problemas. Pero ese mismo RPT lo abro en el diseñador en mi PC y ahi no se conecta.

Saudos.

Tienes que tener muy en cuenta que ya estando fuera del servidor, necesitas instalar/configurar la conexion primeramente, de lo contrario no vas a poder visualizar tu reporte.

CLIENTE HANA, ODBC.

GRacias @juliancab, si asegurado.

Este tema se cerró automáticamente 91 días después del último post. No se permiten nuevas respuestas.