✒️ABAP / La performance en ABAP Por Candela Calzada

Selector Alummnos / Empresas

ABAP La performance en ABAP

ABAP La performance en ABAP

Unidad n°7: Los Batch Inputs vs las BAPIS y temas avanzados
Lección n°7: La performance en ABAP

En ABAP existen buenas y malas practicas, ya sea porque afectan al rendimiento o la performance de los programas o porque afectan a otros factores que son determinantes como ser la reutilización y el mantenimiento del cód. Entonces, cuando hablamos de performance, nos referimos al análisis del desempeño y rendimiento del programa.

La performance de un programa tiene que ver con tres aspectos fundamentales:

  1. El tiempo de procesamiento de la lógica ABAP existente en el programa.
  2. El tiempo de procesamiento de los accesos a las TBD.
  3. El tiempo de procesamiento del sist. SAP.

De estos tres aspectos, debemos hace incapie es en el tiempo de procesamiento de los accesos a las TBD, ya que es el que más recursos y tiempo consume.

En segundo lugar, está el tiempo de procesamiento de la lógica ABAP existente en el programa, es decir, una vez que recuperamos los datos de las TBD, debemos procesarlos mediante una lógica determinada y producir una acción en el sist. o una salida por pantalla.
Y, en tercer lugar está el tiempo de procesamiento del sist. SAP.

ABAP brinda una herramienta para evaluar como se distribuye el tiempo de procesamiento de un programa, el "Análisis de tiempo de ejecución" de la trans SE30.

Dentro de la trans, veremos una pantalla inicial donde seleccionamos la opción Programa, completamos el nombre del programa que deseamos evaluar, en este caso ZTEST_SELECT_USUARIOS (que es un reporte que hace un SELEC a la TBD de usuarios ZTABLA_USUARIOS y luego muestra los registros por pantalla mediante un reporte ALV).
Y por último hacemos clic en el botón Evaluar.

Como resultado de la ejecución de la trans. veremos una gráf. donde podemos ver cual es la distribución del porcentaje de los tipos de procesamiento entre la lógica ABAP, la base de datos y el sist:

Entonces podemos decir que:

  • Cuanto más alto es el porcentaje de procesamiento de la base de datos en comparación a los otros porcentajes, entonces los tiempos del programa se irán a las nubes.
  • La situación ideal es que el porcentaje de procesamiento de la lógica ABAP sea lo más alto posible y el del procesamiento de la base de datos sea lo más bajo posible.
  • Para lograr este objetivo es importante tener en claro que prácticas son desaconsejadas y cuales son recomendadas, de modo de poder apuntar a realizar programas de alta calidad, que funcionen bien en el ambiente productivo, donde las TBD contienen millones de registros y cada micro seg. cuenta.

Las buenas y malas practicas en el acceso a la base de datos:

Evitar el SELECT*:

  • Cuando hacemos un SELECT a una TBD tenemos que evitar usar el asterisco, si es que no necesitaremos recuperar todos los campos de la tabla, ya que si lo hacemos estaremos recuperando campos de las TBD que no usaremos.
    EJ:
  • En lugar de usar el asterisco en el SELECT, deberíamos especificar cada uno de los campos de la TBD que queremos recuperar.
    EJ:

Evitar el SELECT ENDSELECT:

  • Cuando seleccionamos los registros de una TBD, podemos ejecutar la sentencia SELECT ENDSLECT, que a diferencia de SELECT, hace un bucle que inicia con SELECT y finaliza con ENDSELECT y dentro del bucle se puede hacer el procesamiento del registro recuperado de la TBD:
  • No es aconsejable usar el SELECT ENDSELECT debido a que la performance de la sentencia SELECT INTO TABLE es muy superior:
  • La 2da opción es ocho veces más performante.

Evitar el SELECT sin WHERE:

  • Un SELECT sin condiciones, es decir, sin la cláusula WHERE, devuelve todos los registros de la TBD. En general esto indica que se ha producido un error de programación. Pero en casos específicos podremos usarlo sin WHERE.
    EJ:
  • También, cuando ejecutamos un SELECT es recomendable que las condiciones sean lo más específicas posibles, ya que de esta forma el acceso a los registros resultantes sería más rápido que si no se especificaran.
    EJ:
  • Además debemos evitar incluir condiciones por el negativo (NE), ya que desde el pto de vista del rendimiento son mucho más costosas a nivel base de datos.

Evitar el SELECT dentro de un LOOP:

  • Muchas veces veremos uno o varios SELEC dentro de un LOOP-ENDLOOP, es decir, mientras recorremos una TI seleccionaremos para cada registro, diferentes registros en otras TBD ejecutando la sentencia SELECT SINGLE.
    EJ:
  • Desde el pto de vista del rendimiento, es una mala practica debido a que si la TI que estamos recorriendo tiene un millón de registros, tendremos que ejecutar si o si un millón de veces los SELECT que están dentro del LOOP.
  • Una solución es recuperar en TI, antes del LOOP-ENDLOOP, todos los registros que necesitaremos de las TBD, y luego dentro del LOOP-ENDLOOP aceeder a los mismos en memoria por medio de la sentencia READ TABLE.
    Para hacer esto ejecutaremos la adición FOR ALL ENTRIES dentro del SELECT, en donde se recuperan todos los registros de las TBD a memoria:

Evitar usar las sentencias INSERT, UPDATE, MODIFY Y DELETE dentro de un LOOP:

  • Estas sentencias mencionadas impactan en las TBD, aplica la misma lógica que vimos en el pto anterior.
    EJ:
  • No es recomendable acceder a una TBD por medio de un bucle ya que provocaría un problema de rendimiento, el cual puede ser pequeño para una aplicación que recién comienza, pero se puede volver grande cuando esta sea más grande.
  • Para evitar usar las sentencias de actualización de TBD dentro de los bucles, debemos trabajar con IT e impactar en las TBD una única vez fuera de los ciclos LOOP-ENDLOOP:

SELECT más SELECT vs JOIN:

  • Cuando necesitamos seleccionar uno o más TBD, tenemos dos opciones:
    1. Hacer un SELECT a la 1ra TBD y después al hacer el 2do SELECT, implementar la cláusula FOR ALL ENTRIES para usar los registros obtenidos en la 1ra TBD como condición de la selección.
    Pero no es optimo ya que estamos haciendo dos SELECT diferentes cuando podemos optimizar ambos, haciendo una sola selección.


    2. Podemos hacer un JOIN entre ambas TBD:

    Y si es necesario, podemos hacer un JOIN entre tres o más TBD y recuperar en el todos los campos que necesitemos, de esta forma optimizando el rendimiento.


Las buenas y malas practicas en la lógica del procesamiento ABAP:

READ TABLE BINARY SEARCH:

  • Cuando leemos un registro de una TI que está en memoria, por la sentencia READ TABLE, el sist. internamente para encontrar el registro que deseamos leer, debe leer secuencialmente todos los registros de la TI, desde el 1ro hasta que llegue al que buscamos.
    EJ:
  • Existe una alternativa que respecto a la performance es óptima y consiste en ejecutar lo que se denomina una lectura binaria, en lugar de una secuencial.
    Que para ejecutarla tenemos dos condiciones:
    1. La TI tiene que estar ordenada ascendentemente por el campo que deseamos buscar.
    2. Debe agregar la cláusula BINARY SEARCH al final de la sentencia READ TABLE.
    EJ:

Evitar hacer un LOOP ENDLOOP dentro de otro:

  • EJ:
  • Pensemos que si la TI 1 tiene almacenados 10.000 registros y la TI 2 tiene otros 10.000, entonces si no se usan condiciones a hacer los ciclos, en el peor de los casos recorreremos 10.000*10.000 registros.
    Podemos mejorar esto si usamos condiciones en el 1er ciclo LOOP-ENDLOOP y por otro lado en lugar de ejecutar el 2do LOOP-ENDLOOP, ejecutamos un READ TABLE con BINARY SEARCH para lo cual previamente debemos ordenar la TI ascendentemente por el campo por los que buscamos un registro.
    EJ:

LOOP CHECK vs LOOP WHERE:

Cuando trabajamos con el ciclo LOOP-ENDLOOP tenemos dos opciones para establecer condiciones:

  • Escribir las condiciones dentro del LOOP-ENDLOOP, podemos usar la sentencia IF-ENDIF o CHECK para filtrar los registros que procesaremos. Lo malo de esta opción es que no nos evita recorrer o leer cada registro antes de descartarlo.
  • Filtrar los registros que procesaremos directamente dentro del LOOP-ENDLOOP especificando una o varias condiciones dentro del WHERE. Esta opción es superior ya que evita recorrer cada registro.
  • La 2da opción es el doble de performante.

Olvidarnos del WHEN OTHERS en la sentencia CASE:

  • Muchas vecemos cuando programemos, podemos olvidarnos del WHEN OTHERS cuando trabajamos con la sentencia CASE-ENDCASE:
  • Debemos recordar de usar el WHEN OTHERS para siempre tener los resultados que queremos, más si estamos en un ambiente real de trabajo, para no producir errores:

APPEND de una TI en otra TI:

  • Algo que nos puede pasar es agregar los registros de una TI en otra TI, siendo ambas del mismo tipo. Para llevar a cabo esta lógica podemos:
    1. Recorrer la TI 1 y dentro del LOOP-ENDLOOP hacer un APPEND a cada registro de la TI 2.
    2. Usar la sentencia APPEND LINES OF, en una sola línea para copiar el contenido de una TI a otra.
  • La 2da opción es 7 veces más performante.

INSERT de una TI a otra TI:

  • Nos puede pasar que cuando trabajemos con TI insertemos el contenido de una TI en otra, a partir de determinada posición, siendo ambas tablas del mismo tipo.
    Tenemos dos alternativas:
    1. Recorrer la TI 1 y dentro del LOOP-ENDLOOP hacer un INSERT de cada registro de la TI 2, en determinada posición.
    2. Usar la sentencia INSERT LINES OF, en una sola línea para insertar el contenido de una TI a otra en una posición determinada.
  • Podemos notar que INSERT LINES OF es 11 veces más performante.

El borrado de registros duplicados de una TI:

  • Cuando trabajamos con TI capaz necesitamos borrar registros duplicados de una TI. Tenemos dos opciones, para las cuales necesitamos tener ordenada la TI por el campo por lo que determinaremos si la TI tiene registros duplicados:
    1. Hacer la comparación manualmente, recorriendo cada uno de los registros de la TI y preguntando a cada uno si el registro es igual al anterior, si es así será borrado.
    2. Usar la sentencia DELETE ADJACENT DUPLICATES, la cual borra todos los registros duplicados de un TI, comparando los campos que especificamos luego de COMPARING.
  • El DELETE ADJACENT DUPLICATES es 8 veces más performante.

Copiar TI:

  • Podemos necesitar copiar el contenido de una TI a otra, siendo ambas de igual tipo. Podemos:
    1. Borrar el contenido de la TI 2, luego recorrer la TI 1 y agregar cada registro de la TI 1 a la TI 2.
    2. Usar la asignación tabla_interna_1[ ] = tabla_interna_2[ ], la cual en una sola línea pisa el contenido existente de la TI 1 con el contenido de la TI 2.
  • Podemos ver que la 2da opción es 38 veces más performante.

Comparación de TI:

  • Cuando tengamos que comparar dos TI para poder determinar si su contenido es el mismo en ambas TI, podemos:
    1. Hacer la comparación de las TI manualmente, recorriendo cada TI y leyendo el contenido de la otra TI.
    2. Usar dentro de un IF-ENDIF la asignación tabla_interna_1[ ] = tabla_interna_2[ ], la cual en una sola línea determina si el contenido que existe en la TI 1 es igual al contenido de la TI 2:
  • La 2da opción es 13 veces más performante.

 

Escanear / Compartir

 

 


Sobre el autor

Publicación académica de Candela Calzada, en su ámbito de estudios para la Carrera Consultor ABAP Nivel Inicial.

SAP Expert


Candela Calzada

Profesión: Técnica Electrónica - Argentina - Legajo: JW91W

✒️Autor de: 160 Publicaciones Académicas

🎓Cursando Actualmente: Carrera Consultor ABAP Nivel Avanzado

🎓Egresado de los módulos:

Disponibilidad Laboral: FullTime

Presentación:

Me encuentro estudiando la ingeniería en sistemas de información. poseo amplia experiencia en edición de videos. tengo bases entorno a la programación que quiero continuar consolidando.

Certificación Académica de Candela Calzada

✒️+Comunidad Académica CVOSOFT

Continúe aprendiendo sobre el tema "La performance en ABAP" de la mano de nuestros alumnos.

SAP Master


La Performance en ABAP Se analizan las prácticas de programación que afectan el desempeño y rendimiento en ABAP, priorizando la performance. Los tres aspectos fundamentales son: tiempo de procesamiento de la lógica ABAP, de los accesos a la base de datos y del sistema SAP. El acceso a la base de datos suele ser el principal factor de impacto en recursos y tiempo, aunque con SAP HANA este impacto ha disminuido. Se recomienda utilizar la transacción SE30 para medir los tiempos de procesamiento y detectar cuellos de botella. Lo ideal es que el mayor porcentaje de tiempo se invierta en la lógica ABAP y el menor en los accesos a base de datos. Buenas y malas prácticas de acceso...

Acceder a esta publicación

Creado y Compartido por: Juan Ignacio Romero

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

¿Qué afecta la performance? 1. Accesos a base de datos (el más crítico). 2. Lógica ABAP (bucles, condiciones, tablas internas). 3. Tiempo del sistema (carga del servidor). Herramienta de análisis: · Transacción SE30 (Análisis de tiempo de ejecución). Buenas Prácticas - Base de Datos: Mala Práctica Buena Práctica Razón SELECT * SELECT campo1 campo2 Evita traer datos innecesarios SELECT ... ENDSELECT SELECT ... INTO TABLE 8x más rápido SELECT sin WHERE Siempre usar WHERE Evita full table scan SELECT dentro de LOOP SELECT FOR ALL ENTRIES Reduce accesos a DB INSERT/UPDATE en LOOP INSERT/UPDATE ... FROM TABLE 1 acceso vs N accesos...

Acceder a esta publicación

Creado y Compartido por: Mara Fadua Romero Hernandez

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

Introducción: La performance en ABAP se centra en tres pilares: tiempo de acceso a BD, lógica ABAP y carga del sistema. ¡Domina las buenas prácticas para evitar cuellos de botella en programas críticos! Diagnóstico: Transacción SE30 Herramienta clave: Analiza distribución de tiempos: Base de datos (Mayor impacto) Lógica ABAP Sistema SAP Objetivo ideal: Minimizar tiempo de BD (< 30%) Maximizar eficiencia en lógica ABAP Malas Prácticas en Acceso a BD SELECT * Problema: Recupera campos innecesarios. Solución:...

Acceder a esta publicación

Creado y Compartido por: Oscar Aravena Muller / Disponibilidad Laboral: FullTime

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert



La performance en ABAP dentro del ecosistema SAP es un tema fundamental para garantizar la eficiencia, escalabilidad y estabilidad de los sistemas empresariales. ABAP (Advanced Business Application Programming) es el lenguaje de programación principal del sistema SAP ERP, utilizado para desarrollar aplicaciones de negocio críticas que deben procesar grandes volúmenes de datos con alta confiabilidad. La performance en este contexto hace referencia al tiempo de ejecución, consumo de recursos y optimización de procesos dentro del entorno SAP. Este resumen aborda en 1000 palabras exactas los principios, prácticas y consideraciones clave para mejorar la performance en programación ABAP. La performance...

Acceder a esta publicación

Creado y Compartido por: David Ibarra / Disponibilidad Laboral: FullTime + Carta Presentación

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


La performance en ABAP 1 La performance en ABAP Se refiere al rendimiento y la eficiencia con la que se ejecuta el código. Es un aspecto fundamental, ya que un mal desempeño puede afectar no solo la ejecución de un programa, sino el funcionamiento general del sistema SAP. Existen tres aspectos clave que determinan la performance de un programa ABAP: Tiempo de procesamiento de la lógica ABAP: Se refiere al tiempo que toma ejecutar las instrucciones y procesos internos del programa. Tiempo de acceso a la base de datos: Es el tiempo necesario para consultar, insertar, modificar o eliminar datos en las tablas del sistema. Este es el factor que más influye en el rendimiento,...

Acceder a esta publicación

Creado y Compartido por: Geovanny Martínez Campoverde

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

Performace en ABAP en abap existe buenas y malas practicas, por que afectan rendimiento o performance (analisis de desempeño y rendimiento) de programas o otros factores tiene que ver con 3 aspectos base: *el tiempo de proceso de la logica *tiempo de proceso de accesos a tablas de database *tiempo de proceso de sistema SAP el tiempo de procesamiento a las tablas es el que mas consume recursos la transaccion SE30 Analisis de tiempo de ejecucion permite evaluar la distribucion del tiempo en un programa: en la pantalla principal se pone nombre del prog a evaluar buenas y malas practicas en accesos a la base de datos evitar usar SELECT * es mejor especificar los campos evitar SELECT ENDSELECT es mejor usar INTO TABLE evitar SELECT...

Acceder a esta publicación

Creado y Compartido por: Luciano Martinez / Disponibilidad Laboral: FullTime + Carta Presentación

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


Dentro de la programación en ABAP podemos identificar cuáles son las buenas y las malas prácticas de programación, desde el punto de vista de la performance de nuestros desarrollos. Es sumamente importante tener bien claro que prácticas son desaconsejadas y cuales si son recomendadas, de modo de poder apuntar a realizar programas de alta calidad, que funcionen perfectamente en el ambiente productivo, donde las tablas de la base de datos contienen millones de registros y cada micro segundo cuenta. ABAP nos proporciona una herramienta muy útil e interesante para el análisis de la performance que es la transacción estándar ST05 Tips and Tricks. Allí veremos que los tiempos de...

Acceder a esta publicación

Creado y Compartido por: Jose Medina / Disponibilidad Laboral: FullTime + Carta Presentación

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

LA PERFORMANCE EN ABAP: en ABAP existen lo que en programación se denomina buenas y malas prácticas, ya sea porque afectan al rendimiento o la performance de los programas o porque afectan a otros factores que son determinados como ser la reutilización y el mantenimiento de código. Cuando hablemos de performance nos estaremos refiriendo al análisis del desempeño y el rendimiento del programa ABAP. Dentro de ABAP podemos decir que la performance de un programa tiene que ver con 3 aspectos fundamentales que son los siguientes: - El tiempo de procesamiento de la lógica ABAP existente en el programa. - El tiempo de procesamiento de los accesos a las tablas de la base de datos. - El tiempo de procesamiento...

Acceder a esta publicación

Creado y Compartido por: Jean Carlos Lopez / Disponibilidad Laboral: FullTime

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


Performance in ABAP Performance refers to the analysis of the execution and efficiency of ABAP programs. In this analysis, there are three fundamental aspects: The processing time of the program logic. The processing time of accesses to database tables. The processing time of the ABAP system. Of these three times, the most resource-consuming one is the processing time of accesses to database tables, followed by the processing of logic, and finally the processing of the ABAP system. For this analysis, we have the transaction SE30, which evaluates how the execution and processing time of the program are distributed. To do this, upon entry, the name of the program is indicated, and the Evaluate button is pressed. This will show us...

Acceder a esta publicación

Creado y Compartido por: Jaime Eduardo Gomez Arango / Disponibilidad Laboral: FullTime + Carta Presentación

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

Performance en ABAP El performances refiere a el análisis del desempeño y el rendimiento del programa ABAP. En este análisis existe los siguiente 3 aspectos fundamentales: * El tiempo de procesamiento de la lógica del programa. * El tiempo de procesamiento de los accesos a las tablas de las bases de datos. * El tiempo del procesamiento del sistema ABAP. De estos 3 tiempos, el que más recursos consume es el tiempo de procesamiento de los accesos a las tablas de bases de datos, luego esta el procesamiento de la lógica y finalmente el procesamiento del sistema ABAP. Para este análisis contamos con la transacción SE30 que evaluar cómo se distribuye el tiempo de ejecución y procesamiento...

Acceder a esta publicación

Creado y Compartido por: Linda Carolina Zambrano León

 


 

👌Genial!, estos fueron los últimos artículos sobre más de 99.000 publicaciones académicas abiertas, libres y gratuitas compartidas con la comunidad, para acceder a ellas le dejamos el enlace a CVOPEN ACADEMY.

🔎Buscador de Publicaciones:

 


 

No sea Juan... Solo podrá llegar alto si realiza su formación con los mejores!