SAP: Instrucciones de Control y Bucles en ABAP

8

Click here to load reader

description

Tutorial sobre el uso de instrucciones de control y de bucles en Abap

Transcript of SAP: Instrucciones de Control y Bucles en ABAP

Page 1: SAP: Instrucciones de Control y Bucles en ABAP

SENTENCIAS CONDICIONALES EN ABAP

Para ejecutar instrucciones sólo si se cumplen ciertas condiciones ABAP tiene dos bloques de instrucciones.

El primero es IF….ENDIF

Esta instrucción comprueba si se cumple una condición antes de pasar a la siguiente instrucción. Si no se cumple ejecuta la instrucción que sigue al ENDIF, por ejemplo

IF x > 0.

WRITE / ‘x es un número positivo’.

ENDIF.

Si queremos añadir una opción por defecto usamos la instrucción ELSE, por ejemplo

IF x > 0.

WRITE / ‘x es un número positivo’.

ELSE

WRITE / ‘x es un número negativo’.

ENDIF.

También podría darse el caso de que la variable x fuera cero. Si queremos comprobar si se cumple una segunda condición usamos la instrucción ELSEIF, por ejemplo

Página 1 de 7

Page 2: SAP: Instrucciones de Control y Bucles en ABAP

IF x GT 0.

WRITE / ‘x es un número positivo’.

ELSEIF x EQ 0.

WRITE / ‘x es igual a cero’.

ELSE

WRITE / ‘x es un número negativo’.

ENDIF.

La segunda opción para comprobar si se cumple una condición es mediante el bloque de instrucciones CASE…ENDCASE. Por ejemplo para el caso anterior

CASE x.

WHEN x GT 0.

WRITE / ‘x es un número positivo’.

WHEN x EQ 0.

WRITE / ‘x es cero’.

WHEN OTHERS.

WRITE / ‘x es un número negativo’.

ENDCASE.

Podemos comprobar si se cumplen varias condiciones a la vez mediante la expresión AND.

También podemos comprobar si se cumple alguna de las condiciones mediante la expresión OR.

CASE x.

Página 2 de 7

Page 3: SAP: Instrucciones de Control y Bucles en ABAP

WHEN x GT 0 AND x LE 100.

WRITE / ‘x es un número positivo entre uno y cien’.

WHEN x EQ 0 OR x LT 0.

WRITE / ‘x es cero o un número negativo’.

ENDCASE.

INTRUCCIONES DE BUCLE

En Abap existen dos tipos de bucles. Los bucles condicionales y los no condicionales.

Los bucles condicionales se crean con el grupo de instrucciones WHILE…ENDWHILE.

Supongamos que le pedimos por pantalla al usuario que escriba un número que vamos a almacenar en la variable x. Con el siguiente código le seguimos pidiendo al usuario que introduzca otro número mientras que se cumpla la condición inicial del bucle (que NO sea cero).

WHILE x NE 0.

WRITE / ‘Por favor escriba otro número’.

ENDWHILE.

En cada iteración el sistema comprueba que se cumple la condición antes de entrar de nuevo en el bucle. Si no se cumple salta hasta la sentencia ENDWHILE y continúa ejecutando el programa a partir de esa instrucción.

Página 3 de 7

Page 4: SAP: Instrucciones de Control y Bucles en ABAP

Al igual que en las expresiones condicionales, en los bucles podemos comprobar más de una condición mediante las expresiones AND u OR.

WHILE x <> 0 AND x < 100.

WRITE / ‘Por favor escriba otro número’.

ENDWHILE.

En este caso le pedimos al usuario que escriba otro número siempre que este no sea cero y que sea menor que cien.

También podemos anidar varios bucles o condiciones, por ejemplo

WHILE x <> 0.

PARAMETER x TYPE i.

IF x MOD 2 = 0.

WRITE / ‘Es un número par’.

ELSE

WRITE / ‘Es un número impar’.

ENDIF

ENDWHILE.

Los bucles NO condicionales se crean con las instrucciones DO…ENDDO.

En este caso debemos indicar el número de veces que queremos que se ejecute un grupo de instrucciones, por ejemplo

DO 10 TIMES

Página 4 de 7

Page 5: SAP: Instrucciones de Control y Bucles en ABAP

WRITE ‘Hola amigos’.

ENDDO.

En este caso aparecerá por pantalla 10 veces la frase ‘Hola amigos’.

Podemos terminar una vuelta con la instrucción CONTINUE

DO 10 TIMES

PARAMETER x TYPE i.

IF x <= 0.

CONTINUE.

ENDIF.

IF x MOD 2 = 0.

WRITE / ‘Es un número par’.

ELSE.

WRITE / ‘Es un número impar’.

ENDIF.

ENDDO.

En este caso si el usuario escribe un número positivo el sistema escribe en la pantalla si es un número par o impar (así hasta un máximo de diez veces). Si el usuario escribe un número negativo el sistema vuelve al principio del bucle (vuelve a ejecutar la primera instrucción).

Otra manera de hacer lo mismo es con la instrucción CHECK

DO 10 TIMES

Página 5 de 7

Page 6: SAP: Instrucciones de Control y Bucles en ABAP

PARAMETER x TYPE i.

CHECK x > 0.

IF x MOD 2 = 0.

WRITE / ‘Es un número par’.

ELSE.

WRITE / ‘Es un número impar’.

ENDIF.

ENDDO.

En este caso el programa comprueba que x es un número positivo antes de seguir a la siguiente instrucción.

Página 6 de 7

Page 7: SAP: Instrucciones de Control y Bucles en ABAP

Por último podemos usar la instrucción EXIT para salir del bucle

DO 10 TIMES

PARAMETER x TYPE i.

IF x < 0.

EXIT.

ENDIF.

IF x MOD 2 = 0.

WRITE / ‘Es un número par’.

ELSE.

WRITE / ‘Es un número impar’.

ENDIF.

ENDDO.

En este caso si el usuario introduce un número negativo el programa nos lleva inmediatamente a la instrucción ENDDO y continúa ejecutando la instrucción que viene a continuación (es decir nos saca del bucle).

Página 7 de 7