Está en la página 1de 4

MANUALES Y TUTORIALES WWW.MUNDOSAP.

COM

OPTIMIZAR EL CDIGO EN ABAP

En esta seccin pretender ser una ayuda de como optimizar el cdigo de los programa ABAP/4. Primero har una introduccin de como se han de disear los programas y seguidamente que instrucciones y como utilizarlas (esto parte es bsica para conseguir un programa optimizado). Para ver todos los "Tips & Tricks" tenemos que ir a la transaccin SE30. Lneas ha seguir para conseguir un buen programa Evitar cdigos muertos.. Eliminar cdigo innecesario y/o procesos redundantes. Es bueno documentar los programas o insertar comentarios en los programas. Importante tambin notificar los cambios que se realicen en el programa. Perder tiempo en analizar lo que se necesita, que procesos utilizaremos y que tipo de datos y estructura vamos a utilizar. Tener un plan adecuado para planear las pruebas que se van hacer al programa.

Instrucciones que hacen que un programa sea ms optimo

LENTO SELECT * FROM <TABLA> CHECK: <CONDITION> ENDSELECT

RPIDO SELECT * FROM <TABLA> WHERE <CONDITION> ENDSELECT

Siempre que se pueda hay que poner las condiciones en los clasula WHERE. Otro que penaliza el rendimiento es utilizar los operador OR, NOT e IN. Lo que mejora el rendimiento es el operador EQUAL o "=".

SELECT *

SELECT SINGLE *

La diferencia es que el SELECT SINGLE *. requiere una comunicacin la base de datos y el SELECT * requiere dos comunicaciones con la base de datos.

SELECT * FROM <TABLA> INTO <INT-TAB> APPEND <INT-TAB> ENDSELECT

SELECT * FROM <TABLA> INTO TABLE <INT-TAB>

MANUALES Y TUTORIALES WWW.MUNDOSAP.COM

Con la clusula INTO TABLE ya realiza un APPEND en el SELECT

SELECT ... WHERE + CHECK

SELECT usando una funcin

Cualquier funcin que pongamos en la clusula SELECT (SUM, MIN, ETC...) es ms rpido que la mismas funciones puesto dentro del SELECT.

SELECT INTO TABLE <INT-TAB> + LOOP AT T SELECT * FROM <TABLE> INTO TABLE <INT-TAB>. LOOP AT <INT-TAB>. ENDLOOP.

SELECT * FROM <TABLA> . ENDSELECT

Es siempre ms rpido tratar los datos directamente en un SELECT que almacenar los datos en una tabla interna y despus tratar dichos datos.

SELECT * FROM <TABLA-A> SELECT * FROM <TABLA-B> .. ENDSELECT. ENDSELECT

SELECT * FROM <VISTA> ENDSELECT

Si se accede muy a menudo a diversas tablas es ms recomendable hacer una vista de dichas tablas que es ms rpido.

SELECT * FROM pers WHERE condicin. SELECT * FROM persproj WHERE person = pers-persnr. ... proceso ... ENDSELECT. ENDSELECT.

SELECT persnr FROM pers INTO TABLE ipers WHERE cond. . SELECT * FROM persproj FOR ALL ENTRIES IN ipers WHERE person = ipers-persnr ... proceso . ENDSELECT.

Con la opcin ALL ENTRIES se consigue que las entradas que nos interesen del primer SELECT se busque en el segundo, por lo tanto el segundo SELECT solo se ejecutara una vez.

SELECT * FROM <TABLE>

SELECT <columna(s)> FROM <TABLE>

Es recomendable y ms rpido indicar en el SELECT que campos queremos leer.

MANUALES Y TUTORIALES WWW.MUNDOSAP.COM

SELECT sin tabla para soporte de buffer

SELECT con tabla para soporte de buffer

Utilizando el SAP-Buffering conseguimos una reduccin de la actividad de la base de datos y de la red.

LOOP AT <INT-TAB> INSERT INTO <TABLE> VALUES <INT-TAB> ENDLOOP

Insercin directa. Ej: t1[ ] = t2[ ]

Es ms rpido insertar directamente los contenidos de una tabla a otra que utilizar un loop para ellos.

SELECT * FROM <TABLA> <COLUMNA-MODIFICAR STATEMENT> UPDATE <TABLA> ENDSELECT

UPDATE <TABLA> SET <INSTRUCCIN COLUMNAMODIFICAR >

Es ms ptimo utilizar la instruccin UPDATE para modificar un campo o varios campos.

DO....ENDDO loop con Field-Symbol

Usando el operador CA

El utilizar los operadores CO, CA, CS conseguimos que la CPU trabaje menos.

Usar la funcin CONCATENATE

Utilizar la instrucin CONCATENATE

Es ms rpido utilizar instrucciones del sistema que funciones del sistema, e aqu un ejemplo: STRING_CONCATENATE... ---> CONCATENATE STRING_SPLIT... ---> SPLIT STRING_LENGTH... ---> strlen() STRING_CENTER... ---> WRITE..TO. ..CENTERED STRING_MOVE_RIGHT ---> WRITE...TO...RIGHT-JUSTIFIED

Moviendo con offset

Utilizando la instruccin CONCATENATE

Es ms rpido utilizar la sentencia CONCATENATE que programar un tratamiento de un string realizado por nosotros.

Usar SEARCH y MOVE con offset

Instruccin SPLIT

MANUALES Y TUTORIALES WWW.MUNDOSAP.COM

Utilizar el SPLIT es ms rpido que programar un tratamiento de un string realizado por nosotros.

Cambian posiciones con SY-FDPOS

Usando SHIFT...LEFT DELETING LEADING...

Es ms rpido borrar espacios en blanco con la derecha con SHIFT...LEFT DELETING LEADING... que utilizar la instruccin CONDENSE

Contar los caracteres con field length

Contar los caracteres con STRLEN()

Siempre es ms rpido utilizar funciones del sistema que programar para hacer un determinado tratamiento de un string.

También podría gustarte