Você está na página 1de 10

Sintaxis de un programa

1-10

Un programa ABAP es una coleccin de bloques de proceso. Un bloque de proceso


es una seccin pasiva del cdigo del programa que se procesa secuencialmente
cuando es llamado.
Un bloque de proceso es la unidad ms pequea en ABAP. No pueden ser separados
ni anidados.
Hay varios tipos de bloques de proceso ABAP:
-

Bloques de Eventos son bloques de procesos ABAP que son llamados por
el sistema en tiempo de ejecucin. Los bloques de evento pueden
pertenecer lgicamente al programa ejecutable, a la pantalla de seleccin, al
listado o a la pantalla. Esta unidad trata con los bloques de eventos que
pertenecen al programa ejecutable.

La subrutina se lanza por una sentencia ABAP. Los parmetros pueden


pasarse a las subrutinas usando una interfase y las subrutinas pueden
contener variables locales.

Los Mdulos son bloques de proceso ABAP especiales para los procesos de
pantalla.

Un programa en Abap tiene la siguiente estructura:

Sintaxis de un programa

2-10

Usamos la transaccin SE38 Y SE80 para la creacin, modificacin y visualizacin


de un programa.

Sintaxis de un programa

3-10

Leccin 1
Bloques de eventos
Los bloques de Eventos son indicados en el programa mediante una palabra clave y
est delimitado por el inicio del siguiente bloque de proceso. Los diferentes bloques
de eventos tienen diferentes tareas. El bloque de evento por defecto es:
START-OF-SELECTION.

Los eventos se llaman en tiempo de ejecucin. El orden en que los ordenemos en el


programa es irrelevante, el sistema siempre los llama en un orden particular.

Sintaxis de un programa

4-10

En el ejemplo de la imagen, el sistema llama al evento START-OF-SELECTION tan


pronto como salimos de la pantalla de seleccin.
INITIALIZATION es un evento que se usa si necesitamos inicializar un gran
nmero de valores por defecto. En el ejemplo anterior, el dato hace una semana
se calcula y se sita en la variable pa_date. El sistema enva una pantalla de
seleccin al servidor de presentacin conteniendo los valores calculados por
defecto. El valor puede ser cambiado por el usuario.
Eventos disponibles en el sistema:
-

INITIALIZATION
AT SELECTION-SCREEN ON...
START-OF-SELECTION
END-OF-SELECTION
TOP-OF-PAGE
END-OF-PAGE
AT LINE-SELECTION
AT USER-COMMAND
TOP-OF-PAGE DURING LINE-SELECTION

Ms adelante veremos en detalle los distintos bloques de eventos.

Sintaxis de un programa

5-10

Leccin 2
Subrutinas
Uso de subrutinas
El uso de las subrutinas en un programa es muy importante. La mayor ventaja de
esto es que podemos:
-

Reusar el programa: Si aparece varias veces en el programa el mismo


cdigo sera deseable poder implementarlo slo una vez. Esto es posible
usando subrutinas. Esto es, implementamos una solucin para que, cuando
se llame a la subrutina, las variables especficas sean llamadas con valores
usando parmetros de interfases. Estos valores pueden venir de diferentes
variables, dependiendo de la llamada realizada.

Leer y mantener el programa ms fcilmente: Cada subrutina puede


verse como un bloque, hasta que el programador tiene que implementarlo
en detalle.

Definicin de la subrutina
Cuando definimos una subrutina, especificamos qu parmetros de interfase van a
ser ofrecidos. Introducimos un nombre para cada parmetro y especificamos sus
atributos.
Usamos DATA para definir las variables. La memoria para estas variables est
disponible tan pronto como se llama a las subrutinas. Al finalizar la ejecucin de la
subrutina la memoria se libera.
En el cdigo fuente de la subrutina, podemos acceder a las variables locales y a los
parmetros de interfase por su nombre.

Sintaxis de un programa

6-10

Definimos una subrutina reservando una seccin para el cdigo fuente al final del
programa, usando FORM ... ENDFORM.
FORM <nombre de la subrutina> USING <parametro1><parametro2>
<nombre de la subrutina> especifica el nombre de la subrutina. El nombre debe
ser una sola palabra, y debe empezar por una letra, no por un nmero. Despus de
USING, listamos todos los parmetros que la subrutina necesita. <parametro> se
define de la siguiente forma:
VALUE(<nombre del parmetro>) TYPE <tipo>.
Usamos VALUE(...)para especificar los valores de los objetos de datos asignados a
los parmetros de interfase que deben ser pasados a la subrutina. (Esto es
conocido como pasar un valor).
Podemos elegir el nombre del parmetro de interfase <nombre del parmetro>.
En la subrutina podemos usar este nombre para acceder al valor pasado. Despus
del nombre del parmetro especificamos los atributos del tipo del parmetro de
interfase.
En el PERFORM (Llamada al FORM), si el objeto de datos asignado no es
compatible con el tipo del parmetro de interfase, el chequeo de sintaxis devuelve
un error.

Llamadas a subrutina.
Cuando llamamos a una subrutina, se genera un objeto temporal para ella.
En el momento de la llamada, los valores se copian en los parmetros de interfase
y el cdigo fuente de la subrutina es procesado secuencialmente. Despus de que la
subrutina haya sido procesada, el sistema contina para ejecutar el cdigo fuente
del programa que la ha llamado, inmediatamente despus de la llamada.

Sintaxis de un programa

7-10

Parmetros de E/S en las subrutinas


Tambin necesitamos ser capaces de modificar variables en subrutinas. Usaremos
CHANGING para modificar parmetros. El comportamiento en tiempo de ejecucin
de una subrutina es el siguiente:
Cuando se llama a la subrutina, se genera un objeto temporal en tiempo de
ejecucin. Se reserva memoria para los parmetros de interfase y las variables
locales Todos los parmetros USING (acceso de solo lectura) y CHANGING de la
subrutina deben ser asignados a un tipo de variable compatible del programa
llamado.
Cuando se llama a la subrutina, el valor real es copiado al parmetro formal. (Esto
es para ambos tipos de parmetros, USING y CHANGING). El cdigo fuente de la
subrutina se procesa secuencialmente. Despus de que la subrutina ha sido
procesada, el valor de todos los parmetros CHANGING es copiado de nuevo en
los parmetros reales y el sistema contina ejecutando el cdigo fuente del
programa llamado, inmediatamente despus de la llamada a la subrutina.

Cuando definimos una subrutina, listamos todos los parmetros de entrada despus
de la adicin USING.
Luego aadimos la adicin CHANGING, seguida de todos los parmetros de
entrada/salida.
Sintaxis de un programa

8-10

FORM <nombre de la subrutina>


USING <u-parametro 1> <...><u-parametro n>
CHANGING <c-parametro 1> <...> <c-parametro m>.
...
ENDFORM.
Cuando llamamos a una subrutina con parmetros USING y CHANGING , los
parmetros reales deberan ser listados apropiadamente despus de las adiciones
USING y CHANGING.
PERFORM <nombre de la subrutina>
USING < parametro real1> <...> < parametro realN>
CHANGING < parametro real1 n+1> <...>
< parametro real n+m>.
La asignacin es siempre en orden estricto, por esto podemos omitir la adicin
CHANGING cuando llamamos a la subrutina.
Los literales y las constantes solo pueden ser asignados a parmetros USING
cuando se llama a la subrutina.

Sintaxis de un programa

9-10

Leccin 3
Mdulos
Cada pantalla tiene dos bloques de evento:
- PROCESS BEFORE OUTPUT (PBO) es procesado inmediatamente antes
de que se muestre la pantalla.
- PROCESS AFTER INPUT (PAI) es procesado inmediatamente despus de
una accin de usuario. Todo el programa lgico que est influenciado por la
accin del usuario debe ser procesado en el PAI.
El cdigo del PBO y el PAI se escribe en el Screen Painter. Estos dos eventos
conforman el flujo lgico de una pantalla.
MODULE <nombre del mdulo ABAP> es el comando ms importante de la
Pantalla ABAP. Llama a un bloque de proceso que denominaremos mdulo.
Los mdulos empiezan con MODULE y terminan con ENDMODULE.
El uso de mdulos dentro de los bloques Process Before Output y Process After
Input es muy recomendable ya que algunas sentencias Abap no pueden ejecutarse
directamente en estos bloques, deben de ejecutarse dentro de un MODULE.
Los mdulos asignados al evento PBO debern complementarse con el parmetro
OUTPUT y los asignados al PAI con el parmetro INPUT

Sintaxis de un programa

10-10

Você também pode gostar