IF <CONDICION>. "Condicion 1
DECLARACIONES.
ELSEIF <CONDICION>. "Condicion2
DECLARACIONES.
DECLARACIONES.
ENDIF.
CASE campos.
WHEN valor1. "Condicion 1
DECLARACIONES.
WHEN valor2. "Condicion 2
DECLARACIONES.
ENDCASE.
Y AND
O OR
Igual =, EQ
Distinto <>, NE
Mayor >, GT
Menor <, LT
Mayor o igual >=,GE
Menor o igual <=,LE
Si en cada condicion, se chequea que la variable sea igual a determinado valor y la cantidad de condiciones es alta, seria aconsejable usar CASE-ENDCASE
Bucles:
LOOP-ENDLOOP
LOOP AT TABLA.
DECLARACIONES.
ENDLOOP.
Con el agregado de la clausula WHERE se puede restringir el número de lineas a leer, o sea se produce la iteracion siempre y cuando se cumpla la condicion. WHERE es considerada una buena practica de programacion.
Ejemplo:
LOOP AT TI_USUARIOS WHERE ESTADO_CIVIL = 'S'
ENDLOOP
DO-ENDDO
Ejemplo:
DO n TIMES.
DECLARACIONES.
ENDDO.
DO 5 TIMES.
ENDDO.
SENTENCIAS DE CONTROL: se usan para terminar el procesamiento de un bucle, de un proceso o de un programa.
CHECK: verifica si la condicion es verdadera, si la condicion es falsa y la sentencia esta dentro del bucle, se saltearan todas las sentencias siguientes que esten dentro del bucle y se continuara con la sigueinte iteracion.
Fuera del bucle, se saltearan todas las sentencias hasta el final del evento o del programa en proceso.
CHECK sy-subrc EQ 0. "EQ es equivalente a =
EXIT: dentro del bucle saldra del mismo, dentro de una subrutina saldra de la misma y fuera de un bucle saldra del programa.
IF v_clave EQ 'CA'. "EQ es equivalente a =
EXIT
ENDIF.
CONTINUE: se usa solo dentro del bucle, luego de la ejecucion de la sentencia el sistema continua con la siguiente iteracion.
DO 4 TIMES.
IF sy_subrc EQ 4.
CONTINUE.
ENDIF.
ENDDO.
STOP: se finaliza el programa en ejecucion pero antes se ejecuta el evento END-OF-SELECTION.
IF sy-subrc NE 0. "NE es equivalente a <>
STOP.
ENDIF.
LEAVE: se finaliza el programa en ejecucion pero no se ejecutara el evento END-OF-SELECTION.
IF v_clase EQ 'DT'.
LEAVE.
ENDIF.