SAP: Modularización en ABAP

5
MODULARIZACIÓN EN ABAP Podemos modularizar ABAP, esto es dividir el programa en varias partes, mediante el uso de prodecimientos o subrutinas (también llamados métodos o funciones en otros lenguajes). Esto hace que el código sea más fácil de entender, de mantener, y de encapsular los datos. Esto último se consigue porque los datos que se manejan en un procedimiento tan sólo están activos dentro del procedimiento y desaparecen cuando este se ha terminado de ejecutar. Para crear una subrutina o procedimiento usamos la instrucción FORM .....ENDFORM, por ejemplo para crear un procedimiento llamado uno que escriba en pantalla la palabra "uno" FORM uno. WRITE / 'uno'. ENDFORM. Para llamar al procedimiento anterior usamos la instrucción PERFORM PERFORM uno. Cada vez que escribamos la anterior instrucción se ejecutará el código dentro del procedimiento uno. Podemos llamar a un procedimiento dentro de otro procedimiento, por ejemplo FORM dos. 1

description

Tutorial sobre la creación de subrutinas en ABAP

Transcript of SAP: Modularización en ABAP

Page 1: SAP: Modularización en ABAP

MODULARIZACIÓN EN ABAP

• Podemos modularizar ABAP, esto es dividir el programa en variaspartes, mediante el uso de prodecimientos o subrutinas (tambiénllamados métodos o funciones en otros lenguajes). Esto hace queel código sea más fácil de entender, de mantener, y de encapsularlos datos.

• Esto último se consigue porque los datos que se manejan en unprocedimiento tan sólo están activos dentro del procedimiento ydesaparecen cuando este se ha terminado de ejecutar.

• Para crear una subrutina o procedimiento usamos la instrucciónFORM .....ENDFORM, por ejemplo para crear un procedimientollamado uno que escriba en pantalla la palabra "uno"

FORM uno.WRITE / 'uno'.

ENDFORM.

• Para llamar al procedimiento anterior usamos la instrucciónPERFORM

PERFORM uno.

• Cada vez que escribamos la anterior instrucción se ejecutará elcódigo dentro del procedimiento uno.

• Podemos llamar a un procedimiento dentro de otro procedimiento,por ejemplo

FORM dos.

1

Page 2: SAP: Modularización en ABAP

WRITE / 'dos'.PERFORM uno.

ENDFORM.

• Podemos pasar parámetros a una subrutina mediante la instrucciónUSING VALUE o mediante la instrucción CHANGING.

• Cuando pasamos un parámetro con CHANGING en realidad se creaun puntero al dato que le queremos pasar a la subrutina. Esto es loque se llama pasar un parámetro por referencia. Si el código dela subrutina altera el contenido del parámetro esto afecta alprograma en su conjunto.

DATA x TYPE i VALUE 1.PERFORM suma CHANGING x.FORM suma CHANGING y TYPE i.

y = y + 1.ENDFORM.

• En este caso el valor de la variable x se incrementa en uno cadavez que llamamos o ejecutamos este procedimiento, ya que lo queen realidad pasamos es una referencia o puntero que contiene ladirección de x.

• Cuando usamos la instrucción USING VALUE en realidad estamoshaciendo una copia del parámetro y esto es lo que pasamos a lasubrutina. Esto es lo que se llama pasar un parámetro por valor,por ejemplo

DATA x TYPE i VALUE 1.PERFORM suma USING VALUE x.FORM suma USING VALUE y LIKE x.

y = y + 1.

2

Page 3: SAP: Modularización en ABAP

WRITE / y.ENDFORM.

• En este caso al ejecutar la subrutina aparece en pantalla un 2, yaque este es el valor de y. Sin embargo el valor de x permaneceinalterado, ya que tan sólo hemos pasado una copia.

• La variable y tan sólo existe durante el tiempo en que se estáejecutando la subrutina suma, y desaparece con la instrucciónENDFORM.

• Si usamos la intrucción USING es como si estuviéramos usando lainstrucción CHANGING (es decir estamos pasando un parámetropor referencia) , pero es costumbre usar esta instrucción tan sóloen el caso en que al ejecutar el procedimiento no se altere el valordel parámetro, por ejemplo

DATA x TYPE i VALUE 1.PERFORM mostrar USING x.FORM mostar USING y LIKE x.

WRITE / y.ENDFORM.

• En este caso hemos pasado una referencia (es decir la dirección dela variable x) al procedimiento mostrar. Por lo tanto, cuando semuestra en pantalla el valor de y, en realidad lo que se muestra esel valor realmente almacenado en x, no una copia.

• Si usamos la instrucción CHANGING VALUE es como si usáramos lainstrucción USING VALUE, es decir, estamos pasando un parámetropor valor (una copia). La diferencia es que al terminarse deejecutar el procedimiento, este devuelve una copia del valor quetenga el parámetro local, por ejemplo,

3

Page 4: SAP: Modularización en ABAP

DATA x TYPE i VALUE 1.x = PERFORM sumar CHANGING VALUE x.

WRITE x.FORM sumar CHANGING VALUE y LIKE x.

y = y + 1.ENDFORM.

• En este programa el procedimiento sumar añade 1 al parámetroque se pasemos y devuelve el parámetro modificado. Comoasignamos a x el parámetro que devuelve el procedimiento sumar,lo que se muestra por pantalla es 2.

• Podemos pasar dos (o más) parámetros. En este caso el orden enque se pasan los parámetros es importante, ya que los parámetrosse asignan por el orden en que se escriben en la interfaz (es deciren la instrucción PERFORM). Veamos un ejemplo.

DATA x TYPE i VALUE 4.DATA y TYPE i VALUE 2.PERFORM dividir USING VALUE x y.FORM dividir USING VALUE a LIKE x

b LIKE y.DATA result TYPE f.result = a / b.WRITE result.

ENDFORM.

• En este caso el resultado que aparecerá por pantalla será un 2, yaque primero pasamos el valor de x (una copia) y luego el valor dey (otra copia).

• También podemos pasar un parámetro por valor y otro porreferencia, por ejemplo

4

Page 5: SAP: Modularización en ABAP

DATA x TYPE i VALUE 4.DATA y TYPE i VALUE 2.DATA z TYPE i VALUE 10.PERFORM sumar USING VALUE x y

CHANGING z.WRITE z.FORM sumar USING VALUE a LIKE x

b LIKE y.CHANGING c LIKE z.

DATA c TYPE i.c = a + b.

ENDFORM.

• En este caso se mostrará por pantalla el valor de 6, puesto queeste es el valor que tendrá z una vez que se ha ejecutado lafunción sumar, teniendo en cuenta que le hemos pasado del valorde x e y por valor (una copia) y le hemos pasado una referencia(una dirección de memoria) de la variable z.

5