jueves, 31 de agosto de 2017

Depurar un informe Report Data Provider en AX2012 R3

En una entrada antigua del blog, hablábamos sobre como depurar código desde Visual Studio en AX2012 (que podéis ver aquí). Este proceso es válido para cualquier código que se ejecute en CIL (Common Intermediate Language), pero debemos tener en cuenta algunas consideraciones para depurar las clases RDP (usadas para desarrollar informes).
El principal inconveniente radica en que los informes RDP se basan en tablas temporales o en memoria, haciendo que no se puedan depurar directamente.
Vamos a ver cómo podemos solucionar este inconveniente y depurar nuestro informe RDP.
Primero debemos asegurarnos de tener permisos para depurar en el servidor actual, por lo que nuestro usuario debe ser miembro del grupo Microsoft Dynamics AX Debugging Users. Y revisar todo lo explicado en mi anterior post.
En la clase que ejecuta el RDP debemos cambiar:
//class TestReportDP extends SRSReportDataProviderBase
class TestReportDP extends SrsReportDataProviderPreProcess
Con esto conseguimos que el informe procese primero los datos, y por último muestre el informe por pantalla. Así podremos acceder a los datos con el depurador.
Debemos asegurarnos también que el método processReport() contenga la siguiente llamada:
Tabla_Temporal.setConnection(this.parmUserConnection());
Por último, tenemos modificar las propiedades de la tabla temporal:
  • CreatedBy = Yes
  • CreatedTransactionId = Yes
  • TableType = Regular
Con estos cambios, ya podemos depurar el código de la clase que procesa los datos del informe.

No hay comentarios:

Publicar un comentario