
Una ramificación condicional es una estructura de control que le permite hacer que la ejecución del código dependa de condiciones lógicas.
La ramificación condicional más común consiste en un par de palabras clave IF y ENDIF. El bloque de código entre IF y ENDIF solo se ejecuta si se cumple la condición después de IF.
Puede añadir más bloques de código ampliando la estructura IF … ENDIF con hasta una palabra clave ELSE y un número arbitrario de palabras clave ELSEIF. Al añadir la palabra clave ELSE se asegura de que siempre se ejecute exactamente uno de los bloques de código. Si falta ELSE, puede suceder que no se ejecute ninguno de los bloques de código.
El bloque de código a ejecutar se determina de la siguiente manera:
- En primer lugar, se evalúa la condición IF. Si se cumple, se ejecuta el bloque de código relacionado y el programa continúa después de ENDIF.
- Solo si no se cumple la condición IF, se evalúa la condición después de la primera ELSEIF. Si se cumple, se ejecuta el bloque de código relacionado y el programa continúa después de ENDIF.
- Esto se realiza de forma consecutiva para todas las condiciones ELSEIF. Si no se cumple ninguna de las condiciones y la estructura contiene ELSE, se ejecuta el bloque de código después de ELSE. De lo contrario, no se ejecuta ninguno de los bloques de código.
Consejo

Las condiciones lógicas son una combinación de comparaciones, operaciones lógicas, expresiones y funciones que el sistema de tiempo de ejecución evalúa para decidir si la condición es verdadera o falsa.
El caso de uso más común para condiciones lógicas es después de las palabras clave IF o ELSEIF en un IF ... ENDIF. estructura.
El primer ejemplo es una comparación simple: La condición es verdadera si los dos objetos de datos x e y tienen el mismo valor.
El segundo ejemplo es un poco más sofisticado: el valor de x es mayor o igual que y y menor que dos veces el valor de y o es menor o igual a y y mayor que dos veces el valor de y.
El tercer ejemplo utiliza la función aritmética abs( ) y la expresión lógica BETWEEN <expresión1> AND <expresión2> . La condición es verdadera si el valor absoluto de x se encuentra entre el valor absoluto de y y el valor absoluto de dos veces y.
Para las comparaciones de valores simples puede utilizar los operadores =, <>, >, <, >= y <=. No solo puede comparar los valores de los objetos de datos, sino los valores de muchas otras expresiones, como la expresión aritmética 2 * y en el ejemplo.
Nota
Puede utilizar los operadores AND y OR para combinar expresiones lógicas y el operador NOT para negar una expresión. Sin paréntesis, NO se enlaza más fuerte que AND y AND más fuerte que OR.
ABAP conoce algunas expresiones lógicas especiales:
- <objeto de datos> IS INITIAL es verdadero si <objeto de datos> contiene su valor inicial específico de tipo
- <objeto de datos> NO ES INICIAL es verdadero si <objeto de datos> contiene un valor que es diferente del valor inicial específico de tipo
- <objeto de datos> ENTRE <expresión1> Y <expresión2>
Algunas funciones ABAP especiales son funciones de predicado. Esto significa que son condiciones lógicas. Contiene( ) es una función que compara valores alfanuméricos y line_exist( ) realiza una verificación de existencia para una fila en una tabla interna.

Una segunda técnica para la ramificación condicional es el CASE … WHEN .. ENDCASE estructura de control.
Ramificación condicional con CASE .. ENDCASE es un caso especial de ramificación más general con IF … ENDIF. Puede utilizar CASE en situaciones en las que la ramificación depende del valor de un objeto de datos individual, que se compara consecutivamente con un conjunto de valores posibles, utilizando una comparación igual cada vez.
En el ejemplo, el valor del número de objeto de datos se compara con los valores 1 y 2. Si el valor es igual a 1, se ejecuta <code_block_1> y si el valor euqals 2, <code_blocl_2> se ejecuta en su lugar. Para cualquier otro valor, se ejecuta el bloque de código después de WHEN OTHERS.
Cualquier ramificación condicional con CASE … ENDCASE también se puede implementar con una estructura IF … ENDIF. Esto se ilustra con el ejemplo de la derecha.
Consejo


