Lección 6/10: Control de flujo de Datos
1. CONDICIONES Se representan de dos formas.
1.1 IF-ENDIF.
Sintaxis:
IF <CONDICION>. "Condicion 1
DECLARACIONES.
ELSEIF <CONDICION>. "Condicion 2
DECLARACIONES.
ELSE. "Condicion n
DECLARACIONES.
ENDIF.
1.2 CASE/ENDCASE
Sintaxis:
CASE CAMPO.
WHEN Valor1. "Condicion 1
DECLARACIONES.
WHEN Valor2. "Condicion 2
DECLARACIONES.
WHEN OTHERS. "Condicion n
DECLARACIONES.
ENDCASE.
1.3 OPERADORES LÓGICOS
Y AND
O OR
Igual = ,EQ
Distinto <> ,NE
Mayor > ,GT
Menor < ,LT
Mayor o igual >= ,GE
Menor o igual <= ,LE
2. BUCLES
Existe varias formas de representar bucles.
2.1 LOOP-ENDLOOP. Se utiliza para leer registros de una tabla interna.
Sintaxis:
LOOP AT Tabla.
DECLARACIONES.
ENLOOP.
Agregando la cláusula WHERE se puede restringir el numero de lineas a leer, realizara la iteración hasta que se cumpla la condición.
* Lopeamos la tabla interna TI_USUARIOS mientras el estado civil del
* usuario sea soltero
LOOP AT TI_USUARIOS WHERE estado_civil = 'S'.
ENDLOOP.
2.2 DO-ENDDO. La iteración solo se ejecutara si la condición es verdadera.
Sintaxis.
DO n TIMES "n = 5 El bucle dará 5 ciclos
DECLARACIONES.
ENDDO.
3. SENTENCIAS DE CONTROL.
Determinan el procesamiento de un bucle, de un procesos o de un programa, son los siguientes.
3.1 CHECK verifica si la condición es verdadera. En caso que la condición sea falsa, y la sentencia está dentro de un bucle, se saltearán todas las sentencias siguientes que estén dentro del bucle y se continuará con la siguiente iteración. Fuera de un bucle, se saltearán todas las sentencias hasta el final del evento o del programa en proceso.
Sintaxis
CHECK sy-subrc EQ O. "EQ es equivalente a =
3.2 EXIT si esta dentro de un bucle saldrá del bucle, dentro de una subrutina saldrá de la misma y fuera de un bucle saldrá del programa.
Sintaxis:
IF v_clase EQ 'CA'. "EQ es equivalente a =
EXIT.
ENDIF.
CONTINUE se utiliza solo dentro de 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 "EQ es equivalente a =
CONTINUE.
ENDIF.
ENDDO.
STOP finaliza el programa en ejecución, pero antes se ejecuta el evento ENDOFSELECTION.
Sintaxis:
IF sy-subrc NE O "NE es equivalente a <>
STOP.
ENDIF.
LEAVE Finaliza la ejecución del programa, no sin antes ejecutar el evento END-OFSELECTION.
Sintaxis:
IF v_clase EQ 'DT'. "EQ es equivalente a =
LEAVE.
ENDIF.
NOTA se debe tener mucho cuidado en el uso de las sentencias de control CHECK, EXIT, CONTINUE, LEAVE y STOP debido a que estas alteran en forma directa el flujo de control de un programa ABAP.