✒️ABAP El control del flujo de datos
ABAP El control del flujo de datos
El control del flujo de datos Las condiciones
- 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.
- Expresión lógica. Aquella expresión que se obtiene como resultado verdadero o falso.
- Dos formas de representar condiciones en ABAP: la primera es usando la sentencia IF-ENDIF. Se pueden anidar o agregar más condiciones dentro del IF-ENDIF, utilizando la sentencia ELSEIF:
IF v_calificacion>='9'.
WRITE: /'Aprobado con meritos'.
ELSEIF v_calificacion BETWEEN '4' AND '6'.
WRITE: /'Aprobado raspando'.
ELSE.
WRITE:/'Reprobado'.
ENDIF.
- Si ninguna de las condiciones es válida, el sistema ejecutará las declaraciones que estén debajo del ELSE.
- La otra forma de representar condiciones en ABAP es mediante la sentencia CASE-ENDCASE.
CASE v_calificacion.
WHEN '10' OR '9' OR '8'.
WRITE:/'Aprobado con meritos'.
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.
- Si se utiliza IF-ENDIF o CASE-ENDCASE se requiere emplear los operadores lógicos (operadores que nos permiten agrupar expresiones lógicas).
- Opeadores lógicos disponibles en ABAP: AND (Y), OR (O), = o EQ(Igual), <> o NE (Distinto), > o GT (Mayor), < o LT (Menor), >= o GE (Mayor o igual). < o LE (Menor o igual).
- Ejemplo: *So el sy-subrc es igual a cero. IF sy-subrc EQ 0 OR sy-subrc=0. "Ambas expresiones lógicas son identicas.
- La utilización de IF anidados con más de tres niveles no es considerado como una buena práctica de programación. Ya que es dificil encontrar el END IF.
Los bucles
- Bucle, ciclo, secuencia de instrucciones de código que se ejecuta repetidas veces, hasta que la condición asignada a dicho bucle deja de cumplirse.
- Se pueden representar de distintas maneras, una de ellas es mediante la sentencia LOOP-ENDLOOP. Se utiliza exclusivamente cuando trabajemos con tablas internas. Se va a recorrer el contenido de una tabla interna, registro por registro y en cada registro se va 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.
- La utilización de la cláusula WHERE siempre y cuando sea posible, es considerada una buena práctica de programación ya que limita o restringe el acceso secuencial de todos los registros de la tabla interna.
- Otra forma de representar un bucle en ABAP es mediante la sentencia DO - ENDDO.
- DO-ENDDO se utiliza para trabajar con variables y no con tabla internas, tal como sucede con LOOP- ENDLOOP.
- La iteración se ejecutará solo si la condición es verdadera
- Sentencia WHILE ENDWHILE. no se utiliza mucho.
Las sentencias de control
- Se utilizan para terminar el procesamiento de un bucle de una subrutina o de todo un programa. En ABAP se tiene las siguientes sentencias de control:
- CHECK: sentencia verifica si la condición es verdadera. Si la condición es falsa y la sentencia estará dentro de un bucle, se saltará todas las sentencias siguientes que estén dentro del bucle y se continuará con la siguiente iteración. Fuera de un bucle, se saltará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-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 un bucle y fuera de una subrutina salimos del programa.
- 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 TO v_vuelta.
IF v_vuelta EQ 5.
WRITE:/ v_vuelta.
ELSE.
CONTINUE.
ENDIF.
ENDDO.
- Solo se imprime en pantalla la 5ta vuelta las anteriores se saltean con CONTINUE.
- 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.
- LEAVE: esta sentencia finaliza el programa en ejecución y no se ejecuta el evento END-OF-SELECTION.
- se debe tener 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 Alejandra Daniela Naranjo Belmonte, en su ámbito de estudios para la Carrera Consultor ABAP.
Alejandra Daniela Naranjo Belmonte
Profesión: Analista/desarrollador de Software - Mexico - Legajo: ON48V
✒️Autor de: 63 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Alejandra Naranjo