✒️ABAP El control del flujo de datos
ABAP El control del flujo de datos
El control de flujo de datos
1. Las condiciones
Una condición consiste en la ejecución de una sentencia o grupo de sentencias que se ejecutarán en base a si se cumple o no una determinada expresión lógica. Las expresiones lógicas son todas aquellas expresiones que obtienen como resultado verdadero o falso.
Si se cumple una expresión lógica, entonces se ejecutará una determinada sentencia o grupo de sentencias y si no se cumple, entonces se ejecutará otra sentencia o grupos de sentencia.
Existen dos formas de representar condiciones en ABAP, una de ellas es utilizando la sentencia IF-ENDIF. Ejemplo IF:
DATA: v_calificacion(1) TYPE c VALUE '8'.
START-OF-SELECTION.
IF v_calificacion >= '8'.
WRITE:/ 'Aprobado'.
ELSE.
WRITE:/ 'Reprobado'.
ENDIF.
Podemos anidar o agregar más condiciones dentro del IF-ENDIF utilizando la sentencia ELSEIF. Por ejemplo IF con ELSIF:
IF v_calificacion >= '9'.
WRITE:/ 'Aprobado con méritos'.
ELSEIF v_calificacion BETWEEN '6' AND '8'.
WRITE:/ 'Aprobado'.
ELSEIF v_calificacion BETWEEN '4' AND '6'.
WRITE:/ 'Aprobado raspado'.
ELSE.
WRITE:/ 'Reprobado'.
ENDIF.
Si ninguna de las condiciones es válida, el sistema ejecutará las declaraciones que est debajo del ELSE.
La otra forma de representar condiciones ABAP es mediante la sentencia CASE-ENDCASE. Ejemplo CASE:
CASE v_calificacion.
WHEN '10' OR '9' OR '8'.
WRITE:/ 'Aprobado con méritos'.
WHEN '7' OR '6'.
WRITE:/ 'Aprobado'.
WHEN '5' OR '4'.
WRITE:/ 'Aprobado raspado'.
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.
Tanto si se usa la sentencia IF-ENDIF o CASE-ENDCASE es necesario el uso de operadores lógicos, que son operadores que nos permiten agrupar expresiones lógicas. Los operadores lógicos que tenemos disponibles en ABAP son:
- Y → AND
- O → OR
- Igual → = o EQ
- Distinto → <> o NE
- Mayor → > o GT
- Menor → < o LT
- Mayor o igual → >= o GE
- Menor o igual → <= o LE
2. Los bucles
Un bucle o ciclo, en programación, es una secuencia de instrucciones de código que se ejecuta repetidas veces, hasta que la condición asignada a dicho bucle deja de cumplirse.
Existen distintos bucles en ABAP, una de ellas es LOOP-ENDLOOP, esta sentencia se utiliza exclusivamente cuando trabajemos con tablas internas.
LOOP-ENDLOOP: Con esta sentencia se puede recorrer el contenido de una tabla interna, registro por registro y en cada registro vamos a realizar algún tipo de procesamiento. Con el agregado de la cláusula WHERE en la sentencia LOOP-ENDLOOP, se puede restringir el número de líneas a leer, ya que se producirá la iteración siempre y cuando se cumpla la condición. Ejemplo LOOP-ENDLOOP:
LOOP AT ti_salida INTO wa_salida WHERE nettobtr > 0.
WRITE:/ wa_salida-vertrag,
wa_salida-vkont,
wa_salida-belnr,
wa_salida-nettobtr.
ENDLOOP.
Otra sentencia para representar un bucle en ABAP es DO-ENDDO. Vamos a utilizar la sentencia DO-ENDDO para trabajar con variables y no con tablas internas, tal como sucede con LOOP-ENDLOOP. La iteración se ejecutará solo si la condición es verdadera.
Existe otra forma de realizar bucles en ABAP y es mediante la sentencia WHILE-ENDWHILE, pero prácticamente nunca se usa, ya que para tablas internas siempre es LOOP-ENDLOOP y para atributos es DO-ENDDO.
3. Las sentencias de control
Se utilizan para terminar el procesamiento de un bucle, de subrutina o de todo un programa. En ABAP hay las siguientes sentencias de control:
- CHECK: Verifica si la condición es verdadera. Si la condición es 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.
- 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 un bucle y fuera de una subrutina salimos del programa.
- CONTINUE: 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.
- STOP: Finaliza el programa en ejecución, pero antes ejecuta el evento END-OF-SELECTION en caso de que este evento este escrito en el programa.
- LEAVE: Finaliza el programa en ejecución y no se ejecuta el evento END-OF-SELECTION.
Debemos 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.
 
 
 
Sobre el autor
Publicación académica de Manel Gangolells Isanta, en su ámbito de estudios para la Carrera Consultor ABAP.
Manel Gangolells Isanta
Profesión: Técnico de Sistemas Informáticos - España - Legajo: MN13W
✒️Autor de: 33 Publicaciones Académicas
🎓Cursando Actualmente: Consultor ABAP Nivel Inicial
Certificación Académica de Manel Gangolells