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

 X 

✒️ABAP La performance en ABAP

ABAP La performance en ABAP

ABAP La performance en ABAP

Vídeo - Performance en ABAP

1 Performance en ABAP

Vemos un vídeo donde identificaremos cuáles 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 qué prácticas son desaconsejadas y cuáles si son recomendadas, con el fin de realizar programas de alta calidad y que funcionen perfectamente en el ambiente productivo, donde las tablas de la base de datos contienen millones de registros y cada micro segundo cuenta.

En ABAP existe lo que en programación se denominan buenas y malas prácticas, ya sean porque afectan a la performance de los programas, o porque afectan a otros factores determinantes como puede ser la reutilización del código. En esta ocasión nos vamos a centrar en la performance de los programas.

Cuando hablamos de performance nos estamos refieriendo 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.

<< Imagen 0:50 >>

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"

<< imagen 1:27 >>


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.

<< imagen 1:33 >>

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

<< imagen 2:04 >>

Ahora vamos a seleccionar la opción "Select with select list" en la lista de ejemplos de la izquierda. Aquí vemos 2 códigos ABAP que utilizan la sentencia SELECT-END SELECT (totalmente desaconsejada), de modo que el de la izquierda realiza un "Select *", mientras que el de la derecha especifica los campos a seleccionar.

Medimos su performance ejecutando el botón "Medir tiempo de ejecución", y verificamos que especificar los campos al seleccionar es mucho más eficiente que realizar un "Select *" en el cual seleccionamos todos los campos y que muchas veces puede ser innecesario.

<< imagen 2:58 >>

Seleccionamos la carpeta "Array Operations (Tablas internas)" y seleccionamos la opción "Select into Table". Vemos dos códigos ABAP. El de la izquierda realiza un SELECT-END SELECT y por cada vuelva 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.

Comprobamos el performance de ambas, y resulta que la utilización del SELET INTO TABLE es altamente conveniente, ya que es prácticamente 7 veces más eficiente desde el punto de vista del performance.

<< imagen 3:43 >>


Seleccionamos ahora dentro de la misma carpeta "Array Operations (Tablas internas)", el elemento "Array Insert vs Insert de un solo registro". Nos muestra dos códigos ABAP. En el de la izquierda recorremos una tabla interna y por cada registro realizamos un INSERT, mientras que el códgio de la derecha evitamos recorrer la tabla interna utilizando la sentencia "INSERT FROM TABLE".

<< imagen 4:19 >>

Si bien el resultado arrojado para ambas sentencias SELECT es de 0 microsegundos, la opción de la derecha es altamente recomendable.


Seleccionamos ahora dentro de la misma carpeta "Array Operations (Tablas internas)", el elemento "Arragy-Select vs Select-EndSelect". Nos muestra dos códigos BAP. A la izquierda realiza un "SELECT INTO TABL" y después recorre la tabla interna con un LOOP. A la derecha ejecuta el "SELECT-ENDSELECT".

La performance de ambas sentencias arroja que no es conveniente la ejecución de la sentencia SELECT-ENDSELECT, siendo siempre más aconsejable el "SELECT INTO TABLE"

<<imagen 4:55 >>

Seleccionamos la carpeta "Internal Tables" (tablas intermedias), y dentro de esta el elemento "Using explicit work areas (usando estructuras explícitas". Nos muestra dos códigos ABAP. En el de la izquierda se realiza una asignación y luego un apend, mientras que en la derecha se realizan los dos pasos en uno solo sentencia. En cuanto al rendimiento, si bien el rendimiento es el mismo, es aconsejable evitar utilizar asignaciones innecesarias.

<< 5:33 >>


Seleccionamos dentro la carpeta "Internal Tables" (tablas intermedias), y el elemento "Linear search vs binary search (búsqueda lineal frente a búsqueda binaria". Nos muestra los dos códigos ABAP. El de la izquierda es de la búsqueda binaria, que lee cada registro de la tabla interna de forma secuencial hasta encontrar aquel que cumple la condición, y por otro lado la búsqueda binaria que divide en 2 el espectro de búsqueda hasta encontrar el registro buscado. El resultado indica que la búsqueda binaria es 20 veces más eficiente que la búsqueda lineal.

<< imagen 0:40 >>



Seleccionamos dentro la carpeta "Internal Tables" (tablas intermedias), y el elemento "Secondary índices (Acceso por clave a múltiples registros). Nos muestra dos códigos ABAP. El de la izquierda vemos un LOOP y dentro del mismo una condición, mientras que a la izquierda vemos un LOOP que tiene incorporada la condigión utilizando la cláusula "WHERE". Si ejecutamos la prueba de rendimiento, indica que es mucho más recomendable utilizar dentro de los LOOPS las condiciones de búsqueda a fin de restringir lo máximo posible el número de iteracciones a realizar


<< 1:07 >>



Accedemos ahora a la carpeta "Operaciones de Array", y dentro de esta la opción "Append de tablas". Nos muestra 2 códigos ABAP. En el de la izquierda se hace un LOOP a una tabla un APPEND a otra. En la segunda se realizan ambos pasos en una sola sentencia utilizando la función "APPEND LINES OF". Si vemos la performance de ambas sentencias, comprobamos que es altamete recomendable utilizar la sentencia "APPEND LINES OF"

<< imagen 1:44 >>



De nuevo dentro de la carpeta "Operaciones de Array", seleccionamos la opciónn "Inserción de tablas". En el código de la izquierda se recorre una tabla interna y se inserta cada regisro de esta en otra tabla interna, mientras que en la derecha se realizan ambas operaciones a la vez mediante la instrucción INSERT LINES OF. La performance indica que es mucho más aconsejable utilizar la opción de la derecha.

<< imagen 2:12 >>



De nuevo dentro de la carpeta "Operaciones de Array", seleccionamos la opción "Borrado de duplicados". En el código de la izquierda se emplea una combinación de sentencias para borrar los duplicados en la tabla interna, sin embargo en la derecha se hace todo en una instrucción utilizando "DELETE ADJACENT DUPLICATES FROM". Vemos que es mucho mejor utilizar la opción de la derecha que la de la izquierda para borrar registros duplicados de una tabla interna.

<< imagen 2:35 >>




De nuevo dentro de la carpeta "Operaciones de Array", seleccionamos la opción "Borrado de duplicados". En el código de la izquierda se utiliza un LOOP para recorrer una tabla interna y hacer un APPEND en otra tabla interna. En el código de la derecha se realiza una asignación directa del contenido de la tabla 1 a la tabla 2. Para ello ambas tablas deben ser iguales. El performance indica que sin duda la asignación entre tablas internas es más eficiente que reaalizar el recorrido e inserción.

<< imagen 3:13 >>


De nuevo dentro de la carpeta "Operaciones de Array", seleccionamos la opción "Comparing internas tables". En el código de la izquierda se recorren ambas tablas internas en línea para establecer si son iguales o no. En cambio en la derecha se utiliza la compración directa. Comprobamos que la comparación directa es muy superior desde el punto de vista del performance.

<< imagen 3:40 >>


De nuevo dentro de la carpeta "Operaciones de Array", seleccionamos la opción "Ordenamiento de tablas internas". En el código de la izquierda se utiliza una ordenación de tabla interna sin especificar el campo de ordenación, mientras que en el código de la derecha se utiliza un campo clave para realizar la ordenación. Comprobamos que es sumamente recomendable utilizar la ordenación por clave.

<< imagen 4:10 >>


Accedemos ahora a la carpeta "Typing", y dentro de esta seleccionamos el elemento "Tiped vs untiped Parameters (Parámetros con tipo vs Parámetros sin tipo)". En la declaración de la subrutina UP1 de la izquierda, no se especifican los tipos de los parámetros, mientras que en la declaración de la subrutina UP2 de la derecha, si se especifican los tipos de los parámetros. Vemos la performance de ambas y comprobamos que siempre es conveniente especificar los tipos en las declaraciones de las subrutinas, aunque la diferencia no es muy elevada.

<< imagen 4:37 >>


Accedemos ahora a la carpeta "If, Case", y dentro de esta seleccionamos el elemento "If vs Case". En el código de la izquierda se especifican condiciones con "If", mientras que en la derecha se especifica la misma condición con "Case". Comprobamos que es levemente más conveniente utilizar la declaración utilizado la sentencia "Case" para condiciones con muchas opciones.

<< imagen 5:07 >>


Accedemos ahora a la carpeta "Field Convertion (Conversión de campos)", y dentro de esta seleccionamos el elemento "Mixed Types (Tipos mixtos)". En la izquierda nos muestra una multiplicación de dos variables de distinto tipo cuyo resultado se almacenará en un tercer tipo distinto. En la derecha se realiza la multiplicación de 2 variables y asignación a una tercera, siendo todas ellas del mismo tipo. El performance al ejecutar el botón "Medir tiempo ejec", nos indica que es más conveniente utilizar variables del mismo tipo a la hora de realizar operaciones aritméticas.

<< imagen 5:51 >>


Una de las grandes opciones de esta transacción es que nos permite guardar en archivo los códigos de test que ejecutamos (mediante la opción "Grabar como fichero local").

También nos permite testear el código que nosotros mismos desarrollemos, escribiendo directamente el código en la pantalla y presionando el botón de tiempos.

De vuelta a la pantalla inicial de la transacción SE30, vemos que la transacción nos permite evaluar como se distribuye el tiempo de procesamiento de un programa ABAP. Para ello basta con seleccionar el programa en el campo correspondiente, ejecutarlo mediante el botón "Ejecutar":

<< imagen 6:35 >>


Y una vez ejecutado presionar el botón "Evaluar":

<< imagen 6:37 >>


El sistema nos mostrará finalmente una gráfica con los resultados de la evaluación.

<< imagen 6:41 >>





Audio: Los tiempos de procesamiento de un programa ABAP se dividen entre: ABAP, la base de datos y el sistema.
De estos tres ítems el que debemos tener en cuenta principalmente cuando evaluamos el 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 con los otros dos porcentajes, los tiempos de duración del programa se irán por las nubes.
La situación ideal es que el procentaje 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 utilización de la performance que vimos en esta lección.


 

 

 

2 Agradecimientos:

Han agradecido este aporte: Rafael Guzman Munoz, Eric Rivas Rivas

Favorito:

Está publicación ha sido agregada a sus favoritos por: Lorena Amoretti


Sobre el autor

Publicación académica de José Antonio Saavedra Rodríguez, en su ámbito de estudios para la Carrera Consultor ABAP.

SAP Expert


✒️+Comunidad Académica CVOSOFT

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

SAP Master

PERFORMANCE EN PROGRAMACION ABAP El performance de un programa es el analisis del desempeño y rendimiento de un programa, para esto se va a trabajar con una herramiento de SAP estandar que es sumamente util para el analisis de la performance, esta es la transacción SE30. El objetivo del performance es poder realizar programas de alta calidad, que funcionen perfectamente en el ambiente productivo, que es donde las tablas de las bases de datos contienen millones de registros y cada micro segundo cuenta. Los tiempos de procesamiento de ABAP se dividen en tres: La base de datos, Abap y el sistema, de estos 3 item debemos tomar en cuenta en cuanto a la performance es la base de datos ya que este es el que mas recursos consumen y...

Acceder a esta publicación

Creado y Compartido por: Jesus Enrique Ramos Bello / Disponibilidad Laboral: FullTime + Carta Presentación

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

SAP Senior

En ABAP existen las buenas y malas practicas porque afectan a la performance de los programas o a la reutilización del código. Performance de los programas Performance: Analisís del desempeño y el rendimiento del programa. - Usaremos la transax. SE30 - presionamos el boton Tips & Tricks - Analizaremos las diferentes prácticas de la programación ABAP - En 2 paneles se compararán fragmentos de código. Los tiempos de procesamiento de un programa ABAP se dividen en 3: ABAP, BD y Sistema. De estos tres items el que debemos tener en cuenta principalmente cuando evaluamos la performance es el tiempo de la BD ya que este es el que mas recursos consumen y por consiguiente es el que mas...

Acceder a esta publicación

Creado y Compartido por: Jesus German Cavazos Elizondo

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

SAP Senior

Performance en abap presionamos el boton trips & tricks y podremos ver carpetas que contienen codigos donde prodremos comparar el performance de ambos codigos. a si podremos saber cuales son las mejores practicas de codigicacion.

Acceder a esta publicación

Creado y Compartido por: Luis Eugenio Leyva Orozco

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

SAP Senior

Performance en ABAP En ABAP existen buenas y malas practicas sea por que afectan a los Performance de los programas o por que afectan a otros factores determinantes como es la utilización de código. Performance de los programas - se trata del análisis del desempeño y rendimiento del programa. Utilizamos la transacción SE30 para ver las Performance. Una vez dentro pulsamos el botón Tips & Tricks. Abrimos la carpeta SQL Interface y seleccionamos Select aggregates. Vamos a ver dos códigos distintos que dan el mismo resultado. Para evaluar la performance pulsamos el botón Medir tiempo ejecución. Hacemos lo mismo con Select with select list. Aquí podemos ver que especificando...

Acceder a esta publicación

Creado y Compartido por: Ana Schiau

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

SAP Senior

VIDEO - PERFORMANCE EN ABAP Performance en ABAP El objetivo de esta lección es 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 BD contienen millones de registros y cada micro segundo cuenta. Los tiempos de procesamiento de un programa ABAP se divide entre ABAP, la BD y el Sistema, de estos tres items el q debemos tener en cuenta principalmente cdo evaluamos la performance es el tiempo de la BD ya q esté es el q más recurso consume y por consiguiente es el q más tiempo requiere, cdo más alto sea el porcentaje del procesamiento de...

Acceder a esta publicación

Creado y Compartido por: Mayra Maria Pino Rodriguez

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

SAP Master

Cuando Hablamos de performance nos referimos al desempeño del programa, para poder analizar la performance podemos utilizar la transacción SE30 por el botón TIPS & TRICKS donde nos orienta con cuales de las sentencia que son aconsejables utilzar. Los tiempos de procesamiento de un programa ABAP se dividen en tres: ABAP ,la base de datos y el sistema, de los tres el que mas consume recursos es el de la base de datos y es con el que tenemos tener mas cuidado.

Acceder a esta publicación

Creado y Compartido por: William Alejandro Lemus

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

SAP Senior

Performance en ABAP Para verificar el performance ingresamos a la TX SE30, Aqui presionamos Tips & Tricks en la cual nos recomiendan buenas practicas, nos daran los puntos en el cual podemos programar en ABAP de diferentes manera, y ver su performance, y podemos ver el el tipo de ejecucion. Tiempos de procesamiento se dividen en 3: ABAP: Debe ser lo más ALTO posible BBDD: Debe ser lo más BAJO posible. A tener en cuenta para la performance ya que es lo que más tpo requiere. SISTEMA:

Acceder a esta publicación

Creado y Compartido por: Ruben Dario Martucci / Disponibilidad Laboral: FullTime

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

SAP Senior

lección 8/9: Video - Performance en ABAP Accedemos a la transacción SE30 clicamos en el botón tips & tricks acáveremos carpetas que contienen archivos con código de consultas en SQL que podremos comparar la performance de ambos códigos (el resultado nos indicara en microsegundos), por sentido comun sabremos que el que tarda menos tiempo en ejecutarse sera el de mayor performance, de tal manera podremos saber cuál es la mejor práctica para desarrollar.

Acceder a esta publicación

Creado y Compartido por: Ruben Santiago Cuenca Balanza / Disponibilidad Laboral: FullTime + Carta Presentación

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

SAP Expert


PERFORMANCE EN ABAP – LECCION 7-8 PERFORMANCE, cuando hablamos de performance nos referimos al análisis de desempeño de un programa o transacción, para medir la performance de un programa o transacción realizaremos pruebas de rendimiento NOTA, los tiempos de procesamientos de un programa ABAP, se dividen entre ABAP, la base de dato y el sistema, de estos tres ítems el que debemos tener en cuenta principalmente cuando evaluamos la performance, es el tiempo de la base de dato ya que 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 dato en comparación a los otros dos porcentajes,...

Acceder a esta publicación

Creado y Compartido por: Cristian Darwin Arteaga Diaz / Disponibilidad Laboral: FullTime + Carta Presentación

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

SAP Expert


Performance en ABAP Se refiere al rendimiento de cualquier programa ABAP y en está lección nos explican a evaluarlo mediante la transacción SE30-siendo ésta una transacción antigua, ahora reemplazada por la transacción SAT que tiene más funcionalidades-además existen otras herramientas para poder evaluar la performance ABAP como el code inspector, ST05, ST12. La idea para mejorar la performance de nuestros programas ABAP es reducir el número de accesos a la base de datos.

Acceder a esta publicación

Creado y Compartido por: José Luis Zevallos Mamani

 


 

👌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!