You are on page 1of 7

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
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.

Página 2 de 7
También podemos comprobar si se cumple alguna de las condiciones
mediante la expresión OR.

CASE x.

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.

Página 3 de 7
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.

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.

Página 4 de 7
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

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.

Página 5 de 7
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

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
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

You might also like