TSAP

<< Todas las entradas

Control de Flujo en ABAP

15/05/2020 | ABAP | ABAP, Código

Sentencias IF

Como en cualquier lenguaje de programación, una sentencia IF evalua la validez de una expresión. Cada IF termina con un ENDIF. Si la condición es válida, se ejecuta el bloque de código comprendido entre el IF/ENDIF, de lo contrario, se ejecutará la línea siguiente al ENDIF.

Los operadores utilizados son:

Operador Descripción
= Igual
<> Distinto
> Mayor
< Menor
<= Menor o igual
>= Mayor o igual
[NOT] BETWEEN n AND m Dentro (o fuera) del rango

Un ejemplo simple sería algo como:

DATA: lv_edad TYPE i.

lv_edad = 25.

IF lv_edad > 18.
    WRITE: 'La persona es mayor de edad'.
ENDIF.

En este caso, como lv_edad es igual a 25, nuestro programa escribiría el mensaje en pantalla.

Como era de esperarse, también existe el ELSE en ABAP.

DATA: lv_edad TYPE i.

lv_edad = 25.

IF lv_edad > 18.
    WRITE: 'La persona es mayor de edad'.
ELSE.
    WRITE: 'La persona es menor de edad'.
ENDIF.

Se leería algo como "Si la variable lv_edad es mayor (estricto) que 18, escribir el mensaje 'La persona es mayor de edad', sino, escribir el mensaje 'La persona es menor de edad'.

También se pueden combinar sentencias con AND / OR:

DATA: lv_edad TYPE i.

lv_edad = 25.

IF lv_edad > 18 AND lv_edad < 60.
    WRITE: 'La persona es mayor de edad, pero menor de 60 años'.
ELSE.
    WRITE: 'La persona es menor de edad ó mayor de 60 años'.
ENDIF.

IFs con Strings

Para buscar strings dentro de variables, ABAP tiene los operadores CA, CS y CP:

Operador Descripción
CA Contains Any - Devuelve TRUE si contiene alguno de los caracteres
CS Contains String - Devuelve TRUE si contiene el string completo
CP Contains Patter - Devuelve TRUE si contiene el patrón

DATA: lv_nombre TYPE string.

lv_nombre = 'Fernando'.

IF lv_nombre CS 'nand'.
    WRITE: 'El string contiene la cadena nand'.
ENDIF.

Sentencias CASE

Cuando tenemos varios bloques de código posibles de acuerdo al valor de la variable, se vuelve más práctico usar CASE en vez de IF.

DATA: lv_dia TYPE i.

lv_dia = 2.

CASE lv_dia.
    WHEN 0.
        WRITE: 'Hoy es Lunes'.
    WHEN 1.
        WRITE: 'Hoy es Martes'.
    WHEN 2.
        WRITE: 'Hoy es Miércoles'.
    WHEN 3.
        WRITE: 'Hoy es Jueves'.
    WHEN 4.
        WRITE: 'Hoy es Viernes'.
    WHEN 5.
        WRITE: 'Hoy es Sábado'.
    WHEN OTHERS.
        WRITE: 'Hoy es Domingo'.
ENDCASE.

Loops DO & WHILE

Con DO - ENDDO, se puede repetir el mismo bloque de código varias veces:

DO 100 TIMES.
    WRITE: 'Este texto se va a escribir 100 veces'.
ENDDO.

Otra forma de generar loops, es con WHILE:

DATA: lv_variable TYPE i VALUE 0.

WHILE lv_variable < 100.
    WRITE: lv_variable.
    lv_variable = lv_variable + 1.
ENDWHILE.

La diferencia entre DO y WHILE, es que en el WHILE, en vez de explicitar la cantidad de veces que se debe ejecutar, se indica la condición de salida del loop.

En caso de querer "romper" el loop en alguna situación, se utiliza "EXIT", tanto para DO como para WHILE.


Comentarios...

Cargando ...