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”.

image
Field Symbols y Estructuras: Mejoras de Rendimiento y Uso 9

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.

image 2
Field Symbols y Estructuras: Mejoras de Rendimiento y Uso 10

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).

image 3
Field Symbols y Estructuras: Mejoras de Rendimiento y Uso 11

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

image 4
Field Symbols y Estructuras: Mejoras de Rendimiento y Uso 12

Ahora, abrimos la perspectiva de “ABAP Profiling”

image 5
Field Symbols y Estructuras: Mejoras de Rendimiento y Uso 13

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:

image 6
Field Symbols y Estructuras: Mejoras de Rendimiento y Uso 14

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.

image 7
Field Symbols y Estructuras: Mejoras de Rendimiento y Uso 15

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 *