Está en la página 1de 140

Practical Visionaries

Workshop Performance
Formación: Mejora de rendimiento de Procesos ABAP

Confidential // Neoris 1
Confidential // Do Not Reproduce without prior written permission from Neoris
Con qué nos podemos encontrar?

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 2
La base de una buena performance se basa en la escalabilidad

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 3
Contenido

BLOQUE 1:
Revisión herramientas de análisis de rendimiento

January 07

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 4
Roadmap ...
PRODUCTION TESTING DEVELOPMENT

Workload Monitor (ST03N)

Database Monitor (ST04)

Where-used list (SE11)


Work process overview (SM50-SM66)

OS Monitoring (ST06)

User List (SM04)

SQL Trace (ST05)


ABAP Runtime Analysis (SAT - SE30)
Statisticals records (STAD – STAT - STATTRACE)
Coverage Analyzer (SCOV)
Code Inspector (SCI)
Test sobre 1 proceso Extended Program Check (SLIN)
Test multiproceso ABAP Debugger
ABAP Unit

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 5
Transacción ST03N (Workload Analysis)

MODO

SELECCIÓN

SELECCIÓN

ANÁLISIS

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 6
Transacción ST03N (Workload Analysis)
TIPO DE TAREA

TRANSACTION ORDENAR POR TIEMPO MEDIO DE RESPUESTA (DESCENDENTE)


PROFILE
• High CPU time = Sentencias ABAP pesadas
 
• High Database request time = Sentencias SQL pesadas, indices perdidos, baja calidad buffer
 
• High load, or generation times = Buffers escasos (ST02)
 
• High roll wait time = cuello de botella entre GUI y servidor, alto volumen de datos
 
• Highelaborada
Neoris SAP Óptima: Documentación wait time
para=uso
Work process
exclusivo insuficientes
del grupo HC Energía. Reservados todos los derechos de copia 7
Transacción ST04 (DB performance analysis)

READs: Lecturas lógicas de bloques de


datos
Physical reads: Lecturas físicas

TAMAÑO Y CALIDAD DEL BUFFER > 95%

USER CALLS:
Número de sentencias SQL
enviadas a la BD

RATIO:
Lecturas realizadas /
sentencias SQL

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 8
Transacción ST04 (DB SQL Cache)

p.e., ordenar por Buffer gets (lecturas lógicas)

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 9
Transacción ST04 (DB SQL Cache)

St04.exe

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 10
Transacción SE12 (Where-used list)

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 11
Table buffering

Tr. SE12 (SE11)

Cláusula SELECT:
SELECT .. BYPASSING
BUFFER

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 12
Transacción SM51 (SAP Servers)

Tr. SM50

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 13
Transacción SM50 (snapshot analysis)

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 14
Transacción SM66 (SystemWide Work process)

Ordenado por TIME

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 15
Transacción ST06 (Operating System Monitor)

REFRESCAR (actualizado por SAPOSCOL


cada 10 sg.)

Utilization:
- user % - procesos SAP.
- system % - procesos del sistema.
- idle % - no utilizado.

Count: número de procesadores.

Load average: número medio de procesos


de trabajo en espera de un procesador
libre.

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 16
Transacción ST06 (Operating System Monitor)

TOP CPU

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 17
Transacción ST06 (Operating System Monitor)

ORDENADO POR
CPU UTIL.

PROCESO ORACLE

WORK PROCESS

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 18
Transacción SM04 (Lista de usuarios)

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 19
Transacción SM04 (Lista de usuarios)

ORDENADO POR MEMORIA


“PRIV” (descendente).

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 20
Transacción ST05 (SQL Trace)

ST05

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 21
Transacción ST05 (SQL Trace)

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 22
Transacción ST05 (SQL Trace)

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 23
Transacción ST05 (SQL Trace)

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 24
Transacción ST05 (SQL Trace)

REOPEN

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 25
Transacción ST05 (SQL Trace)

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 26
Estrategias de acceso

• Index Unique Scan


• Índice Primario es especificado completamente

• Index Range Scan


• Índice Primario no esta completo
• Índice secundario que trae mas de un registro

• Full Table Scan


• No se utilizan índices
• Se leen todos los bloques de la tabla

• Concatenation
• Índices se utilizan mas de una vez en la consulta
• Por ej al utilizar OR ó IN en WHERE

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 27
Bloques de datos (índice y tablas)

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 28
Ejemplo INDEX UNIQUE SCAN

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 29
Ejemplo INDEX RANGE SCAN (eficiente)

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 30
Ejemplo INDEX RANGE SCAN (Ineficiente)

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 31
Ejemplo CONCATENATION

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 32
Ejemplo FULL TABLE SCAN

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 33
FULL TABLE SCAN Vs INDEX RANGE SCAN

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 34
Transacción ST05 (SQL Trace)

TraceUnique.exe

TRACERANGE.exe

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 35
Transacción ST05 (SQL Trace)

EDITOR ABAP

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 36
Transacción ST05 (SQL Trace)

RESUMEN DE SENTENCIAS SQL

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 37
Transacción ST05 (SQL Trace)

RESUMEN POR TABLAS

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 38
Transacción ST05 (SQL Trace)

SENTENCIAS SQL DUPLICADAS

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 39
Transacción ST05 (SQL Trace)

Valores a analizar (criterios SAP):

• Revisar accesos más costosos (Statement Summary y Summary).

• Evitar sentencias idénticas (Identical Selects)

• Operaciones SQL >= 200.000 ms.

• Sentencias SQL >= 10 Fetches.

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 40
Transacción SE30 - SAT (ABAP Trace)

TIPS & TRICKS

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 41
Transacción SE30 - SAT (ABAP Trace)

TIPS & TRICKS

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 42
Transacción SE30 - SAT (ABAP Trace)

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 43
Transacción SE30 -SAT (ABAP Trace)

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 44
Transacción SE30 -SAT (ABAP Trace)

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 45
Transacción SE30 - SAT (ABAP Trace)

DINÁMICO:

ESTÁTICO:

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 46
Transacción SE30 - SAT (ABAP Trace)

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 47
Transacción STAT/STAD/STATTRACE

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 48
ABAP Debugger

Tablas internas extensas -> Consumen en exceso memoria y CPU

ENTRADAS

Chequear uso de sentencias


FREE, REFRESH
MEMORIA UTILIZADA:
ENTRADAS
X
LONGITUD LONGITUD

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 49
ABAP Debugger, visualización y capturas de memoria

Generamos una instantanea de


memoria con \hmusa

Analizamos instantaneas con


Memory Inspector (SMI)

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 50
ABAP Program Extended Syntax Check

Transacción SE38

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 51
ABAP Program Extended Syntax Check

Transacción SLIN

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 52
ABAP Program Extended Syntax Check

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 53
ABAP Program Extended Syntax Check

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 54
Tr. SCI, versión de SAP R/3 válidas

• Transacción Estándar con la release 4.7 (Sap Web AS). Se puede


instalar en versiones anteriores con la aplicación de órdenes de
transporte.

• Métodos para acceder al Code Inspector:

Transacción SE24:
Class  check  Code Inspector
Transacción SE38:
Program  check  Code Inspector
Transacción SE37
Function module  check  Code Inspector
Directamente:
Transacción SCI.

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 55
Check Variant

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 56
Check Variant

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 57
Check Variant, ayuda

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 58
Análisis de resultados

Para analizar los resultados de la inspección se debe pulsar el botón

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 59
Análisis de resultados

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 60
Análisis de resultados

Estadísticas de la ejecución de una inspección

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 61
Análisis de resultados

doble-click Navegación a código ABAP

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 62
Chequeos a tener en cuenta!!!

• No existe condición WHERE en sentencia SELECT


• No se ha especificado en la cláusula WHERE el primer
campo de ningún índice de una tabla de la BD
• Campos del índice no utilizan condiciones positivas
(EQ, BT, GE…) -> FULL SCAN
• Tablas accedidas muy grandes? (Categoría >= 2)
• Accesos a tablas con buffer, las sentencias están
salteando el buffer?
• BYPASSING BUFFER, SELECT COUNT, MAX,
DISTINCT, GROUP/ORDER BY, JOINs
• Accesos secuenciales a tablas internas
• Buffer activado para tablas grandes o transaccionales

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 63
ABAP Units, pasos.

OBJETIVOS: Poder ejecutar unidades de modularización simples (rutinas,


métodos, módulos de función) de un programa bajo condiciones de
verificación conocidas

PASOS:
1.- Definir en el programa una clase local con la extensión FOR TESTING.
2.- Definir al menos un método en dicha clase sin parámetros
y con la extensión FOR TESTING.
3.- Implementar el código de testeo dentro de la clase anterior
y verificar estados esperados, utilizando métodos de la clase
CL_AUNIT_ASSERT.

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 64
Clase CL_AUNIT_ASSERT

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 65
Ejemplo de programa principal

Deseamos crear una unidad de verificación de la rutina “descuento”.

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 66
Ejemplo de clase local de verificación

El método implementado en el ejemplo verifica que para una


entrada conocida (valor 200) el resultado esperado debe ser
180.

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 67
Ejecucion de la verificación de unidades (ABAP Units)

La verificación de unidades se realiza a través de la opción de menú


“Program  Test  Unit Test”
Si todas las verificaciones son correctas, nos aparecerá un mensaje
informativo en la misma pantalla:

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 68
Forzando el error ...

Para forzar un error se modifica la rutina “descuento” para que los


resultados esperados de la unidad de verificación no sean válidos.
En esta nueva situación, nos aparece
la siguiente pantalla:

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 69
Coverage Analyzer ...

¿Transacción? SCOV (analizador de coberturas)

¿Para que sirve?

En esencia, el C.A. cuenta el número de veces que un programa, y


sus unidades de modularización internas se ejecutan para un
período de tiempo determinado. También almacena el número
de errores que se producen por cada unidad de modularización.

Posibilidades y características:

- Permite identificar código “muerto” (unidades nunca


ejecutadas).
- Descubrir trozos de código que son ejecutadas frecuentemente y
son candidatos a optimizar

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 70
Coverage Analyzer: activación grabación automática

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 71
Coverage Analyzer: Resultados

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 72
Contenido

BLOQUE 2:
Reconocimiento de sentencias ABAP con bajo
rendimiento.

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 73
Clasificación de mejoras

1. Mejoras sobre el servidor de BB.DD.


2. Mejoras en las comunicaciones serv. BB.DD. Y Aplicación.
3. Mejoras sobre el servidor de Aplicación
4. Mejoras en las comunicaciones serv. Aplicación y presentación.
5. Mejoras sobre el servidor de presentación.

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 74
Índices secundarios

• Pueden ser “únicos” o “no-únicos”.


• Apuntan a registros de la BD.
• Los registros del índice (y de la tabla) están organizados en
bloques de datos.
• Si todos los campos requeridos están en el índice, no se
leen bloques de datos de la tabla.
• Un bloque de datos puede contener más de un registro.
•Neoris SAP
Un registro puede extenderse en más de un bloque.
Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 75
Cláusula WHERE ineficiente: índice parcial

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 76
Cláusula WHERE ineficiente: CLIENT SPECIFIED

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 77
Cláusula WHERE ineficiente: Formulación negativa

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 78
Condiciones criticas: cláusula BETWEEN,LIKE, <, >

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 79
Creación de índices secundarios ...

Objetivo: Optimizar los accesos por la cláusula WHERE:


Posibilidad 1: Utilizar un índice estándar (primario o
secundario), siempre que sea posible.
Alternativa: Crear un nuevo índice secundario que se ajuste
a nuestro WHERE.

Inconvenientes:
• Degradación en las actualizaciones.
• Más tamaño de la BD.
• El optimizador tarda más y se puede equivocar

Antes de crear un índice secundario …

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 80
Utilización de tablas alternativas

BD SAP no 100% normalizada para aumentar el rendimiento.


Usar tablas alterativas porque:

• Tienen en sus índices los campos de nuestro criterio.


• Tienen datos de más de una tabla.
• Contienen los datos para un status específico.

Tipos de tablas alternativas:

• Ayudan a encontrar datos transaccionales a partir de datos


maestros.
• Ayudan a encontrar datos transaccionales a partir de datos
relacionados.
• Contienen los datos de un status particular.

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 81
Datos transaccionales a partir de datos maestros

Ejemplo: Necesitamos acceder a datos transaccionales de las


tablas VBAK y VBAP a partir de un dato maestro, el código de
material.

Mejor opción: Tabla VAPMA

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 82
Datos transaccionales a partir de datos maestros

SALES DOCUMENT

DELIVERY DOCUMENT

PICKING ORDER

GOODS ISSUE DOCUMENT

SALES INVOICE

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 83
Tablas con un status particular

SD:

VBUK – Sales Document Header Status


VBUP – Sales Document Item Status

FI:

BSIS – Cuentas de mayor, partidas abiertas.


BSAS – Cuentas de mayor, partidas compensadas.
BSIK – Acreedores/Proveedores, partidas abiertas.
BSAK – Acreedores/Proveedores, partidas compensadas.
BSID – Deudores/Clientes, partidas abiertas.
BSAD – Deudores/Clientes, partidas compensadas.

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 84
Veamos otra técnica con un ejemplo...
SELECT bukrs belnr gjahr blart budat
FROM bkpf UTILIZA INDICE PRIMARIO
INTO TABLE bkpf_int 148 MICROSEGUNDOS
WHERE bukrs = p_bukrs (sociedad)
AND belnr = p_belnr (nro de documento)
AND gjahr = p_gjahr. (ejercicio)

INDICE INCOMPLETO
SELECT bukrs belnr gjahr blart budat
FROM bkpf 1.800.000
INTO TABLE bkpf_int MICROSEGUNDOS
WHERE belnr = p_belnr (nro de documento)
AND gjahr = p_gjahr. (ejercicio)

r_bukrs-option = 'EQ'.
r_bukrs-sign = 'I'.
SELECT bukrs SELECT PRELIMINAR
FROM t001
INTO r_bukrs-low.
APPEND r_bukrs.
ENDSELECT.

SELECT bukrs belnr gjahr blart budat


UTILIZANDO EL INDICE
FROM bkpf
INTO TABLE bkpf_int 450 MICROSEGUNGOS
WHERE bukrs IN r_bukrs
AND belnr = p_belnr
AND gjahr = p_gjahr.
Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 85
Si todo lo anterior no sirve ...

Crear el índice secundario, pero aplicar las siguientes


recomendaciones:

• Índices disjuntos.
• Limitar el número de campos del índice (no más de 5).
• Limitar el número de índices por tabla (no más de 5).
• NO modificar los índices secundarios estándar (si no es por
aplicación de una nota OSS).
• NO crear índices de las tablas D010*, D020*, DD*, NAST, …

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 86
Problemas típicos con índices

Índices fragmentados
• Este problema existe en las BD ORACLE e INFORMIX
• Tras operaciones de actualización (INSERTs / DELETEs) se crean
huecos en los bloques de datos de índices.
• Cuando esos huecos superan el 50% estamos ante un problema
de fragmentación.
• Solución: Reorganización de la tabla.

Índices perdidos
• En ocasiones, se “pierden” los índices secundarios.
• Detección: Transacción DB02
• Solución: Generación del índice secundario (desde la DB02)

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 87
“Logística“: ¿Quién debe crear los índices secundarios?

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 88
Execution Plan (Plan de ejecución)

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 89
HINTS, Sintaxis

• Para sentencias SELECT, UPDATE o DELETE.


• Se pueden incluir más de 1 HINT por comentario.

Tratamiento de errores:

• El comentario no sigue a la sentencia SELECT, UPDATE o


DELETE.
• Si la sintaxis del HINT es errónea se ignora.
– El resto de HINTs (si existen) se evalúan.
• HINTS conflictivos se ignoran. Por ejemplo FULL e INDEX.
– El resto de HINTs (si existen) se evalúan.

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 90
HINTs en sentencias ABAP OPEN SQL

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 91
Clasificación de mejoras

1. Mejoras sobre el servidor de BB.DD.


2. Mejoras en las comunicaciones serv. BB.DD. Y Aplicación.
3. Mejoras sobre el servidor de Aplicación
4. Mejoras en las comunicaciones serv. Aplicación y presentación.
5. Mejoras sobre el servidor de presentación.

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 92
Petición de datos a la BBDD

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 93
Respuesta de la BBDD

FETCHes

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 94
Transferencia serv. BD y serv. Aplic.

Objetivo: disminuir el tráfico entre el servidor de BBDD y el


servidor de aplicación

¿Cómo?

• Limitar el número de filas tratadas.


• Limitar el número de campos (columnas) tratados.
• Limitar el número de veces que los datos son transferidos.
• Evitar sentencias SQL innecesarias (SELECT idénticas).
• Buffering

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 95
Limitar el número de filas tratadas

Objetivo 1: Limitar el número de filas tratadas …

• Añadir campos en la cláusula WHERE, aunque no sean


relevantes para el índice que actualmente esté utilizando la
sentencia SQL.

• En ocasiones, las SELECT .. INNER JOIN son poco eficientes


en este sentido porque recuperan información redundante.
Una sentencia SELECT .. INNER JOIN puede ser sustituida por
una sentencia SELECT .. FOR ALL ENTRIES.

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 96
Limitar el número de filas tratadas

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 97
Limitar el número de columnas tratadas

Objetivo 2: Limitar el número de campos (columnas)

SELECT * => SELECT <campo1> <campo2> …

• Si los campos no se conocen hasta la ejecución del programa,


podemos utilizar la variante:

SELECT ( tabla ) (tabla interna con los campos).

• La sentencia SELECT * FROM <tabla>


INTO CORRESPONDING FIELDS OF
<workarea> no es “inteligente”, se recuperan todos los
campos de la BD.

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 98
Limitar el número de veces (FETCHs)

Objetivo 3: Limitar el número de operaciones (FETCHes)


realizadas.

SELECT .. INTO TABLE


SELECT .. APPENDING TABLE

• Si obtenemos mucha información podemos tener problemas


con la memoria. Para solucionarlo:
• SELECT .. PACKAGE SIZE <tamaño>

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 99
ARRAY FETCHes

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 100
SELECT .. FOR ALL ENTRIES

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 101
SELECT .. FOR ALL ENTRIES

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 102
UP TO n ROWS

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 103
Funciones de agregación

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 104
UPDATE .. WHERE

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 105
INSERT (UPDATE O DELETE) .. FROM TABLE

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 106
PARA INNER JOINS FRECUENTES:
MEJOR CREAR UNA VISTA EN EL DICCIONARIO

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 107
Buffer management

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 108
Activar BUFFERING (SE11)

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 109
ESTRATEGIAS DE BUFFERING

SINGLE RECORD BUFFERING


• Solo los registros leídos son almacenados en el buffer

CUANDO LO USAMOS?
• Pocos accesos a una tabla extensa, la cual leemos mediante
un SELECT SINGLE
• No recomendable para tablas chicas (+ accesos)

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 110
ESTRATEGIAS DE BUFFERING

GENERIC BUFFERING
• Se cargan en el buffer todos los registros que comparten
campos claves con el registro accedido

CUANDO LO USAMOS?
• Es necesario acceder frecuentemente a ciertas áreas de la
tabla
• Por ejemplo tablas de dependientes del idioma

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 111
ESTRATEGIAS DE BUFFERING

FULL BUFFERING
• La tabla entera se carga en el buffer cuando seleccionamos al
menos un registro de la misma

Buffer.exe

CUANDO LO USAMOS?
• Tablas pequeñas, con muchas lecturas y pocas
actualizaciones

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 112
Clasificación de mejoras

1. Mejoras sobre el servidor de BB.DD.


2. Mejoras en las comunicaciones serv. BB.DD. Y Aplicación.
3. Mejoras sobre el servidor de Aplicación
4. Mejoras en las comunicaciones serv. Aplicación y presentación.
5. Mejoras sobre el servidor de presentación.

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 113
Atributos de tablas Internas

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 114
Tablas Internas

STANDARD SORTED HASHED

Sentencias clave:

LOOP … WHERE …
READ TABLE … WITH [TABLE] KEY …

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 115
Tablas Internas, ejemplos de definición

OBSOLETO: RECOMENDADO:

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 116
STANDARD TABLE

TABLAS DE TIPO STANDARD:


EFICIENTES PARA ACCESOS POR VARIAS CLAVES DENTRO
DEL MISMO PROGRAMA

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 117
SORTED TABLE

TABLAS DE TIPO SORTED:


EFICIENTES PARA ACCESOS MÚLTIPLES Y ALEATORIOS POR
CLAVE PARCIAL
UTILIZAR TODOS LOS CAMPOS DE LA CLAVE (DE
IZQUIERDA A DERECHA).

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 118
HASHED TABLE

TABLAS DE TIPO HASHED:


EFICIENTES PARA ACCESOS MÚLTIPLES Y ALEATORIOS POR
CLAVE COMPLETA

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 119
APPEND / INSERT .. LINES

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 120
COLLECT

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 121
LOOP / MODIFY / DELETE .. WHERE

SI EL CAMPO
MANDANTE ESTÁ EN
LA TABLA HAY QUE
ESPECIFICARLO EN EL
LOOP

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 122
MODIFY / READ / LOOP .. TRANSPORTING

SOLO
TRANSPORTAMOS
LOS CAMPOS QUE
NECESITAMOS

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 123
FIELD-SYMBOLS, DEFINICIÓN

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 124
FIELD-SYMBOLS, EJEMPLO

EVITAMOS EL COSTE DE
COPIAR DATOS A LAS WORK
AREAS

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 125
FIELD-SYMBOLS, EJEMPLO

EVITAMOS EL COSTE DE
COPIAR DATOS A LAS
WORK AREAS

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 126
ACCESOS ... (resumen)

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 127
DELETE ADJACENT DUPLICATES ...

ÚTIL PARA RELLENAR TABLAS CON CLAVE ÚNICA A PARTIR DE DATOS


CON CLAVE DUPLICADA

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 128
CLAVES SECUNDARIAS EN TABLAS INTERNAS

Clave primaria

Clave secundaria

Loop ordenado por


clave secundaria

Acceso rápido
mediante clave
secundaria

 Recomendado para tablas extensas con modificaciones escasas o nulas


No utilizar en tablas pequñas o de constante actuallización

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 129
IMPLEMENTAR ABAP ORIENTADO A OBJETOS..POR QUÉ?

Aplicar el principio KISS:

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 130
IMPLEMENTAR ABAP ORIENTADO A OBJETOS..POR QUÉ?

 Encapsulación y reusabilidad:
Lógica implementada 1 vez, de forma correcta y reutilizada

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 131
BOXED COMPONENTS

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 132
BOXED COMPONENTS

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 133
PROCESAMIENTO PARALELO
system = ‘parallel_generators’. ” RFC Server Group

LOOP AT S_MATNR.
index = sy-tabix.
CONCATENATE ‘Task’ index into taskname.”Task Name
CALL FUNCTION ‘BAPI_MATERIAL_GET_DETAIL’
 STARTING NEW TASK taskname
DESTINATION IN GROUP system
PERFORMING F_RESULTADOS on end of task
EXPORTING
MATERIAL = S_MATNR-LOW
ENDLOOP.

FORM  F_RESULTADOS using taskname.
RECEIVE RESULTS FROM FUNCTION ‘BAPI_MATERIAL_GET_DETAIL’
IMPORTING
MATERIAL_GENERAL_DATA = BAPIMATDOA.
BAPIRETURN = BAPIRETURN.
APPEND bapimatdoa-matl_desc TO material.
ENDFORM.

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 134
PROCESAMIENTO PARALELO

LOOP AT S_MATNR.
CALL FUNCTION ‘BAPI_MATERIAL_GET_DETAIL’
EXPORTING
MATERIAL = S_MATNR-LOW
IMPORTING
MATERIAL_GENERAL_DATA = BAPIMATDOA.
write : BAPIMATDOA-MATL_DESC.
ENDLOOP.
Sólo utiliza un Work Process!

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 135
OTROS TIPS ...

• Especificar los tipos de datos a parámetros en FORMs, RFCs:


• P_SOCIEDAD type ANY P_SOCIEDAD type CHAR4

• Eliminar código muerto (rutinas activas y comentadas)

•Utilizar checkpoint groups

• Interfaces: +IDocs – RFC/Web Services

• Utilizar Shared Objects Export/Import from memory

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 136
Clasificación de mejoras

1. Mejoras sobre el servidor de BB.DD.


2. Mejoras en las comunicaciones serv. BB.DD. Y Aplicación.
3. Mejoras sobre el servidor de Aplicación
4. Mejoras en las comunicaciones serv. Aplicación y presentación.
5. Mejoras sobre el servidor de presentación.

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 137
UPLOAD / DOWNLOAD
MAS EFICIENTE EL “FILE TRANSFER” QUE EL UPLOAD/DOWNLOAD DE
FICHEROS SOBRE EL SERVIDOR DE PRESENTACIÓN.

ADEMÁS, EL UPLOAD/DOWNLOAD NO PUEDE SER EJECUTADO EN


BATCH.

CONSIDERAR TRANSACCIONES CG3Y, CG3Z


UPLOAD /
DOWNLOAD
SERVIDOR SERVIDOR
DE APLICACIÓN DE PRESENTACIÓN

FILE TRANSFER

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 138
Servidor de presentación, algunos comentarios

• El acceso a SAP vía SAPgui for HTML (ITS) es 10 veces más pesado para el
sistema que el acceso vía SAPgui for Windows o SAPgui for Java.

• El SAPgui Progress Indicator consume muchos recursos, por lo que se debe


utilizar con precaución.

• Funciones que generan documentos mediante librerías OLE (Word, Excel)

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 139
GRACIAS!!

Neoris SAP Óptima: Documentación elaborada para uso exclusivo del grupo HC Energía. Reservados todos los derechos de copia 140

También podría gustarte