You are on page 1of 17

METODOLOGA DE PROGRAMACION EN

ABAP
OBJETIVOS.
Proveer lineamientos para el desarrollo de programas.
Afinar el performance de los programas.
Conocer las herramientas para Analizar el Performance de
Programas.
BENEFICIOS.

Obtener un programa limpio y claro.


Bajar el costo de mantenimiento de programas.
Satisfaccin y productividad del Usuario.
Menor consumo de recursos en el sistema.

ESTRUCTURA DE UN PROGRAMA.
En la seccin de cabecera debe de incluirse documentacin del
Usuario.
Debe de contener un titulo que refleje la funcionalidad.
Debe de contener una descripcin de la funcionalidad del
programa.
Debe ser modularizado va Subrutinas.
Las definiciones de campos debern ser claros para su
propsito y contenido.
Para mejorar el esquema del programa se debe usar el PRETTY
PRINTER .
Eliminar variables y sentencias que no van hacer usadas en el
programa.
Definir Text Element.

DOCUMENTACION.
Datos de cabecera.
Para
o
o
o
o

un programa nuevo se debe considerar lo siguiente.


Nombre del programa ABAP.
Ttulo del programa.
ID Requerimiento de Desarrollo.
Autor.

o Fecha.
o Breve descripcin.

Ejemplo:

para un programa que va a ser modificado se considera


lo siguiente.
o Correction-ID: XXXXDDMMAAAA##
Donde:
XXXX

Primera letras del nombre y apellidos

DDMMAAAA Da Mes Ao del cambio


##

o
o
o
o
Ejemplo:

Correlativo

El ID del formato del cambio (CRF).


Autor.
Fecha.
Propsito de la modificacin.

Cuando el cambio implica varias lneas consecutivas que


se han incrementado o modificado.
Ejemplo:

Cuando el cambio implica una o dos


incrementado o modificado.
Ejemplo:

Convenciones de nombres.
Ejemplo:

lneas que se han

VERIFICACIN DE AUTORIZACIONES EN ABAP/4.


Componentes del sistema de autorizaciones.

Object Class

Authorization Objects

Authorization Objects

Authorizations

Activity

Ejemplo:

Authorizations

Values

Ejemplo: Se define un profile con su autorizacin.

AUTHORITY-CHECK .
Proporciona la facilidad de verificar si un usuario posee autorizacin. Si
se encuentra los valores especificados en un Authority-Check en uno o

ms objeto de autorizacin el usuario puede proceder. De lo contrario es


rechazado.

Ejemplo:
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD p_bukrs
ID 'ACTVT' FIELD gc_act03.
IF sy-subrc <> 0 AND sy-subrc <> 12 .
MESSAGE e007 WITH p_bukrs.
ENDIF.

Cdigo
o 0
o 4
o 8
o 12
o 24
o 28

de retorno.
Acceso Otorgado.
Usuario no posee autorizacin.
Nmero de campo han excedido a 10.
Objeto no existe.
El nombre del campo no est relacionado en el Objeto.
Error de Sistema.

PERFORMANCE
FACTORES QUE INFLUYEN EN EL PERFORMANCE.
Interaccin con la Base de Datos
Procesamiento de Tablas Internas
Utilizacin de Base de Datos Lgicas

Consideraciones:
Evitar SELECT redundante dentro de un LOOP.
Parameters : vendor like bsik-lifnr,
co_code like bsik-bukrs.
Select * From BSIK
Where Lifnr = vendor and
Bukrs = co_code

order by primary key.


Select single * from LFA1 where Lifnr = vendor.
Write : / LFA1-NAME1, BSIK-BUDAT, BSIK-DMBTR.
EndSelect.
Evitar acceso a data que no va a ser utilizada.
Parameters : co_code like bsik-bukrs.
Select * from BSIK
where Bukrs = co_code
order by primary key.
Authority-check object F_KNA1_BUK
id BUKRS value co_code
id ACTVT 03.
if sy-subrc ne 0. EXIT. endif.
EndSelect.

Evitar llamadas a funciones/subrutinas innecesarias.


Llamadas a funciones/subrutinas externas hacen que el sistema
lea el cdigo de la Base de datos y lo lleve a la memoria.
Evitar leer un mismo registro ms de una vez.
Leer en un slo acceso toda la informacin necesaria de ese
registro.

TIPOS DE ACCESO BASE DE DATOS.


Acceso Secuencial.
Recorre la tabla registro por registro.
ndice nico.
Trae exactamente un registro y todos los campos del ndice son
especificados en la consulta.

ndice no nico.
Trae un conjunto de registros que son especificados en la consulta.

AFINAMIENTO EN PERFORMANCE.
Error 1:

SELECT * FROM TABLE.

SELECT * FROM VBAK.


ENDSELECT.
Debemos usar:
SELECT VBELN AUART VTWEG SPART VKORG
INTO (var1, var2,..)
FROM VBAK.
ENDSELECT.

Error 2: La sentencia SELECT no est usando los campos claves


de la tabla en la clusula WHERE.
SELECT * FROM T100
WHERE ARBGB = '00'
AND MSGNR = '999'.
ENDSELECT.
Debemos usar:
SELECT * FROM T002.
SELECT * FROM T100
WHERE SPRSL = T002-SPRAS
AND ARBGB = '00'
AND MSGNR = '999'.
ENDSELECT.
ENDSELECT.
Error 3: CHECK dentro de un SELECTENDSELECT.
SELECT KUNNR PSTLZ INTO WA FROM KNA1
WHERE KUNNR BETWEEN 0000000001

AND 000001000.
CHECK KNA1-PSTLZ = 1020.
ENDSELECT
Debemos usar:
SELECT KUNNR PSTLZ INTO WA FROM KNA1
WHERE KUNNR BETWEEN 0000000001 AND 0000001000
AND KNA1-PSTLZ = 1020.
ENDSELECT
Error 4: El uso SELECT anidados.
SELECT EBELN
INTO (w_ebeln) FROM EKKO
WHERE EBELN BETWEEN '4200000108' AND '5500000006'.
SELECT EBELP
INTO (w_ebelp) FROM EKPO
WHERE EBELN = EKKO-EBELN.
WRITE: / w_ebeln, w_ebelp.
ENDSELECT.
ENDSELECT.
Debemos usar:
SELECT EBELN EBELP "Purchasing Document
INTO (ebeln, ebelp) FROM EKPO
WHERE EBELN BETWEEN '4200000108' AND '5500000006'.
WRITE: / ebeln, ebelp.
ENDSELECT.
Error 5: SELECT & APPEND vs .. SELECT INTO TABLE.
SELECT * FROM KNA1
WHERE KUNNR BETWEEN '0061103792'
AND '0061800480'.
MOVE-CORRESPONDING KNA1 TO T_KNA1.
APPEND T_KNA1.
ENDSELECT.

Debemos usar:
SELECT *
INTO TABLE T_kna1
FROM KNA1
WHERE KUNNR BETWEEN '0061103792'
AND '0061800480'.
Error 6: SELECT FROM TABLE ORDER BY cuando el campo
especificado en el order by no est indexado.
SELECT VBELN BNAME INTO WA
FROM VBAK
ORDER BY BNAME.
ENDSELECT.

Error 7: Leer una tabla interna sin usar BINARY SEARCH


SELECT knunr name1 INTO TABLE t_ikna1
WHERE
.
ENDSELECT.
READ TABLE t_ikna1
WITH KEY 0900123456.
Debemos usar:
READ TABLE t_ikna1
WITH KEY 0900123456
BINARY SEARCH.
Error 8: No usar el COMMIT WORK en un programa que utiliza
INSERT/UPDATE/DELETE para DB.

En un programa que se utilice las sentencias INSERT, UPDATE o


DELETE para actualizar transacciones debe de incluir un COMMIT
WORK al final de cada proceso.
No usar COMMITs puede llevar a cuellos de botella en la Base de
Datos ya que tendr que mantener un registro de los cambios por
medio de Segmentos Rollback.
Adems la BD no permite modificar los registros que han sido
cambiados hasta que son liberados con el COMMIT.

Error 9: CHECK dentro de un LOOP AT TABLE


LOOP AT TAB.
CHECK TAB-K = KVAL.
" ...
ENDLOOP.
Debemos usar:
LOOP AT TAB WHERE K = KVAL.
" ...
ENDLOOP.
Error 10: Copiar idnticamente una tabla interna a otra usando
APPEND TABLE.
LOOP AT TAB_SRC INTO TAB_DEST.
APPEND TAB_DEST.
ENDLOOP.
Debemos usar:
TAB_DEST[] = TAB_SRC[].
Error 11: Modificar los componentes de una tabla sin
TRANSPORTING.
LOOP AT TAB.

usar

IF TAB-FLAG IS INITIAL.
TAB-FLAG = 'X'.
ENDIF.
MODIFY TAB.
ENDLOOP.
Debemos usar:
TAB-FLAG = 'X'.
MODIFY TAB TRANSPORTING FLAG
WHERE FLAG IS INITIAL.
Error
12: Eliminar los componentes de una tabla usando
LOOP/ENDLOOP.
LOOP AT TAB_DEST WHERE K = KVAL.
DELETE TAB_DEST.
ENDLOOP.
Debemos usar:
DELETE TAB_DEST WHERE K = KVAL.
Error 13: Utilizar SELECT anidados
SELECT * FROM VBRK WHERE ...
SELECT * FROM VBRP WHERE...
...
ENDSELECT.
ENDSELECT.
Debemos usar:
SELECT * FROM VBRK INTO TABLE ITAB WHERE...
LOOP AT ITAB.
SELECT * FROM VBRP WHERE...
...
ENDSELECT.
ENDLOOP

RUNTIME ANALYSIS TOOL.


Esta herramienta permite analizar la performance de cualquier
transaccin, programa o funcin creada por el Abap Workbench.
La informacin obtenida ayuda a identificar los problemas causados por :
Uso excesivo o llamadas innecesarias a funciones o subrutinas.
Uso excesivo del CPU en funciones del programa evaluado.
Acceso ineficiente o innecesario a la B.D.

Acceso por Men.

Desde

Acceso

Cualquier
Pantalla

System Utilities
Runtime Analysis
Execute

Abap
Workbench Pantalla
Inicial
Editor Abap Pantalla
Inicial
Editor Abap
Repository
Browser
.
Transaccin
se30.

Test Runtime
Analysis
Program Execute
Runtime Analysis
Utilities More
Utilities Runtime
Analysis
Development object
Test/Excecute
(Runtime Analysis)

Arquitectura.

Elementos Considerados para el Clculo de tiempos .

Acceso a la B.D.

Unidades de
Modularizacin

Operaciones en
Tablas Internas

Transferencia de
Datos
Operaciones con
Objetos en ABAP
Otros

Open SQL (Todas las Sentencias)


Native SQL (Todas las Sentencias)
Export To
Import From
Module
Perform
Call Function
Call Screen
Call Transaction
Call Dialog
Append
Submit
Collect
Sort
Insert
Modify
Delete
Read Table

Read Dataset
Transfer Object
Call Method
Create Object
Raise Event
Assign
Message
Set Lokale
Set PF-Status
Set Titlebar

Performance Data Analysis.

Anlisis Performance Data - Hit List.

You might also like