Está en la página 1de 7

SENTENCIAS CONDICIONALES EN ABAP

Para ejecutar instrucciones slo si se cumplen ciertas condiciones


ABAP tiene dos bloques de instrucciones.
El primero es IF.ENDIF
Esta instruccin comprueba si se cumple una condicin antes de
pasar a la siguiente instruccin. Si no se cumple ejecuta la instruccin
que sigue al ENDIF, por ejemplo

IF x > 0.
WRITE / x es un nmero positivo.
ENDIF.

Si queremos aadir una opcin por defecto usamos la instruccin


ELSE, por ejemplo

IF x > 0.
WRITE / x es un nmero positivo.
ELSE
WRITE / x es un nmero negativo.
ENDIF.

Tambin podra darse el caso de que la variable x fuera cero. Si


queremos comprobar si se cumple una segunda condicin usamos la
instruccin ELSEIF, por ejemplo

Pgina 1 de 7

IF x GT 0.
WRITE / x es un nmero positivo.
ELSEIF x EQ 0.
WRITE / x es igual a cero.
ELSE
WRITE / x es un nmero negativo.
ENDIF.

La segunda opcin para comprobar si se cumple una condicin es


mediante el bloque de instrucciones CASEENDCASE. Por ejemplo
para el caso anterior

CASE x.
WHEN x GT 0.
WRITE / x es un nmero positivo.
WHEN x EQ 0.
WRITE / x es cero.
WHEN OTHERS.
WRITE / x es un nmero negativo.
ENDCASE.

Podemos comprobar si se cumplen varias condiciones a la vez


mediante la expresin AND.

Pgina 2 de 7

Tambin podemos comprobar si se cumple alguna de las condiciones


mediante la expresin OR.

CASE x.
WHEN x GT 0 AND x LE 100.
WRITE / x es un nmero positivo entre uno y cien.
WHEN x EQ 0 OR x LT 0.
WRITE / x es cero o un nmero 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


WHILEENDWHILE.

Supongamos que le pedimos por pantalla al usuario que escriba un


nmero que vamos a almacenar en la variable x. Con el siguiente
cdigo le seguimos pidiendo al usuario que introduzca otro nmero
mientras que se cumpla la condicin inicial del bucle (que NO sea
cero).

WHILE x NE 0.
WRITE / Por favor escriba otro nmero.
ENDWHILE.
Pgina 3 de 7

En cada iteracin el sistema comprueba que se cumple la condicin


antes de entrar de nuevo en el bucle. Si no se cumple salta hasta la
sentencia ENDWHILE y contina ejecutando el programa a partir de
esa instruccin.

Al igual que en las expresiones condicionales, en los bucles podemos


comprobar ms de una condicin mediante las expresiones AND u
OR.

WHILE x <> 0 AND x < 100.


WRITE / Por favor escriba otro nmero.
ENDWHILE.

En este caso le pedimos al usuario que escriba otro nmero siempre


que este no sea cero y que sea menor que cien.

Tambin podemos anidar varios bucles o condiciones, por ejemplo

WHILE x <> 0.
PARAMETER x TYPE i.
IF x MOD 2 = 0.
WRITE / Es un nmero par.
ELSE
WRITE / Es un nmero impar.
ENDIF
ENDWHILE.
Pgina 4 de 7

Los bucles NO condicionales se crean con las instrucciones DO


ENDDO.
En este caso debemos indicar el nmero de veces que queremos que
se ejecute un grupo de instrucciones, por ejemplo

DO 10 TIMES
WRITE Hola amigos.
ENDDO.

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

Podemos terminar una vuelta con la instruccin CONTINUE

DO 10 TIMES
PARAMETER x TYPE i.
IF x <= 0.
CONTINUE.
ENDIF.
IF x MOD 2 = 0.
WRITE / Es un nmero par.
ELSE.
WRITE / Es un nmero impar.
ENDIF.
ENDDO.
Pgina 5 de 7

En este caso si el usuario escribe un nmero positivo el sistema


escribe en la pantalla si es un nmero par o impar (as hasta un
mximo de diez veces). Si el usuario escribe un nmero negativo el
sistema vuelve al principio del bucle (vuelve a ejecutar la primera
instruccin).

Otra manera de hacer lo mismo es con la instruccin CHECK

DO 10 TIMES
PARAMETER x TYPE i.
CHECK x > 0.
IF x MOD 2 = 0.
WRITE / Es un nmero par.
ELSE.
WRITE / Es un nmero impar.
ENDIF.
ENDDO.

En este caso el programa comprueba que x es un nmero positivo


antes de seguir a la siguiente instruccin.

Pgina 6 de 7

Por ltimo podemos usar la instruccin 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 nmero par.
ELSE.
WRITE / Es un nmero impar.
ENDIF.
ENDDO.

En este caso si el usuario introduce un nmero negativo el programa


nos lleva inmediatamente a la instruccin ENDDO y contina
ejecutando la instruccin que viene a continuacin (es decir nos saca
del bucle).

Pgina 7 de 7

También podría gustarte