WHEN '5' OR '4'.
WHEN OTHERS.
WRITE: /'Reprobado'.
ENDCASE.
Si ninguna de las condiciones es válida entonces el sistema ejecutará las declaraciones que estén debajo del WHEN OTHERS
Los operadores lógicoa que tenemos disponibles en ABAP son:
- AND: y
- OR: O
- EQ: Igual =
- NE: Distinto <>
- GT: Mayor >
- LT: Menos <
- GE: Mayor o igual >=
- LE: Menor o igual <=
2. Los bucles
Al igual que con las condiciones, tal como sucede en todos los lenguajes de programación, en ABAP contamos con sentencias para trabajar con bucles.
Bucle: Un bucle o ciclo, en programación, es una sentencia de instrucciones de código que se ejecuta repetidas veces, hasta que la condición asignada a dicho bucle deja de cumplirse.
Los bucles en ABAP se pueden representar de varias formas
1) Mediante la sentencia LOOP-ENDLOOP. Se utiliza exclusivamente cuando trabajmeos con tablas internas, concepto que veremos bien a detalle en la próxima unidad.
LOOP AT ti_salida INTO wa_salida.
WRITE: / wa_salida_vertrag,
wa_salida_vkont,
wa_salida_belnr,
wa_salida_nettobtr.
ENDLOOP.
Se recorre cada registro de la tabla interna TI_SALIDA y lo almacenamos en la estructura WA_SALIDA.
Con el agregado de la cláusula WHERE en la sentencia LOOP-ENDLOOP, se puede restringir el número de línea a leer, ya que se producirá la iteración siempre y cuando se cumpla la condición
*Recorremos TI_SALIDA siempre y cuando el campo NETTOBTR sea mayor a cero
LOOP AT ti_salida INTO wa_salida WHERE nettobtr > 0.
WRITE: / wa_salida_vertrag,
wa_salida_vkont,
wa_salida_belnr,
wa_salida_nettobtr.
ENDLOOP.
<< La utilización de la cláusula WHERE siempre y cuano sea posible, es considerada una buenapractica de progromación ya que limita o restringue el acceso secuencial de todos los reigstros de la tabla interna >>
Otra forma de representar un bucle en SAP es mediante la sentencia DO-ENDDO
Se utiliza la sentencia DO-ENDDO para trabajar con variables y no con tablas internas
La interacción se ejecutará solo si la condición es verdadera
DO 5 TIMES.
ADD 1 TO v_vuelta.
WRITE:/ v_vuelta.
ENDDO.
Existe una tercera forma de realizar bucles en ABAP y es mediante la sentencia WHILE - ENDWHILE,
3. Las sentencias de control
Sentencias de control: Se utilizan para terminar el procesamiento de un bucle, de una subrutina o de todo un programa
>CHECK: Esta sentencia verifica si la cndición es vedadera. Si la condición es falsa y la sentencia está dentro de un bucle, ejemplo un LOOP-ENDLOOP, entonces se saltearán todas las sentencias siguientes que estén dentro del bucle y se continuará con la siguiente interacción.
Fuera de un bucle se saltearán todas las sentencias hasta el final del evento o del programa en proceso.
Si la condición es verdadera entonces se continúa con el procesamiento.
CHECK sy-sybrc EQ 0.
>EXIT: Si ejecutamos esta sentencia dentro de un bucle entonces saldremos del bucle, dentro de una subrutina entonces saldremos de la misma y fuera y de un bucle y fuera de una subrutina salimos de programa.
IF sy-subrc EQ 0.
EXIT.
ENDIF.
>CONTINUE: Esta sentencia se utiliza solo dentro de un bucle. Luego de la ejecución de la sentencia el sistema continúa con la siguiente iteración del bucle.
CLEAR v_vuelta.
DO 5 TIMES.
ADD 1 TOv_vuelta.
IF v_vuelta EQ 5.
WRITE:/ v_vuelta.
ELSE.
CONTINUE.
ENDIF.
ENDDO.
>STOP: Esta sentencia finaliza el programa en ejecución pero antes se ejecuta el evento END-OF-SELECTION, si es que este evento está escrito en el programa.
IF sy-subrc NE 0.
STOP.
ENDIF.
>LEAVE: Esta sentencia finaliza el programa en ejecución y no se eejcuta el evento END-OF-SELECTION.
IF sy-subrc NE 0.
LEAVE.
ENDIF.
Se debe tener sumo cuidado en la utilización 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.