Sap-05-01 Estructura Del Codigo

10
Sintaxis de un programa 1-10

description

sap

Transcript of Sap-05-01 Estructura Del Codigo

Page 1: Sap-05-01 Estructura Del Codigo

Sintaxis de un programa 1-10

Page 2: Sap-05-01 Estructura Del Codigo

Sintaxis de un programa 2-10

Un programa ABAP es una colección de bloques de proceso. Un bloque de proceso es una sección pasiva del código del programa que se procesa secuencialmente cuando es llamado.

Un bloque de proceso es la unidad más pequeña 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 ejecución. Los bloques de evento pueden pertenecer lógicamente al programa ejecutable, a la pantalla de selección, 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 parámetros pueden

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

- Los Módulos son bloques de proceso ABAP especiales para los procesos de

pantalla.

Un programa en Abap tiene la siguiente estructura:

Page 3: Sap-05-01 Estructura Del Codigo

Sintaxis de un programa 3-10

Usamos la transacción SE38 Y SE80 para la creación, modificación y visualización de un programa.

Page 4: Sap-05-01 Estructura Del Codigo

Sintaxis de un programa 4-10

Lección 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 ejecución. El orden en que los ordenemos en el programa es irrelevante, el sistema siempre los llama en un orden particular.

Page 5: Sap-05-01 Estructura Del Codigo

Sintaxis de un programa 5-10

En el ejemplo de la imagen, el sistema llama al evento START-OF-SELECTION tan pronto como salimos de la pantalla de selección. INITIALIZATION es un evento que se usa si necesitamos inicializar un gran número de valores por defecto. En el ejemplo anterior, el dato ‘hace una semana’ se calcula y se sitúa en la variable pa_date. El sistema envía una pantalla de selección al servidor de presentación 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

Más adelante veremos en detalle los distintos bloques de eventos.

Page 6: Sap-05-01 Estructura Del Codigo

Sintaxis de un programa 6-10

Lecc ión 2

Subrut inas

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

código sería deseable poder implementarlo sólo una vez. Esto es posible usando subrutinas. Esto es, implementamos una solución para que, cuando se llame a la subrutina, las variables específicas sean llamadas con valores usando parámetros de interfases. Estos valores pueden venir de diferentes variables, dependiendo de la llamada realizada.

- Leer y mantener el programa más fácilmente: Cada subrutina puede

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

Definición de la subrutina

Cuando definimos una subrutina, especificamos qué parámetros de interfase van a ser ofrecidos. Introducimos un nombre para cada parámetro 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 ejecución de la subrutina la memoria se libera. En el código fuente de la subrutina, podemos acceder a las variables locales y a los parámetros de interfase por su nombre.

Page 7: Sap-05-01 Estructura Del Codigo

Sintaxis de un programa 7-10

Definimos una subrutina reservando una sección para el código 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 número. Después de USING, listamos todos los parámetros que la subrutina necesita. <parametro> se define de la siguiente forma: VALUE(<nombre del parámetro>) TYPE <tipo>. Usamos VALUE(...)para especificar los valores de los objetos de datos asignados a los parámetros de interfase que deben ser pasados a la subrutina. (Esto es conocido como pasar un valor). Podemos elegir el nombre del parámetro de interfase <nombre del parámetro>. En la subrutina podemos usar este nombre para acceder al valor pasado. Después del nombre del parámetro especificamos los atributos del tipo del parámetro de interfase. En el PERFORM (Llamada al FORM), si el objeto de datos asignado no es compatible con el tipo del parámetro 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 parámetros de interfase y el código fuente de la subrutina es procesado secuencialmente. Después de que la subrutina haya sido procesada, el sistema continúa para ejecutar el código fuente del programa que la ha llamado, inmediatamente después de la llamada.

Page 8: Sap-05-01 Estructura Del Codigo

Sintaxis de un programa 8-10

Parámetros de E/S en las subrutinas También necesitamos ser capaces de modificar variables en subrutinas. Usaremos CHANGING para modificar parámetros. El comportamiento en tiempo de ejecución de una subrutina es el siguiente:

Cuando se llama a la subrutina, se genera un objeto temporal en tiempo de ejecución. Se reserva memoria para los parámetros de interfase y las variables locales Todos los parámetros 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 parámetro formal. (Esto es para ambos tipos de parámetros, USING y CHANGING). El código fuente de la subrutina se procesa secuencialmente. Después de que la subrutina ha sido procesada, el valor de todos los parámetros CHANGING es copiado de nuevo en los parámetros reales y el sistema continúa ejecutando el código fuente del programa llamado, inmediatamente después de la llamada a la subrutina.

Cuando definimos una subrutina, listamos todos los parámetros de entrada después de la adición USING. Luego añadimos la adición CHANGING, seguida de todos los parámetros de entrada/salida.

Page 9: Sap-05-01 Estructura Del Codigo

Sintaxis de un programa 9-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 parámetros USING y CHANGING , los parámetros reales deberían ser listados apropiadamente después 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 asignación es siempre en orden estricto, por esto podemos omitir la adición CHANGING cuando llamamos a la subrutina.

Los literales y las constantes solo pueden ser asignados a parámetros USING cuando se llama a la subrutina.

Page 10: Sap-05-01 Estructura Del Codigo

Sintaxis de un programa 10-10

Lecc ión 3

Módulos

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 después de una acción de usuario. Todo el programa lógico que está influenciado por la acción del usuario debe ser procesado en el PAI.

El código del PBO y el PAI se escribe en el Screen Painter. Estos dos eventos conforman el flujo lógico de una pantalla.

MODULE <nombre del módulo ABAP> es el comando más importante de la Pantalla ABAP. Llama a un bloque de proceso que denominaremos módulo. Los módulos empiezan con MODULE y terminan con ENDMODULE. El uso de módulos 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 módulos asignados al evento PBO deberán complementarse con el parámetro OUTPUT y los asignados al PAI con el parámetro INPUT