🚀PROMO #PLANCARRERA2024 - 🔥Bonificaciones, Precios Congelados y Cuotas

 X 

✒️ABAP La performance en ABAP

ABAP La performance en ABAP

ABAP La performance en ABAP

Performance en ABAP.

En ABAP existe lo que en programación se denominan buenas y malas prácticas. En esta ocasión nos vamos a centrar en la performance de los programas.

Cuando hablamos de performance nos estamos refiriendo al análisis del desempeño y rendimiento del programa. Para ello vamos a trabajar con una transacción estándar de SAP que es sumamente útil para el análisis del performance. Nos referimos a la transacción SE30.

Una vez que ingresamos en la transacción presionamos el botón "Tips & Trics" (F6). Aquí vamos ir analizando las diferentes prácticas de programación ABAP con las que trabajamos a lo largo del módulo de estudio, para poder determinar cuáles son buenas y debemos seguir utilizando y cuales son malas y debemos dejar de utilizar.

Al presionar nos aparece una ventana con varias carpetas de ejemplos en función del objeto al que queramos medir el rendimiento. Empezamos abriendo la carpeta "Interfaz SQL" y seleccionamos la opción "Agregados del Select" o "Select aggregates"

Ahora vemos 2 códigos ABAP que realizan lo mismo de dos formas diferentes. El objetivo es obtener el máximo valor. El de la izquierda utiliza la sentencia SELECT-END SELECT totalmente desaconsejada desde el punto de vista del performance, mientras que en la derecha utiliza la sentencia SELECT MAX.

Para evaluar la performance de ambos códigos pulsamos el botón "Medir tiempo ejec", y verificamos lo mencionado anteriormente, mientras con el código del SELECT-END SELECT el sistema tarda 2739 microsegundos, utilizando el SELECT MAX max el sistema solo tarda 177 microsegundos. Por lo tanto, cuando tengamos que buscar el máximo valor en una tabla, debemos utilizar siempre el SELECT MAX

Del mismo modo se puede ir navegando por las distintas carpetas comprando y valorando tiempos.

Transacción SE30 --> Tips & Tricks -->

--> SQL Interfaces --> Agregados del SELECT: no utilizar el SELECT...ENDSELECT, no utilizar le SELECT *, sino especificar los campos a seleccionar.

--> Operaciones de Array (Tablas internas) --> Select Into Table: usar el SELECT INTO TABLE, no usar el SELECT...ENDSELECT con el APPEND

--> Operaciones de Array (Tablas internas) --> Array Insert vs Insert de un solo registro: es más recomendable la opción INSERT <Campo> FROM TABLE <tabla> que hacer un loop por cada registro.

--> Operaciones de Array (Tablas internas) --> Array Select vs Select-Endselect: desaconsejado el SELECT...ENDSELECT.

--> Tablas Internas --> Usando estructuras explícitas --> es recomendable no hacer asignaciones innecesarias.

--> Tablas Internas --> Búsqueda lineal vs Búsqueda Binaria --> la recomendada es la búsqueda binaria (divide en dos el espectro de búsqueda) a la lineal (lee cada registro de forma secuencial hasta encontrar el que cumple con la condición)

--> Tablas Internas --> Acceso por clave a múltiples registros --> es aconsejable incluir en los loop las condiciones de búsqueda de modo de restringir la cantidad de iteraciones a realizar.

--> Operaciones de Array --> Apendeo de Tablas --> es ampliamente recomendable el uso de APPEND LINES OF

--> Operaciones de Array --> Inserción de Tablas --> es recomendable usar INSERT LINES OF

--> Operaciones de Array --> Borrado de Duplicados --> el recomendable es DELETE ADJACENT DUPLICATES

--> Operaciones de Array --> Copiar Tablas Internas --> es más performante utilizar la asignación directa entre dos tablas (del mismo tipo) ITAB2[] = ITAB1[]

--> Operaciones de Array --> Comparación de Tablas Internas --> la comparación directa es más performante

--> Operaciones de Array --> Ordenamiento de Tablas Internas --> ordenas con y sin especificar el cambio de ordenamiento, es mucho más recomendable especificar el campo al utilizar el SORT

--> Tipos --> Parámetros con Tipos VS Parámetros sin Tipos --> siempre es recomendable especificar los tipos en las declaraciones de subrutinas.

--> If, Case... --> If VS Case --> es levemente más performante usar el CASE

--> Conversión de campos --> Tipos Mixtos --> es más conveniente trabajar con variables del mismo tipo al realizar con operaciones aritméticas.

VIDEO

Veremos un vídeo donde identificaremos cuales son las buenas y las malas prácticas de programación en ABAP desde el punto de vista de la performance de nuestros desarrollos.

El objetivo de esta lección es tener bien claro que prácticas son desaconsejadas y cuáles 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 base de datos contienen millones de registros y cada micro segundo cuenta.

En ABAP existe lo que en programación se denomina buenas y malas prácticas ya sea porque afectan a la performance de los programas o porque afectan a otros factores determinantes como son la reutilización del código en esta ocasión nos vamos a concentrar en la performance de los programas.

Cuando hablamos de performance nos estamos refiriendo al análisis del desempeño y rendimiento de programa para ello vamos a trabajar con una transacción estándar de SAP que es sumamente útil para el análisis de la performance, es decir, nos estamos refiriendo a la transacción SE30.

Una vez que ingresamos a la transacción presionamos el botón Tips & Tricks, aquí vamos a ir analizando las diferentes prácticas de programación ABAP con las que trabajamos a lo largo del módulo de estudios de modo de poder determinar cuáles son buenas y debemos continuar utilizando y cuales no son recomendables y debemos dejar de utilizarlas.

Empecemos abriendo la carpeta Interface SQL (SQL Interface) allí cliqueamos la opción Agregados del select(Select aggregates).

Aquí vemos dos códigos ABAP que realizan lo mismo de dos formas diferentes, el objetivo es tener el máximo valor, el de la izquierda utiliza la sentencia SELECT ENDSELECT totalmente desaconsejada desde el punto de vista de la performance y el de la derecha utiliza la sentencia SELECT MAX, para evaluar la performance de ambos códigos presionamos el botón medir tiempo de ejecución

Y verificamos lo que mencionamos anteriormente mientras que con el código del select endselect el sistema tarda 2739 Microsegundos utilizando el select max el sistema solo tarde 177 Microsegundos por tanto cuando tengamos que buscar el máximo valor en una tabla siempre utilicemos la opción de la derecha, es decir, el select max.

Ahora cliqueamos Selección con lista de selección (Select with select list)

Aquí vemos dos códigos ABAP si bien ambos utilizan la snetencia select endselect la cual esta totalmente desaconsejada, el de la izquierda realiza un select * mientras que el de la derecha específica los campos a seleccionar para evaluar su performance presionamos el botón Medir tiempo de ejecución.

Verificamos que especificar los campos a seleccionar es mucho más eficiente que realizar un Select * donde seleccionamos todos los campos que en muchos casos pueden ser innecesarios.

Ahora abrimos la carpeta Operaciones de Array(Tablas internas) (Array Operation).

Aquí seleccionamos Select into table, vemos dos códigos ABAP en el de la izquierda se realiza un select en select totalmente desaconsejado y por cada vuelta un append a una tabla interna En el de la derecha ejecutamos la sentencia select into table la cual insertará directamente los registros seleccionados en la tabla interna.

Veamos la performance de ambas comprobamos que la utilización del select into table es altamente conveniente ya que es prácticamente 7 veces más eficiente desde el punto de vista de la performance.

Ahora cliqueamos Array insert VS Single-row Insert (de un solo registro)vemos dos códigos a la izquierda recorremos la tabla interna y por cada registro realizamos un insert. A la derecha evitamos recorrer la tabla interna ejecutando la sentencia INSERT FROM TABLE. Veamos la performance de ambas opciones. Si bien el resultado arrojado para ambas es cero microsegundos la opción de la derecha es ampliamente recomendable.

Ahora seleccionamos Array-Select vs Select-Endselect

Aquí vemos dos opciones a la izquierda realizamos un select into table y luego recorremos la tabla interna con un loop y a la derecha ejecutamos el famoso select endselect tan desaconsejado por su mala performance.

Veamos la performance de ambas sentencias. comprobamos que no es conveniente la utilización del select endselect siempre es preferible el select into table.

Ahora abrimos la carpeta tablas internas( Internal tables), ahí cliqueamos usando estructuras explicitas (Using explicit work area) y vemos dos códigos en el de la izquierda se realiza una asignación y luego un append y en el de la derecha hacemos los dos pasos en uno solo.

Veamos la performance de ambos, si bien el resultado es el mismo es ampliamente recomendable evitar realizar asignaciones innecesarias.

Ahora seleccionamos Búsqueda lineal vs Búsqueda binaria(Linear search vs binary search)

Vemos por un lado la búsqueda lineal que lee cada registro de la tabla interna en forma secuencial hasta encontrar el que cumple con la condición y por otro la do la búsqueda binaria que divide en dos el espectro de búsqueda hasta encontrar el registro buscado.

Veamos la performance de amba, el resultado indica que la búsqueda binaria es 20 veces más eficiente que la búsqueda lineal.

Seleccionamos ahora Acceso por clave a múltiples registros.

Aquí se presentan dos alternativas a la izquierda vemos un loop y dentro del mismo una condición a la derecha vemos un loop que tiene incorporado la condición utilizando la clausula Where.

Veamos la performance de ambas, el resultado indica que es ampliamente recomendable incorporar dentro de los loops las condiciones de búsqueda de modo de restringir lo más posible la cantidad de iteraciónes a realizar.

Ahora abrimos la carpeta operaciones de array

Y seleccionamos la opción Appendeo de tablas ( Appending tables) vemos dos códigos en el de la izquierda se loopea una tabla interna y se appendea otra en el de la derecha se utilizan ambos pasos en uno solo utilizando la sentencia Append lines of.

Veamos la performance de ambas, comprobamos que es ampliamente recomendable la utilización de la sentencia append lines of.

Ahora seleccionamos la opción Inserción de tablas(Inserting tables).

En el código de la izquierda se recorre una tabla interna y se inserta cada registro de esta en otra tabla interna, en cambio a la derecha se realizan ambos pasos en uno solo utilizando la sentencia inset lines of

Veamos la performance de ambas opciones. Comprobamos que es sumamente recomendable utilizar la sentencia insert lines of.

Ahora seleccionamos borrado de duplicados (Deleting duplicates).

Aquí se presentan dos códigos la principal diferencia entre ambos es que en el de la izquierda se emplea una combinación de sentencias para borrar los duplicados de una tabla interna, en cambio en el de la derecha solo se utiliza la sentencia delete adjacent duplicates.

Veamos la performance de ambos, comprobamos que es ampliamente recomendable utilizar la sentencia delete adjacent duplicates para borrar registros de una tabla interna

Seleccionamos ahora copiar tablas internas(Copying internal tables)

Aquí se presentan dos opciónes, en la izquierda se loopea una tabla interna y se appendea cada registro en otra tabla interna, en cambio en la derecha se realiza una asignación directa del contenido de la tabla uno a la tabla dos, para ello ambas tablas deben ser iguales.

Veamos la performance de ambas, sin duda la asignacion del contenido de una tabla interna a otra del mismo tipo es ampliamente recomendable.

Seleccionemos ahora comparación de tablas internas(Comparing internal tables) En el código de la izquierda se recorren en el las tablas internas para establecer si son iguales o no, en cambio a la derecha se emplea la comparación directa.

Veamos la performance de ambas comprobamos que la comparación directa es totalmente superior en cuestiones de performance.

Seleccionamos ahora Ordenamiento de las tablas internas (Sorting internal tables)

Aquí vamos a comparar la diferencia que existe entre ordenar una tabla interna sin especificar el campo (izq)y especificando el campo de ordenamiento (der).

Veamos el performance de ambas sentencias, verificamos que es sumamente recomendable especificar el campo de ordenamiento de una tabla interna al ejecutar la sentencia sort

Ahora abrimos la carpeta tipos (Typing).

Y seleccionamos parámetros con tipo vs parámetros sin tipo (Typed vs untyped parameters) en la declaración de la subrutina UP1 de la izquierda no se especifican los tipos de los parámetros en cambio en la declaración de la subrutina UP2 de la derecha si se especifican el tipo de los parámetros.

Veamos la performance de ambas, comprobamos que siempre es conveniente específicar los tipos en las declaraciones de subrutinas.

Ahora abrimos la carpeta if vs case

Y seleccionamos is vs case vamos a verificar si es mas performante especificar condiciones con if o mediante case.

Comprobamos que es levemente más performante utilizar la sentencia case para condiciones con muchas opciones.

Ahora abrimos la carpeta conversion de campos ( field conv).

Y seleccionamos tipos mixtos (mixed types) aquí se presentan dos códigos a la izquierda vamos a multiplicar dos variables de distintos tipos cuyo resultado almacenaremos en una variable de un tipo distinto a las otras dos. En cambio a la derecha utilizamos tres variables del mismo tipo.

Veamos que es mas eficiente en cuestión de performance, resulta más conveniente trabajar con variables del mismo tipo al realizar operaciones aritméticas.

Ahora bien algo importante de esta transacción es que nos permite grabar en archivos los códigos de test que ejecutamos (Botón de hoja verde y blanca y flecha amarilla)

También nos permite testear el código que nosotros mismos desarrollemos simplemente escribiendo dicho código en la pantalla y presionando el botón de medición de tiempo.

Volvemos a la pantalla inicial de la transacción SE30

Por último la transacción nos permite evaluar cómo se distribuye el tiempo de procesamiento de un programa ABAP.

Para ello basta con ingresar el nombre del programa

Ejecutarlo

Y presionar el botón evaluar

Para finalmente ver los resultados en pantalla

Audio tip.

Los tiempos de procesamiento de un programa ABAP se dividen en tres:

  1. ABAP
  2. La base de datos
  3. Sistema

De estos tres ítems el que debemos tener en cuenta principalmente cuando evaluemos la performance es el tiempo de la base de datos ya que este es el que más recursos consume y por consiguiente es el que más tiempo requiere. Cuanto más alto sea el porcentaje del procesamiento de la base de datos en comparación a los otros dos porcentajes, los tiempo de duración del programa se irán por las nubes, la situación ideal es que el porcentaje del procesamiento ABAP sea lo más alto posible y el porcentaje de procesamiento de la base de datos sea lo más bajo posible. Para lograr esta situación deseada utilizaremos todas las técnicas de optimizacion de la perfomance que vimos en esta lección.


 

 

 

Agradecimiento:

Ha agradecido este aporte: Francisco Ortega Aguilar

Favorito:

Está publicación ha sido agregada a sus favoritos por: Francisco Ortega Aguilar


Sobre el autor

Publicación académica de Felipe Estepa Quintero, en su ámbito de estudios para la Carrera Consultor ABAP.

SAP Master

Felipe Estepa Quintero

Profesión: Tecnologo en Gestion Logistica - Colombia - Legajo: QH16V

✒️Autor de: 118 Publicaciones Académicas

🎓Egresado de los módulos:

Disponibilidad Laboral: FullTime

Certificación Académica de Felipe Estepa

✒️+Comunidad Académica CVOSOFT

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

SAP Senior

Performance ABAP. Performance: Nos referimos al análisis del desempeño de un programa o transacción. Buenas o malas practicas en el performance o utilización de otro código. Transacción estándar: SE30 para el performance dar clic en el botón Tips & Tricks. Verificar todas las carpetas para verificar el performan, seleccionamos un código y ahí damos clic en el botón Medir tiempo ejec. Permite grabar en archivo los códigos que se ejecutan. Permite testear el código que se escribe. Evaluar como se distribuye en tiempo de procesamiento de un programa ABAP. Ingresar el nombre del programa, ejecutar y presionar el botón evaluar.

Acceder a esta publicación

Creado y Compartido por: Rafael Razo

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

SAP Senior

PERFORMANCE Cuando hablamos de Performance nos referimos al analisis del desempeño de un programa o transaccion. Para revisar el performance ir a la transaccion SE30. una vez ahi presionar el boton Tips & Tricks aqui se van analizando las diferentes practicas de programacion ABAP para determinar cuales son buenas y cuales no son recomendables. Abrir la carpeta interface SQL seleccionar "Select aggregates" aqui vemos dos codigos abap que realizan lo mismo de dos formas diferentes el objetivo es obtener el maximo valor. para obtener la performance de ambos codigo presionamos el boton "Medir tiempo ejec." comparamos la diferencia en micro segundos de uno y otro. De la misma manera se van revisando y comparando los...

Acceder a esta publicación

Creado y Compartido por: David Camacho Espinoza

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

SAP Senior

Performance en ABAP

Acceder a esta publicación

Creado y Compartido por: Luis Manuel Olivier Melo

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

SAP Master

PERFOMANCE. La transacción SE30 es util para el analisis y el performance de un programa, utilizando el botón trips & tricks. Aqui vamos analizando las diferentes practicas de programación ABAP que utilizamos. Para medir el performance hacemos clic en el botón medir tiempo ejec y verificamos el tiempo de ejecución.

Acceder a esta publicación

Creado y Compartido por: Maria Ysabel Colina De Magdaleno

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

SAP Senior

Al igual que en otros lenguajes de programación el performance cumple un rol importante en la calidad de nuestro codigo pero hay que tomar en cuenta que mientras mas facil es para el programador desarrollar una solucion de menor performance sera.

Acceder a esta publicación

Creado y Compartido por: Faharid Manjarrez

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

SAP Master

Performance en ABAP Performance de los programas. se refiere al análisis del desempeño y rendimiento los programas para ello trabajaremos con la transacción SE30 presionamos el botón TIPS and TRICKS (F6) para determinar las practicas que son buenas y cuales no son recomendables y debemos dejar de utilizarla. Los tiempos de procesamiento entre un programa ABAP se divide entre ABAP, la base de datos y el sistema. El principal para evaluar la performance es el tiempo de la base de datos ya que es el que más recurso consume y más tiempo requiere, mientras más alto sea el porcentaje de procesamiento de la base de datos en comparación de los otros dos porcentajes, los tiempos de duración...

Acceder a esta publicación

Creado y Compartido por: Jeferson José Peña Curvelo

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

SAP Senior

Performance de los programas: es el analisis del desempeño y rendimiento del programa, para ello vamos a trabajar con una transaccion estander se sap que es sumamente util para el analisis de la performance TX:SE30

Acceder a esta publicación

Creado y Compartido por: Cristian Merlo

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

SAP Senior

Los tiempos de procesamiento de un programa ABAP se dividen entre ABAP , la base de datos y el sistema, el que demos de tomar en cuenta principalmente es el tiempo de la base datos, ya que este es el que mas recursos consume y por consiguiente mas tiempo requiere, cuando mas alto sea el porcentaje del procesamiento de la base de datos en comparacion a los otros dos procentajes los tiempos de duracion del programa se iran por las nubes,lo ideal es que el procentaje de procesamiento ABAP sea lo mas alto posible y el procesamiento de la base de datos sea el mas bajo posible, para lograr esto utilizaremos todas las tecnicas de optimizacion de performance.

Acceder a esta publicación

Creado y Compartido por: Marco Antonio Vazquez Gonzalez

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

SAP Master

La transacción que se usa para analizar la performance de los programas abap es la SE30 En esta transacción se usa la opción : Tips & Tricks

Acceder a esta publicación

Creado y Compartido por: Juan Carlos Ayala Chira

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

SAP Master

*****************Performance en ABAP [ 8º de 8 ] La Performance es un elemento en Sistemas que tiene mucha importancia y a veces no nos damos cuenta que, con pequeños cambios en la forma de programar, podemos lograr que mejore muchísimo, aunque estemos hablando de tiempos en microsegundos. Para poder verificar la Performance de un Programa, se puede entrar a la Trx SE30 y ejecutarlo, obteniendo un análisis de los tiempos insumidos. Una forma más detallada es viendo con distintas alternativas de codificación, como cambian los tiempos consumidos. 1) Buscar Valor Máximo. Recomendable SELECT MAX. 2) SELECT con especificación de campos a recuperar. 3) SELECT INTO TABLE. 4) INSERT FROM TABLE....

Acceder a esta publicación

Creado y Compartido por: Jose Angel Valles Bustos

 


 

👌Genial!, estos fueron los últimos artículos sobre más de 79.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!