You are on page 1of 27

Leccin 1: Caractersticas de los programas ABAP

1|

Aplicaciones ABAP

Dentro del mundo ABAP se pueden crear distintos tipos de objetos. Los ms
comunes de ellos son:
Reporte, Reporte interactivo y Reporte ALV
Programa de Dialogo
Formularios
Batch Input
User exists
Field exits
Funciones y RFC
A medida que avanza el curso vamos a ir viendo en detalle cada uno de ellos.
Ahora nos vamos a ocupar de los llamados Reportes Clsicos o simplemente
Reportes.
REPORTE: Es un programa que consiste en una serie de instrucciones y
palabras clave cuyo objetivo es procesar datos de entrada o datos que se
obtienen de las tablas del sistema y mostrar los resultados del
procesamiento por pantalla.
Existen cuatro tipos de palabras claves:
Declarativas: se utilizan para declarar datos que vamos a usar dentro
del programa. Ej.: DATA, TABLES y CONSTANT.
Eventos: que ocurren en el programa. Ej.: START-OF-SELECTION, TOPOF-PAGE, etc.

Control: sentencias de control de flujo de programa. Ej.: IF, WHILE, DO,


etc.
Operativas: realizan funciones segn la palabra clave. Ej.: WRITE, MOVE,
etc.
Generalmente la estructura de un reporte va a ser de la siguiente manera:

Existen dos formas de utilizar los comentarios en un programa ABAP:


Con un asterisco en la primera columna de la fila.
Con comillas dobles en cualquier posicin de la lnea.

2|

Eventos de un programa ABAP

Como dijimos anteriormente, la programacin ABAP es orientada a eventos. Los


principales eventos que pueden ocurrir dentro de un programa son:
INITIALIZATION
Es el primer evento que se ejecuta. Nos permite inicializar los campos de
la pantalla de seleccin de un programa o cualquier otra variable.
AT SELECTION-SCREEN
Permite formatear la pantalla de seleccin segn nuestras necesidades.
START-OF SELECTION
Si no es precedido por otro evento, el sistema inserta este evento antes de la
primera lnea de cdigo ejecutable.

END-OF-SELECTION
Contiene las ultimas sentencias que se ejecutarn en el programa.
AT LINE-SELECTION
Permite al usuario seleccionar una lnea de un listado y realizar alguna accin. Se
utiliza en los reportes interactivos.
AT USER-COMMAND
Se ejecuta cuando el usuario presiona un botn del men en un reporte.
TOP-OF-PAGE
Ejecuta las instrucciones al inicio de la pgina (encabezados).
END-OF-PAGE
Ejecuta la instrucciones al final de la pgina (Pie de Pgina).
Veamos un ejemplo de como usaramos los eventos en un programa ABAP. Para
ello nos logueamos a SAP, ingresamos a la transaccin SE38 y creamos el
programa Z_PRUEBA_EVENTOS que lo grabamos como programa ejecutable y
como objeto local con el siguiente cdigo:

Si ejecutamos este programa produciramos la siguiente salida:

No importa el orden en el que se escriban los eventos dentro de un


programa.

3|

Utilizando el debugger

Es muy importante saber utilizar el debugger ya que en programacin las cosas


solo funcionan si y solo si son perfectas osea sin errores. Algunos errores se
detectan a simple vista pero para resolver otros vamos a necesitar ejecutar
nuestro programa y saber exactamente cuales son los valores que van tomando
las variables internas del mismo. Para esto existe el debugger.

Veamos como debaguear el programa Z_PRUEBA_EVENTOS que acabamos de


crear. Para ello, visualizamos el programa a travs de la transaccin SE38 y
colocamos un breakpoint luego de la declaracin de las variables presionando el
botn
para breakpoints de sesin que durarn mientras la sesin este
abierta o
para breakpoints externos.

Luego ejecutaremos el programa y veremos en debugger en accin.

Presionando el botn Single step


sentencia a sentencia.

o la tecla F5, ejecutaremos paso a paso osea

Presionando el botn Execute


o la tecla F6, ejecutaremos subrutina a
subrutina sin entrar en el contenido de cada una. Ms adelante veremos el
concepto de subrutina en detalle.
Presionando el botn Return
o la tecla F7, retornaremos a la rutina de nivel
superior de la rutina actual en ejecucin.

Presionando el botn Run


final del programa.

o la tecla F8, continuaremos la ejecucin hasta el

En la parte inferior de la pantalla del debugger podemos ingresar el nombre de


cualquiera de las variables del programa para saber cual es su contenido en
cualquier momento del mismo. Tambin podemos modificar el contenido de una
variable para saber cual sera el resultado del programa con esta modificacin.

Si visualizas una pantalla de Debug diferente a la que presentamos en las


imgenes anteriores es porque tienes configurado el Debug Nuevo.
Para cambiar el debug debes ir Utilidades / Opciones
Debugging / Funcion Debugging y cambiar la funcion del debug.

Leccin 3: Declaracin de Datos

1|

Tipos de datos ABAP

Los principales tipos de datos que se utilizan en ABAP son:

Tambin existen los Tipos STRING que se utilizan para cadenas de longitud
variable y XSTRING que se utilizan como un string hexadecimal para cadenas de
caracteres muy grandes.
Para declarar una variable utilizaremos la palabras clave DATA y TYPE tal como
vemos en el siguiente ejemplo.

Con el agregado de VALUE, inicializamos con un valor determinado a una


variable.
Cuando declaramos variables de tipo caracter TYPE cdebemos especificar
la longitud de la cadena. De lo contrario el sistema asumir que su
longitud es 1 caracter.

Tambin podemos declarar variables que sean de igual tipo que otras ya creadas
en el sistema. Para esto utilizamos la sentencia LIKE. En el siguiente caso,
creamos la variable V_CARRID que es del mismo tipo que el campo CARRID de la
tabla de Vuelos de SAP.

2|

Estructuras de datos

ESTRUCTURA: Es un conjunto de campos relacionados, cuyos


componentes pueden ser simples campos, otras estructuras o inclusive
tablas.
Existen tres formas de definir una estructura:
La primera es utilizando la palabra clave DATA. En el siguiente ejemplo creamos
una estructura de vuelos que tendr los mismos campos que la tabla de
vuelos SFLIGHT.

En la segunda forma tambin utilizamos la palabra clave DATA pero vamos a crear
una estructura de vuelos solo con ciertos campos.

La tercera forma es utilizando TIPOS, que son formatos de estructuras que


pueden ser utilizados por cualquier otra estructura sin necesidad de reescribir el
cdigo. Para esto se utiliza la palabra reservada TYPES.

3|

Constantes

CONSTANTE: Es una variable que se declara dentro de un programa cuyo


valor permanecer tal como lo indica su nombre constante a lo largo del
programa.
Para su declaracin se utiliza la palabra reservada CONSTANTS.

La utilizacin de constantes ayuda a que el mantenimiento de las


aplicaciones ABAP sea ms sencillo.

4|

Include de datos
INCLUDE. Es un objeto ABAP que se utiliza para modularizar los
programas de manera que estos resulten ms legibles y mantenibles.

Existen dos tipos de INCLUDES. Ellos son:


INCLUDE de datos: se utiliza para agrupar declaraciones de datos.
INCLUDE de subrutinas: se utiliza para agrupar declaraciones de
subrutinas, concepto que veremos en detalle ms adelante.
En este momento nos concentraremos en los Include de datos. Para su creacin
se utiliza la palabra claveINCLUDE seguida del nombre del include.

Al hacer doble click sobre z_prueba_abap_datos veremos la siguiente ventana de


dilogo donde se nos consulta si deseamos crear el objeto, a la cual
responderemos que s.

Luego veremos la ventana de dilogo que nos muestra el objeto que ser creado.
Aqu simplemente presionamos el botn Grabar.

Finalmente habremos creado el INCLUDE Z_PRUEBA_ABAP_DATOS.

La utilizacin de INCLUDES es considerada una buena prctica de


programacin.

5|

Variables del sistema

A parte de las variables que define el programador, existen otras que han sido
definidas por el sistema y que son de gran utilidad dentro de los programas ABAP.
Estas se encuentran en la tabla SYST y contienen informacin que va desde la
hora del sistema a saber si se ejecuto correctamente una sentencia ABAP o una
actualizacin a una base de datos. Su contenido no puede ser modificado en los
programas sino que cambia simplemente con la ejecucin de los mismos.
Las ms comnmente utilizadas son:
SY-SUBRC: cdigo de retorno posterior a la ejecucin de una sentencia ABAP. Si
el resultado de la ejecucin fue exitoso, entonces es 0, sino es distinto de cero.
SY-DATUM: contiene la fecha del sistema.
SY-UZEIT: contiene la hora del sistema.
SY-INDEX: contiene la cantidad de repeticiones de los bucles.
Leccin 5: Procesamiento de los Datos

1|

Asignacin de valores

Existen dos formas bsicas para asignar un valor a una variable. La primera
consiste en la asignacin simple.

La segunda forma es mediante la sentencia MOVE.

2|

Inicializacin de variables

Para la inicializacin de las variables utilizamos la sentencia CLEAR.

Si inicializamos las variables que declaramos a continuacin:

El contenido de los campos sera el siguiente:

Una sentencia muy importante a la hora de consultar el contenido de las variables


que declaramos en nuestros programas es IS INITIAL. En la siguiente imagen
vemos un ejemplo de su utilizacin.

La sentencia IS INITIAL es muy til cuando se trabaja con tablas


internas (concepto que veremos ms adelante en el curso). Para ms
ayuda presionar F1 sobre la sentencia.

3|

Operaciones con caracteres

Existen algunas funciones que se utilizan para tratar caracteres que son muy
tiles en el trabajo diario de un programador ABAP. Ellas son:
CONCATENATE: se utiliza para concatenar varios campos alfanumricos en
uno solo.

Esta sentencia concatena los campos V_CAMPO1, V_CAMPO2 y V_CAMPO3 en


la variable V_CAMPO. Todos estos campos son de tipo caracter. Con la
clusula SEPARATED BY se puede especificar un campo alfanumrico que se
utilizar como separador entre los campos V_CAMPO1, V_CAMPO2 y V_CAMPO3.
La sentencia CONCATENATE es muy til cuando se trabaja con fechas ya
que las fechas en SAP son del formato AAAAMMDD y cuando se
muestran en un listado se deben convertir a DD.MM.AAAA. Para ms
ayuda presionar F1 sobre la sentencia.

TRANSLATE: se utiliza para convertir caracteres de mayscula a


minscula o viceversa, o para realizar sustituciones de caracteres a travs de
ciertas reglas.

La sentencia anterior convierte a maysculas el contenido de la variable


V_TEXTO, siendo V_TEXTO de tipo caracter.
La sentencia TRANSLATE es muy til para la conversin de texto a
mayscula o minscula. Para ms ayuda presionar F1 sobre la sentencia.

REPLACE: reemplaza cierta parte de una cadena de caracteres por otra


cadena de caracteres o caracter.

La sentencia anterior reemplaza el contenido de la variable V_TEXTO que es 'Hola'


por el texto 'Casa'.
La sentencia REPLACE es muy til cuando se trabaja con importes. Para
ms ayuda presionar F1 sobre la sentencia.

SPLIT: divide a un campo alfanumrico en varios campos por un


separador.

La sentencia anterior utiliza el separador ',' para dividir el contenido del campo
V_TEXTO_LARGO en las variables V_CAMPO1, V_CAMPO2, V_CAMPO3 y
V_CAMPO4 que son de tipo caracter (TYPE c). Si todos los campos destino son lo
suficientemente grandes para almacenar las partes del campo V_TEXTO_LARGO,
SY-SUBRC valdr 0, caso contrario valdr 4.
La sentencia SPLIT es muy til cuando se trabaja con textos largos y es
necesario separarlos por algn caracter especial. Para ms ayuda
presionar F1 sobre la sentencia.

SHIFT: se utiliza para desplazar el contenido de un campo alfanumrico.


Realiza el desplazamiento del contenido de un campo hasta un string dado.

La sentencia anterior realiza el desplazamiento del campo V_ALFABETO hasta


la quinta posicin, quedando el resto de los caracteres que componen a
V_ALFABETO en la variable y eliminando los cinco primeros.
La sentencia SHIFT es muy til cuando se trabaja con nmeros de
documentos o cualquier otro nmero. que haya sido grabado en tablas
SAP con ceros a la izquierda. Para ms ayuda presionar F1 sobre la
sentencia.

SEARCH: se utiliza para buscar una cadena de caracteres dentro de un


campo alfanumrico.

La sentencia anterior busca en el campo V_ALFABETO la secuencia de caracteres


'ABC'. Como la secuencia existe, devolver SY-SUBRC igual a 0. Caso contrario, si
no existiera, sera distinto igual a 4.
La sentencia SEARCH es muy til cuando se trabaja con tablas internas y
se busca la ocurrencia de una determinada cadena en un campo de la
tabla. Para ms ayuda presionar F1 sobre la sentencia.

CONDENSE: se
utiliza
para
borrar
espacios
en
blanco
en
campos alfanumricos. Borra cualquier secuencia de espacios en blanco, dejando
solo uno que exista entre palabras existentes en el campo. Los espacios en blanco
por la izquierda tambin desaparecen.

La salida en pantalla de la sentencia anterior sera 'Dr. Rafael Castro'. Con el


agregado de la clusula NO-GAPS al final de la sentencia, se eliminarn todos los
espacios en blanco osea que tambin se eliminan los espacios existentes entre las
palabras.
La sentencia CONDENSE es muy til en los reportes, cuando se quiere
formatear la salida en pantalla de un campo determinado. Para ms ayuda
presionar F1 sobre la sentencia.

4|

Operaciones Aritmticas

En ABAP las cuatro operaciones bsicas ( +, -, * , / ) se pueden implementar de


dos maneras obteniendo el mismo resultado.

Siendo el resultado el mismo de ambas formas. Tambin se utilizan las siguientes


sentencias para operar aritmticamente con datos:

Leccin 5 : Control de Flujo


1|

Condiciones

Las condiciones en ABAP se pueden representar de dos formas. Una es utilizando


la palabra clave IF-ENDIF.

Si ninguna de las condiciones es valida, el sistema ejecutar las declaraciones que


estn debajo del ELSE. La otra forma es mediante CASE-ENDCASE.

Si ninguna de las condiciones es valida, el sistema ejecutar las declaraciones que


estn debajo del WHEN OTHERS. En ambas formas se utilizan los siguientes
operadores lgicos.

Si en cada condicin, se chequea que la variable sea igual a determinado


valor y la cantidad de condiciones es alta, sera aconsejable utilizar CASEENDCASE.

2|

Bucles

Los bucles en ABAP se puede pueden representar de tres formas. La primera es


mediante la palabra clave LOOP-ENDLOOP.

En el ejemplo anterior, Tabla es una tabla interna (Concepto que veremos en


detalle ms adelante). Con el agregado de la clusula WHERE se puede restringir
el nmero de lneas a leer ya que se producir la iteracin siempre y cuando se
cumpla la condicin. Para ms informacin presionar F1 sobre la sentencia.
La utilizacin de la clusula WHERE siempre y cuando sea posible es una
buena prctica de programacin.
Otra forma es mediante la palabra clave DO-ENDDO.

La iteracin se ejecutar solo si la condicin es verdadera.

3|

Sentencias de Control

Las sentencias de control se utilizan para terminar el procesamiento de un bucle,


de un proceso o de un programa. Ellas son:
CHECK : verifica si la condicin es verdadera. Si la condicin es falsa, y
la sentencia est dentro de un bucle, se saltearn todas las sentencias siguientes
que estn dentro del bucle y se continuar con la siguiente iteracin. Fuera de un
bucle se saltearn todas las sentencias hasta el final del evento o del programa
en proceso.

EXIT: dentro de un bucle saldr del bucle, dentro de una subrutina saldr
de la misma y fuera de un bucle saldr del programa.

CONTINUE: se utiliza solo dentro de bucle. Luego de la ejecucin de la


sentencia el sistema continua con la siguiente iteracin.

STOP: se finaliza el programa en ejecucin pero antes se ejecuta el evento ENDOF-SELECTION.

LEAVE: se finaliza el programa en ejecucin pero no se ejecutar el evento ENDOF-SELECTION.

Leccin 7: Formateando un Listado


1|

Formato de salida de los datos

ABAP ofrece una serie de instrucciones especialmente diseadas para generar


reportes de manera sencilla. Una de ellas es la sentencia WRITE.

Donde offset indica la columna donde empezar la impresin y long indica la


longitud de los valores a visualizar. Veamos un ejemplo:

Y la salida por pantalla es:

Existen muchos comandos adicionales a WRITE que se utilizan para producir una
salida por pantalla determinada. Algunos de ellos son:
Left-justified

Salida justificada a izquierda

Centered

Salida Centrada

Right-justified Salida justificada a derecha


no-zero

Si el campo contiene ceros, estos sern


cambiados por blancos

no-gap

El blanco despus del campo que se


desea imprimir es omitido

no-sign

El signo no aparece en la salida

decimals n

n define el nmero de dgitos decimales

round n

Redondea el campo de salida para los


tipos p

dd/mm/yyyy

Fecha con separadores

Para dejar una lnea en blanco se utiliza la sentencia SKIP y para escribir una
lnea horizontal se utiliza la sentencia ULINE.

2|

Formatos de Pgina

Existen instrucciones especialmente destinadas a darle formato a la salida de


un reporte ya sea por pantalla o por impresora.
El evento TOP-OF-PAGE se utiliza para cambiar la cabecera de una pgina. Este
evento ocurre tan pronto como el sistema empieza a procesar una nueva pgina.
Por ejemplo, si queremos escribir un ttulo particular al comienzo de cada pgina
pondremos:

El evento END-OF-SELECTION se utiliza para cambiar el pie de pgina. Este


evento se ejecuta luego del eventoSTART-OF-SELECTION.

El evento END-OF-SELECTION se utiliza generalmente para hacer la


impresin de los datos de modo que se separe esto del procesamiento de
los mismos.
Para modificar la cantidad de lneas o columnas que se visualizan en la pantalla se
utiliza la sentencia NO STANDARD PAGE HEADING.

Leccin 8: Pantalla de Seleccin


1|

Parmetros de seleccin

Si queremos introducir algunas delimitaciones a nuestro programa de modo que


nuestro reporte solo se ejecute para ciertos datos que el usuario deber introducir
en la pantalla entonces deberemos crear una pantalla de seleccin.
PANTALLA DE SELECCIN: Es un rea dentro de los reportes en donde
se especifican los parmetros de seleccin por los cuales se va a ejecutar
el programa. Sirve para restringir el procesamiento y la salida de los
datos. Por lo general se coloca despus de la declaracin de datos.
Dentro de una pantalla de seleccin se pueden declarar dos tipos de
objetos: PARAMETER en los cuales el usuario podr ingresar valores individuales
y SELECT-OPTIONS en donde el usuario podr ingresar rangos de valores. En el
siguiente ejemplo declaramos los parmetros P_FECHA y P_NOMBRE.

La longitud mxima que puede tener el nombre de un parmetro es de 8


posiciones.
El agregado de la clusula OBLIGATORY hace que el parmetro sea obligatorio. El
agregado de la clusula DEFAULT asigna un valor por defecto al parmetro. Si
ejecutamos nuestro reporte veremos lo siguiente:

Lo que vemos es que al ejecutar nuestro reporte nos aparece la pantalla de


seleccin que acabamos de crear. Vemos que a la derecha de la fecha nos aparece
el icono . Si presionamos sobre el cono o presionamos F4 dentro del campo
fecha, se abrir la siguiente ventana:

Aqu estamos viendo la ayuda de bsqueda asociada al campo SY-DATUM el cual es


el tipo de nuestro parmetro. El tema de las ayudas de bsqueda lo veremos
en detalle en la prxima unidad.
Ahora vamos a cambiar las descripciones de los parmetros que aparecen en
pantalla. Para esto vamos a ir a:

Y ingresamos las descripciones que mejor se adapten a nuestro propsito.

Tambin se pueden crear parmetros tipo Checkbox en donde el usuario puede


tildar las opciones que prefiera o tipo Radiobutton donde el usuario selecciona una
de las opciones entre todas las existentes. Veamos un ejemplo de estos dos tipos
de parmetros:

Los cuales se visualizarn de la siguiente manera en pantalla:

Los SELECT-OPTIONS son iguales a los PARAMETER salvo que en ellos se puede
ingresar rangos de valores a parte de valores individuales. En el siguiente
ejemplo, declaramos el SELECT-OPTIONS S_CLAVEP.

De nuevo, si ejecutamos el reporte, a la derecha del campo Clave de pas nos


aparece el icono , si lo presionamos vemos la ayuda de bsqueda correspondiente
al tipo LAND1_GP que es un tipo de la tabla KNA1.

2|

Clases de Mensajes

Una vez que ingresamos todos los parmetros de nuestro reporte y ejecutamos el
programa, lo que vamos a querer es que dependiendo de los parmetros
introducidos se produzcan determinadas acciones.
Para analizar el contenido de los parmetros existe el evento AT SELECTIONSCREEN. En este evento es donde se validan los valores ingresados en la pantalla
de seleccin.
Supongamos que queremos que la fecha ingresada por pantalla sea mayor o igual
a la fecha actual y que si no es as se emita un mensaje en la pantalla advirtiendo
que el valor introducido es incorrecto. Para esto vamos a tener que crear
una Clase de mensajes a travs de la transaccin SE91 tal como vemos a
continuacin:

Le asignamos una descripcin y grabamos.

Y creamos nuestro primer mensaje.

Luego en nuestro programa, pondremos el cdigo correspondiente en el


evento AT SELECTION-SCREEN para hacer cumplir con esta validacin.

Por ltimo ejecutamos nuestro reporte con una fecha de la pantalla de


seleccin anterior a la fecha actual y vemos el siguiente mensaje en el extremo
inferior izquierdo de la pantalla.

El mensaje que mostramos es un mensaje de error. Esto est determinado por la


letra e que se antecede al nmero del mensaje y la clase de mensajes entre
parntesis. Los tipos de mensajes existentes son:
Tipo

Significado del
Comportamiento
mensaje

El mensaje
aparece en

Status

El programa continua sin


interrupcin

la lnea de
status

Informacin

El programa continua
despus de la interrupcin

una ventana
de dialogo

Warning

Depende del contexto del


mensaje

Barra de
status

Error

Depende del contexto del


mensaje

Barra de
status

Terminacin

El programa termina
despus de un cuadro de
dialogo

una ventana
de dialogo

Dump

Error en tiempo de
ejecucin tipo X

un dump

You might also like