
El control del flujo de datos
1. Las condiciones
Condicion: Consiste en la ejecucion de una sentencia o grupo de sentencias que se ejecutaran en base a si se cumple o no una determinada expersion logica.
Las expersiones logicas son todas aquellas expresiones que se obtienen como resultado verdadero o falso.
Ejemplo: 1 mas 1 = 2.
Existen 2 formas de representar condiciones en ABAP, una de ellas es utilizando la sentencia IF-ENDIF.
Ej:
DATA: v_calificacion(1) TYPE c VALUE '8',
START-OF-SELECTIOM.
IF v_calificacion >= '8'
Write:/ 'Aprobado'.
ELSE.
Write:/ 'Reprobado'.
ENDIF.
Podemos anidar o agregar mas condiciones dentro del IF-ENDIF, utilizando la sentencia ELSEIF:
IF v_calificacion >= '9'
Write:/ 'Aprobado con meritos'.
ELSEIF v_calificacion BETWEEN '6' AND '8'.
WRITE:/ 'Aprobado'.
ELSEIF v_calificacion BETWEEN '4' AND '6'.
WRITE:/ 'Aprobado reaspando'.
ELSE.
Write:/ 'Reprobado'.
ENDIF.
La otra forma de represnar condicione es mediante CASE-ENDCASE.
CASE v_calificacion.
WHEN '10' OR '9' OR '8'.
WRITE:/ 'Aprobado con meritos'.
WHEN '7' OR '6'.
Write:/ 'Aprobado'.
WHEN '5' OR '4'.
Write:/ 'Aprobado raspando'.
WHEN OTHERS.
WRITE:/ 'Reprobado'.
ENDCASE.
Ya sea utilizando IF-ENDIF o CASE-END CASE vamos a emplear los operadores logicos. Los operadores logicos que tenemos son: AND (y) - OR (o) - EQ (igual =) - NE (distinto <>) - GT (Mayor >) - LT (Menor <) - GE (Mayor o igual >=) - LE (Menor o igual <=).
2. los bucles
Bucle o ciclo en programacion es una secuencia de instrucciones de codigo que se ejecuta repetidas veces hasta que la condicion asignada a dicho bulce deja de cumplirse
Los bucles en ABAP se puede representar de varias formas
- Mediante la sentencia LOOP-ENDLOOP. La utilizaremos exclusivamente cuando trabajaemos con tablas internas. Ejemplo:
LOOP AT ti_salida INTO wa_salida-
WRITE:/ wa_salida-vertrag,
wa_salida-Vkont,
wa_salida-belnr,
wa_salida_nettobtr.
ENDLOOP.
Con el agregado de la clausula WHERE en la sentencia LOOP- ENDLOOP. se puede restringir el numero de lineas a leer.
2. Otra forma de representar un bucle es mediante la sentencia DO-EMDDO.
Vamos a utilizar esta sentencia para trabajar con variables y no con tablas internas. ejemplo:
DO 5 Times.
ADD 1 TO v_vuelta.
Write:/ v_vuelta.
ENDDO.
3. Las sentecias de control
Sentencia de control se utiliza para terminar el procesamiento de un bucle, subrutina o de todo un programa
En ABAP contamos con las siguientes sentencias:
- Check: esta sentencia verifica si la condicion es verdadera
Si la condicion es falsa y la sentencia esta dentro de un bucle, por ejempl un LOOP-ENDLOOP, entonces se saltearan las sentencias siguientes que esten dentro del bucle y se continuara con la siguient eiteracion.
Si la condicion es verdadera entonces se continua con el procesamiento: CHECK sy-subrc 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 de una subrutina salimos del programa:
IF sy-subrc EQ 0.
EXIT.
ENDIF.
- Continue: esta sentencia se utiliza solo dentro de un bucle. Luego de la ejecucion de la sentencia el sistema continua con la siguiente iteracion del bucle
CLEAR v_vuelta.
DO 5 Times.
ADD 1 TO v:vuelta.
IF v_vuelta EQ 5.
Write:/ v_vuelta
ELSE.
Continue.
ENDIF.
ENDDO.
- STOP: esta sentencia finaliza el programa en ejecucion pero antes se ejecutara el evento END-OF-SELECTION, si es que este evento esta escrito en el programa
IF sy-subrc NW 0.
STOP.
ENDIF.
- LEAVE: esta sentencia finaliza el programa en ejecucion y no se ejecuta el evento END-OF-SLECTION.
IF sy-subrc NE 0.
LEAVE.
ENDIF.
Debemos tener sumo cuidado en la utilizacion de las sentencias de control CHECK, EXIT, CONTINUE, LEAVE y STOP debido a que estas alteran en forma directa el flujo de contros de un programa ABAP.