Field Symbols y Estructuras: Mejoras de Rendimiento y Uso

Field Symbols y Estructuras: Mejoras de Rendimiento y Uso

En el mundo del desarrollo ABAP, el manejo eficiente de tablas internas y estructuras de datos es crucial para el rendimiento de las aplicaciones. Dos enfoques comunes para este manejo son el uso de field symbols y el uso de work areas. A continuación, exploramos las diferencias entre estos dos enfoques, destacando las mejoras de rendimiento y uso de cada uno.

Field Symbols

Field symbols en ABAP son similares a punteros en otros lenguajes de programación. Permiten acceder directamente a áreas de memoria, eliminando la necesidad de copiar datos y, en consecuencia, mejorando significativamente el rendimiento.

  1. Mejor Rendimiento:

Acceso Directo a Memoria: Los field symbols permiten el acceso directo a los datos en la tabla interna sin necesidad de realizar copias. Esto reduce la sobrecarga de procesamiento y acelera las operaciones.

Menor Uso de Memoria: Al evitar la copia de datos a una work area, se utiliza menos memoria, lo cual es crucial en aplicaciones que manejan grandes volúmenes de datos.

  1. Flexibilidad:

Asignación Dinámica: Los field symbols pueden apuntar a diferentes tipos de datos en tiempo de ejecución, proporcionando una mayor flexibilidad en la manipulación de datos.

  1. Código Más Limpio y Eficiente:

Simplificación de la Sintaxis: La sintaxis es más concisa y directa, lo que mejora la legibilidad del código y reduce la probabilidad de errores.

Work Areas ( Estructuras )

Work areas son estructuras temporales que contienen los datos de una fila de la tabla interna. Este enfoque implica copiar los datos de la tabla interna a la work area antes de manipularlos.

  1. Simplicidad y Claridad:

Uso Intuitivo: Las work areas son más intuitivas y fáciles de entender para los desarrolladores menos experimentados.

Código Directo: Facilita la escritura de código directo y sencillo para operaciones básicas, mejorando la claridad del mismo.

  1. Estabilidad del Código:

Tipos de Datos Estáticos: Los tipos de datos son estáticos y claramente definidos, lo que puede reducir el riesgo de errores relacionados con la asignación dinámica de memoria.

Comparación de Rendimiento

Field Symbols

  • Ventajas: Ofrecen mayor rendimiento debido al acceso directo a la memoria y menor uso de memoria. Son ideales para operaciones que requieren alta eficiencia.
  • Desventajas: Pueden ser más complejos de entender y utilizar correctamente, especialmente para desarrolladores menos experimentados.

Work Areas

  • Ventajas: Proporcionan simplicidad y claridad, lo que facilita su uso en operaciones básicas. Son más fáciles de entender y manejar.
  • Desventajas: Ofrecen menor rendimiento debido a la copia de datos y mayor uso de memoria. No son ideales para operaciones que requieren alta eficiencia.

Veamos un ejemplo en el código y hagamos puntualmente la comparación de rendimiento entre estos dos elementos.

Creamos una clase global llamada “zcl_artperformance_logali“. En la definición de la clase, en la sección pública añadimos los métodos “STRUCTURE” y “FIELD_SYMBOL”.

Hacemos la implemetación de la clase, con los diferentes métodos. Creamos los dos casos, la iteración de una tabla interna llamada “LT_USERS“ la cual recibe los datos de la lectura en base de datos por la tabla transparente “USR02“.

La primera iteración la realizamos utilizando apuntadores o field symbols para realizar la modificación del campo USER TYPE de nuestra tabla interna “USTYP”.

La segunda iteración la realizamos utilizando una estructura y la sentencia MODIFY para realizar la modiicación del mismo campo.

La idea de este ejercicio es realizar la comparación de la misma operación usando diferentes métodos.

Para realizar la comparación, utilizaremos la perspectiva de “ABAP Profiling”, de esta manera vamos a poder analizar el tiempo de respuesta en tiempo de ejecución.

Con clic derecho sobre el código fuente, seleccionamos “Profile As“ y luego tomamos la opción “ABAP Application (Console).

Desmarcamos la casilla de “SQL database access” y finalizamos:

Ahora, abrimos la perspectiva de “ABAP Profiling”

Con esto, se habilitará las pestañas de “ABAP Traces”, donde podremos seleccionar nuestra clase que se ha ejecutado, para analizarla. Damos doble clic sobre ella:

En la siguiente pantalla, nos posicionamos sobre la pestaña de “Hit List” y allí, nos aparecerá todo el detalle del tiempo de ejecución para actualizar la tabla interna, el primero por la estructura y el segundo por el apuntador o field symbols.

Notamos que se presenta una gran reducción de tiempo, esto sería una mejora notable en el rendimiento, se espera ahorrar tiempo entre un 25 y 40% utilizando los apuntadores.

Las mejoras en rendimiento son más notables, cuando trabajamos tablas que contengan miles y millones de registros.

Como conclusión, la elección entre usar field symbols y work areas en ABAP depende del contexto y los requisitos específicos de la aplicación. Para operaciones de alto rendimiento y manejo eficiente de grandes volúmenes de datos, los field symbols son preferibles. Sin embargo, para casos donde la simplicidad y la claridad del código son más importantes, las work areas pueden ser la mejor opción.

En resumen, el uso de field symbols en ABAP ofrece mejoras significativas en el rendimiento y el uso eficiente de la memoria, mientras que las work areas proporcionan un enfoque más sencillo y directo para la manipulación de datos. Escoger el enfoque adecuado puede marcar una gran diferencia en la eficiencia y mantenibilidad de las aplicaciones ABAP.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *