miércoles, octubre 09, 2013

Axapta: Macros en sentencias SQL

Macros en sentencias SQL
Uno de los beneficios de utilizar macros es que permiten especificar sentencias parciales de consultas en código X++, las cuales pueden ser reutilizadas en varias partes a lo largo de cualquier aplicación.

Beneficios:

·         Reutilización de código,

·         Mejora la lectura del código fuente,

·         Mayor flexibilidad a modificaciones,

·         Reducir el tiempo de desarrollo.

 Ejemplo de uso:

Clase con dos métodos que realizan consultas a la base de datos.

Método: custPaymentProcess
 
 
Método: advancesProcess
 
Luego del análisis realizado a estos dos métodos se puede observar que las consultas pueden ser utilizadas dentro de macros, de esta forma, se puede mejorar la visibilidad del código fuente y hacer uso de la reutilización del código.
Para lo cual creamos dos macros:
Todo se simplifica utilizando macros
·         Macro FieldsCustPaymentHeader
 
A continuación la explicación al código.
o   El %1, %2, %n permite pasar argumentos a nuestra macro, esto permite definir desde donde se llama la macro las variables que queremos utilizar dentro de esta.
o   #ifNot.Empty(%n) permite definir un rango condicionante de acuerdo al argumento que se esté enviando a la macro. En este ejemplo comprobamos si el parámetro enviado en la tercera posición no está vacío ejecuta todo el bloque #ifNot.Empty(%3) …#EndIf
o   #EndIf identifica que es el final de la macro condicionante.
o   #if.Empty(%n) permite comprobar si el parámetro enviado en la posición %n es vacía, entonces se ejecuta todo lo que se encuentra en el bloque #If .Empty…#EndIf


·         Macro FieldsCustPaymentLine

 
La explicación expuesta en la primera macro aplica en esta.


Utilización de la macro en consultas SQL en X++

Modificamos nuestro código original para remplazar con las macros creadas anteriormente.


En el segundo método tenemos:



De esta forma la utilización de macros en las sentencias SQL nos permite una gran flexibilidad a la hora de desarrollar aplicaciones en Axapta.