Performance en abap

Solo disponible en BuenasTareas
  • Páginas : 8 (1777 palabras )
  • Descarga(s) : 0
  • Publicado : 28 de febrero de 2012
Leer documento completo
Vista previa del texto
Contenido de Documentación



Reingeniería



1. Mala definición de SELECT en sus campos llaves 1
2. Mala definición en campos a seleccionar en las lecturas 4
3. Mala definición en Lecturas de tablas internas 5
4. Lecturas innecesarias, lectura de una tabla de muchos registros a otra tabla con características semejantes, de muchos registros. 6
5. Loop’s sencillos y anidados malusados 8















Mala definición de SELECT en sus campos llaves

Problemas Localizados:
En la mayoría de los programas se identificaron una mala definición declarativa de los campos que forman parte de la selección de datos en el momento de hacer un SELECT, ejemplo:


SELECT
Vbeln erdat erzet ernam auart lifsk netwr waerkVkorg vtweg vkgrp vkbur knumv kunnr cmfre
INTO TABLE it_vbak
FROM vbak
WHERE vbeln IN s_vbeln
AND audat IN s_audat
AND auart IN s_auart
AND vkorg IN s_vkorg
AND vtweg IN s_vtweg
AND kunnr IN s_kunnr
AND ernam IN s_ernam
AND vkgrp IN s_vkgrp
AND vkbur INs_vkbur.


Problema: Este SELECT tiene una duración en un ambiente de pruebas de 20 minutos, por lo que tenía problema de TIME-OUT de forma inmediata.


Observaciones:
En donde la tabla tiene la siguiente llave inicial:
VBELN
Y los siguientes índices:
AUD audat
ERD erdat
010 MANDT
KUNNR
VKORGERNAM
OIEXGNUM
Z02 MANDT
KUNNR
VKORG
VTWEG
SPART

Por lo que la lectura con esta organización de campos en la tabla e índices no se puede agilizar porque el SELECT tiene muchos campos que no son llaves.
Otras razones son que aún cuando los campos están en la llave, están mal organizados, por tal motivo la lectura eslenta también, otra situación, es cuando está incompleta la llave y más cuando se tratan de tablas grandes en SAP, como BSEG.


RECOMENDACIONES:
A. Definiciones adecuadas de campos llaves, índices en SELECT’s
Existen varias formas de lecturas de tablas transparentes de SAP, pero se deben de considerar los siguientes puntos.


i. Los campos que componen la“llave” de lectura, deben de estar ordenados como lo tiene la estructura de la tabla en el diccionario de datos. Por ejemplo se tiene:


[pic]




Ésta tabla tiene dos campos llave, que son; MANDT y VBELN, lo ideal es que se tenga la lectura así.
SELECT campo1 campo2 campo3…. campoN INTO ITAB
FROM VBAK
WHEREVBELN EQ so_vbeln.


En caso de tablas con demasiados registros, también se recomienda el uso de la siguiente instrucción.
%_HINTS ORACLE
'&max_in_blocking_factor 50&&max_blocking_factor 50&'.
Quedando asi la instrucción:
SELECT campo1 campo2 campo3…. campoN INTO ITAB
FROM VBAKWHERE VBELN EQ so_vbeln
%_HINTS ORACLE
'&max_in_blocking_factor 50&&max_blocking_factor 50&'.




Aunque en otras ocasiones se necesite seleccionar los datos por otros campos, se buscará si existe algún índice para efectuar ésta lectura, si existe no hay problema en cuanto al performance, sino existe se puede crear uno indicandoel campo o los campos que se deberán de utilizar como llave para hacerlo. Pero si no puede crear, entonces ahí el PERFORMANCE se verá afectado.


Los posibles índices que existen para esta tabla transparente son:


[pic]


Teniendo la siguiente estructura, en el caso del primero
[pic]


Por lo que puede verse que ahora el...
tracking img