
- Control del Flujo de Datos
- Condiciones
1.- Utilizando IF-ENDIF:
IF <CONDICION>.
DECLARACIONES.
ELSEIF <CONDICION>.
DECLARACIONES.
ELSE.
DECLARACIONES.
EDNIF.
2.- Mediante CASE-ENDCASE:
CASE CAMPO.
WHEN VALOR1.
DECLARACIONES.
WHEN VALOR2.
DECLARACIONES.
WHEN OTHERS.
DECLARACIONES.
ENDCASE.
* Operadores lógicos:
Y -----------------------> AND
O ----------------------> OR
Igual ------------------> = , EQ
Distinto --------------> <> , NE
Mayor -----------------> > , GT
Menor -----------------> < , LT
Mayor o igual -------> >= , GE
Menor o igual -------> <= , LE
- Bucles
1.- Mediante la palabra clave LOOP-ENDLOOP:
LOOP AT TABLA.
DECLARACIONES.
ENDLOOP.
Si agregamos la cláusula WHERE se restringe el número de líneas a leer, la iteración se producirá siempre y cuando se cumpla la condición. La utilización de WHERE es una buena práctica de programación.
LOOP AT TI_USUARIOS WHERE ESTADO_CIVIL = 'S'.
ENDLOOP.
2.- Mediante la palabra clave DO-ENDDO.
DO n TIMES.
DECLARACIONES.
ENDDO.
La iteración se ejecutará sólo si la condición es verdadera.
Un bucle o ciclo es una sentencia que se realiza repetidamente a un trozo limitado de código hasta que la condición asignada al bucle se deje de cumplir.
- Sentencias de control.
Las sentencias de control se utilizan para terminar el procesamiento de un bucle, un proceso o un programa. Estas son:
- CHECK: Verifica si la condición es verdadera. Si la condición es falsa y se encuentra dentro de un bucle, se saltearán todas las sentencias siguientes dentro del bucle y continuará con la siguiente iteración. fuera del bucle se salteará todas las sentencias hasta el final del evento o del programa en proceso.
CHECK sy-subrc EQ 0.
- EXIT: Si está dentro del bucle nos sacará de él, dentro de una subrutina saldrá de la misma y fuera del bucle saldrá del programa.
IF v_clase EQ 'CA'.
EXIT.
ENDIF.
- CONTINUE: Se usa solo dentro del bucle. Luego de la ejecución de la sentencia el sistema continua con la siguiente iteración.
DO 4 TIMES.
IF sy-subrc EQ 4.
CONTINUE.
ENDIF.
ENDDO.
- STOP: Finaliza el programa en ejecución pero antes ejecuta el evento END-OF-SELECTION.
IF sy-subrc NE 0.
STOP.
ENDIF.
- LEAVE: Finaliza el programa en ejecución pero no se ejecuta el evento END-OF-SELECTION.
IF v_clase EQ 'DT'.
LEAVE.
ENDIF.
Se debe tener cuidado con el uso de sentencias de control debido a que alteran en forma directa el flujo de control de un programa ABAP.