domingo, 26 de mayo de 2013

Integración de Crystal Reports y ALV

Los ALV (Abap List Viewer) es la herramienta de SAP para presentar los informes de una manera más practica y funcional que los típicos listados de texto plano. Su interface permite funcionalidades como filtros, subtotales, totales, variantes de visualización, etc...

Crystal Reports es un aplicación, adquirida por SAP en el 2007, que sirve para diseñar y generar informes desde una amplia gama de fuentes de datos. 


En el ultimo proyecto que he trabajado, el cliente nos pidió que varios ALV pudiesen se impresos en un formato concreto y utilizando Crystal Reports. Reconozco que nunca había trabajado Crystal Reports, si era necesario imprimir el informe,  creaba un smartforms y lo llamaba desde el ALV, pero nunca había intentado integrar ALV y Crystal Reports.

Por suerte existe INTERNET.

"Si alguien ya lo ha hecho, yo puedo hacerlo,
Si nadie lo ha hecho , yo puedo ser el primero"

Los requerimientos minimos para poder integrar ALV y Crystal Report son:
  • SapGui 7.10 o superior.
  • SAP Business Suite 7 Innovations 2010
Si ademas queremos modificar o crear los informes con Crystal Report:
  • SAP Crystal Reports 2008 SP02 o superior.
Lo primero es descargar el addon CR ADD-ON FOR BS APPS 1.0  desde el SAP SUPPORT PORTAL.

Software Downloads > Installations and Upgrade > Search for installations and Upgrade > Buscar "CR ADD-ON FOR BS APPS 1.0"



Click, y  en la nueva ventana,  Click en "Installation" , descargamos el archivo ZIP.


Descomprimir e instalar el add-on.



Despues, comprobamos que en nuestro sistema SAP se puede utilizar Crytal Repport (ECC 6.0).

Primero vamos a la transacción SALV_GUI_CUST o a través de la SPRO:
   IMG > SAP NetWeaver > Application Server > SAP List Viewer > Maintain SAP GUI Specific Settings


También es recomendable activarlo para Web Dynpro en la transacción SALV_WD_CUST


Para probarlo podemos lanzar cualquier ALV GRID(SAP GUI ALV) o Web Dynpro ABAP ALV.

Por ejemplo, ejecutamos el sencillo programa BALVSD02_GRID desde la transacción SE38.

El menú superior, en  VISTA o VIEW, aparecerá ahora la opción CRYSTAL REPORT.


Si os da algún error cuando intentéis pasar a la vista de Crystal Report, por ejemplo CR101, revisar la siguiente nota:

Note 1371966 - ALV/Crystal Reports Integration: Collective note corrections

 ¿Como se añade esa opción en los  Status GUI de  mis ALV ?

Si estáis utilizando un ALV con un Status GUI personalizado, no aparecerá la opción CRYSTAL REPORT.

Tenéis que añadir dos fcodes al Status GUI:
  • Cod. de funcion &VCRYSTAL: Activa la vista crystal report
  • Cod. de funcion &VGRID: Activa la vista ALV normal
Y por ultimo, Activar la opción de grabar/modificar Layout cuando llaméis a la función REUSE_ALV_GRID_DISPLAY

Vamos a modificar el programa Z_ALV_TO_EXCEL  de la anterior entrada para que pueda verse con crystal report.

Aqui teneis el codigo del programa sin adaptar para crystal report.

Primero le añadimos los códigos de funciones al Status GUI del ALV

Cod. de función standard para crystal report / Alv
También marcamos la opción de la función REUSE_ALV_GRID_DISPLAY para grabar layout.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
     EXPORTING
        i_callback_program             = g_repid
        i_callback_user_command        = 'USER_COMMAND_01'
        i_callback_pf_status_set       = 'SET_PF_STATUS_01'
        i_structure_name               = 'T_OUTTAB'
        is_layout                      = gs_layout
        it_fieldcat                    = gt_fieldcat[]
*        it_sort                        = gt_sort[]
*        it_excluding                   = gt_exclude[]
*        I_DEFAULT                      = 'X'
         i_save                         = 'A'  "<-------grabar layouts
         is_variant                     ls_vari
         it_events                      gt_events[]
     TABLES
        t_outtab                       ti_spfli
     EXCEPTIONS
        program_error                  1
        OTHERS                         2.


Ejecutamos el programa.



Si tenemos instalado el SAP Crystal Reports 2008 SP02 o superior podemos descargarnos el formulario a un archivo RPT y modificarlo.



Una vez modificado, importamos el archivo RPT a SAP.


Por ultimo, para que pueda ser visualizado por cualquier usuario que ejecute el programa, grabamos el formulario de crystal report modificado como un layout del ALV.


Cuando el usuario ejecute el programa seleccionara el layout o se puede dejar como layout por defecto.


Fuentes:

4 comentarios:

  1. Hola David!,

    excelente artículo. Estaba intentando aplicar el ejemplo pero no encuentro el add-on en el service marketplace. Parece que fué movido del portal.. :(.

    Por casualidad tienes el instalable?

    Saludos Cordiales,
    Noel

    ResponderEliminar
    Respuestas
    1. No lo han retirado, yo sigo viéndolo con mi cuenta, sera un tema de permisos.
      Intenta ir a Software Downloads -> Browse our Download Catalog -> Analytics Solutions -> Intenta acceder a algun componente de crystal reports, si no tiene permisos, veras un mensaje:
      - You have navigated to a point where there are no downloads available for your account.

      Lo he comprobado, con dos cuentas que tengo, y con una me deja descargarlo y con la otra no.

      Eliminar
  2. Buenas tardes,
    Un post perfecto, muchas gracias, gracias a tí he podido integrarlo.
    Por otro lado, quisiera saber como enlazar SAP Crystal Reports 2011 con las Tablas de SAP, ya que me dice esto:
    "La conexión no es posible. No tiene derechos necesarios para diseñar informes en el Sistema SAP.
    Me puedes ayudar?
    Gracias

    ResponderEliminar
    Respuestas
    1. Gracias!!! Creo que es un problema de autorizaciones en SAP, tendrás que asignar las autorizaciones pertinentes a tu usuario, en este enlace hablan del tema:
      https://archive.sap.com/discussions/thread/2151085

      Un saludo

      Eliminar