✒️ABAP El control del flujo de datos
ABAP El control del flujo de datos
El control de flujo de datos en ABAP (Advanced Business Application Programming) se refiere a la capacidad de dirigir el flujo de ejecución del programa mediante el uso de estructuras de control y sentencias condicionales. Esto permite que el programa tome decisiones y realice acciones diferentes en función de ciertas condiciones y resultados. Algunas de las estructuras de control y sentencias condicionales más comunes en ABAP son:
- IF...ELSE: Esta estructura de control permite ejecutar un bloque de código si se cumple una condición y otro bloque de código si la condición no se cumple. La sintaxis es la siguiente:
- CASE: La sentencia CASE se utiliza para evaluar múltiples condiciones y ejecutar diferentes bloques de código en función del valor de una variable o expresión. La sintaxis es la siguiente:
- LOOP: La estructura LOOP se utiliza para iterar sobre una tabla interna o una tabla de la base de datos y ejecutar un bloque de código para cada fila de la tabla. La sintaxis es la siguiente:
- WHILE: La estructura WHILE se utiliza para repetir un bloque de código mientras se cumpla una condición. La sintaxis es la siguiente:
- DO...ENDDO: Esta estructura de control se utiliza para repetir un bloque de código al menos una vez antes de verificar una condición. La sintaxis es la siguiente:
- BREAK y CONTINUE: Estas sentencias de control se utilizan para alterar el flujo de ejecución dentro de una estructura de control LOOP o WHILE. BREAK se utiliza para salir del bucle, mientras que CONTINUE se utiliza para omitir el resto del bucle y continuar con la siguiente iteración.
CONTROL DEL FLUJO DE DATOS:
En ABAP al igual que otros lenguajes de programación, se cuenta con sentencias para trabajar con condiciones.
1) Condición: Es una sentencia o grupo de sentencias que se ejecutarán en base a si se cumple o no una expresión lógica. Las expresiones lógicas son aquellas expresiones que obtienen un resultado verdadero o falso. Si la expresión lógica se cumple, se ejecutarán determinada sentencia o grupo de sentencias, si la expresión lógica no se cumple, se ejecutarán otra sentencia o grupo de sentencias.
Condiciones:
Las condiciones en ABAP se pueden representar en dos formas: una es con la sentencia IF-ENDIF. Dentro de un IF-ENDIF, se pueden utilizar condiciones anidadas con la sentencia ELSEIF. Si ninguna de las condiciones son válidas, el sistema ejecutará las declaraciones que estén debajo del ELSE.
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.
DO 5 TIMES.
ADD 1 TO v_vuelta.
WRITE:/ v_vuelta.
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.
La otra forma de representar condiciones en ABAP es con el uso de la sentencia CASE-ENDCASE con el WHEN y WHEN OTHERS. Si ninguna de las condiciones establecidas con el CASE es válida, se ejecutará las declaraciones que estén debajo del WHEN OTHERS, ya sea que se utilice la sentencia IF-ENDIF o la sentencia CASE-ENDCASE.
También se van a requerir los operadores lógicos disponibles en ABAP: AND - OR - EQ - NE - GT - LT - GE - 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. Los bucles en ABAP se pueden representar de varias formas.
- La primera es mediante la sentencia LOOP-ENDLOOP, la cual se utiliza exclusivamente cuando se trabaja con tablas internas. Con esta sentencia se recorre el contenido de una tabla interna, registro a registro y en cada registro se realiza algún tipo de procedimiento.
- Otra forma de representar un bucle en ABAP es mediante la sentencia DO-ENDO. Esta sentencia se utiliza para trabajar con variables y no con tablas internas.
3) Las sentencias de control:
Se utilizan en ABAP para terminar el procesamiento de un bucle, de una subrutina o de todo un programa. A continuación las utilizadas en la programación ABAP:
- CHECK: verifica si la condición es verdadera. Si la condición es falsa y la sentencia está dentro de un bucle, por ejemplo un LOOP-ENDLOOP, entonces se saltarán las sentencias siguientes que estén dentro del bucle, y se continuará con la siguiente iteración. Si la condición es verdadera se continuará el procesamiento.
- EXIT: si se ejecuta esta sentencia dentro de un bucle o dentro de una subrutina, el programa se salta la secuencia del bucle o la subrutina. Si está fuera del bucle u subrutina, salimos del programa.
- CONTINUE: Se utiliza solo dentro de un bucle. Luego de la ejecución de la sentencia el sistema continuará con la siguiente iteración del bucle.
- STOP: esta sentencia finaliza el programa en ejecución, pero antes se ejecuta el evento END-OF-SELECTION, si es que está escrito en el programa.
- LEAVE: esta sentencia finaliza el programa en ejecución y no se ejecuta el evento END-OF-SELECTION.
Se debe tener cuidado con el uso de las sentencias antes descritas porque alteran de forma directa el programa.
 
 
 
Sobre el autor
Publicación académica de Alexander Antelo Garcia, en su ámbito de estudios para la Carrera Consultor ABAP.
Alexander Antelo Garcia
Profesión: Ing. en Sistemas de la Informacion - Mexico - Legajo: KR64D
✒️Autor de: 44 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Alexander Garcia