✒️ABAP El control del flujo de datos
ABAP El control del flujo de datos
ABAP Condiciones
Abap condiciones tal como sucede en otros lenguajes en ABAP contamos con instrucciones para trabajar con Condiciones.
Existen dos formas de representar condiciones.
La más comúnmente utilizada es mediante la sentencia IF…ELSE…ENDIF en todas sus variantes tal como vemos a continuación:
IF <condicion>.
ENDIF.
IF <condicion>.
ELSE.
ENDIF.
IF <condicion_1>.
ELSEIF <condicion_2>.
ENDIF.
Otra forma de trabajar con condiciones es a través de la sentencia CASE…ENDCASEtal como vemos a continuación:
CASE <campo>.
WHEN <valor1>.
WHEN <valor2>.
….
WHEN <others>.
….
ENDCASE.
En un bucle, un bloque de instrucciones se ejecuta varias veces en la serie. Existen cuatro tipos de bucles en ABAP:
Los bucles sentencia DO (principalmente para los bucles incondicionales)
Los bucles WHILE (principalmente para los bucles condicionales)
Los bucles instrucción SELECT (bucle a través de los datos de base de datos)
Los bucles sentencia LOOP (bucle en las tablas internas)
Bucle DO - ENDDO “Bucle incondicional”
Ejecución de sentencias indefinidamente hasta que se procese la sentencia EXIT, STOP o REJECT.
Sintaxis:
DO [ TIMES ] [ VARYING FROM NEXT ]
ENDDO.
La sentencia DO sin cláusulas ejecuta el bloque de sentencias indefinidamente, o hasta que se procese una sentencia EXIT, STOP o REJECT. Para limitar el número de pasos de un bucle se puede utilizar la opción TIMES. Puede ser un literal o una variable. Si es 0 o negativo, el sistema no procesará el bucle.
La cláusula ENDDO es obligatoria (marca el fin del bloque de sentencias). La variable SY-INDEX contiene el número de veces que el bucle ha sido ejecutado.
Utilizando la opción VARYING se pueden ir asignando valores a una variable a partir de un conjunto de campos del mismo tipo y longitud de memoria por cada paso de bucle. En una sentencia DO se pueden utilizar varias opciones VARYING.
Ejemplo:
DO.
WRITE: / SY-INDEX – Inicio:’, (3) SY-INDEX.
IF SY-INDEX = 10.
EXIT.
ENDIF.
WRITE: ‘Fin:’, (3) SY-INDEX.
ENDDO.
Bucle WHILE – ENDWHILE “Bucles condicional”
Se utiliza para repetir un bloque de instrucciones durante el tiempo que una determinada condición es verdadera, utilice la siguiente estructura de control:
Sintaxis:
WHILE log_exp o [ VARY FROM NEXT ].
[statemaent_block]
ENDWHILE.
log_exp puede ser cualquier expresión lógica. El bloque de instrucciones entre WHILE y ENDWHILE se repite mientras la condición es verdadera o hasta que una declaración de terminación, tales como cierre o detenga ocurre. El campo del sistema sy-index contiene el número de bucle pasa.
El sistema procesa el bloque de sentencias hasta que se cumpla la condición o hasta que el sistema procesa una sentencia EXIT, STOP o REJECT. Para condición se puede utilizar cualquier expresión lógica. El campo del sistema SY-INDEX contiene el número de veces que el bucle ha sido ejecutado. El sistema permite anidar sentencias WHILE, así como combinarlas con otras sentencias de bucle.
La opción VARY actúa de la misma forma en que actúa la opción VARYING en la sentencia DO. Al igual en la sentencia DO, se puede utilizar más de una opción VARY en una sentencia WHILE.
Ejemplo:
DATA: SEARCH_ME TYPE I,
MIN TYPE I VALUE 0,
MAX TYPE I VALUE 1000,
TRIES TYPE I,
NUMBER TYPE I.
SEARCH_ME = 23.
WHILE NUMBER SEARCH_ME.
ADD 1 TO TRIES.
NUMBER = ( MIN + MAX ) / 2.
IF NUMBER > SEARCH_ME.
MAX = NUMBER – 1.
ELSE.
MIN = NUMBER + 1.
ENDIF.
ENDWHILE.
Las sentencias de control
Su usaran para terminar el procesamiento de un bucle o proceso.
- CHECK .
- EXIT.
- STOP.
- LEAVE.
Efecto CHECK evalua la expresión lógica. Si esta es verdadera, el proceso continua con la siguiente sentencia.
CHECK con falso termina el ciclo actual sin procesar las instrucciones antes de marcado el fin del ciclo y el proceso vuelve a la siguiente vuelta, si es que hay otra.
Forma básica EXIT.
Efecto - Dentro de ciclos:
Termina el proceso iterativo (DO, WHILE, LOOP, SELECT).
- Dentro de rutinas:
Abandona la rutina sin terminarla (FORM, MODULE, FUNCTION, TOP-OF-PAGE, END-OF-PAGE).
CONTINUE termina el ciclo actual sin procesar las instrucciones antes de marcado el fin del ciclo y el proceso vuelve a la siguiente vuelta, si es que hay otra.
La instrucción : STOP.
Con STOP finalizaremos el report (programa) en ejecución, pero antes ejecutaremos el evento END-OF-SELECTION
La instrucción : LEAVE.
Con LEAVE finalizaremos el report (programa) en ejecución, sin ejecutar el evento END-OF-SELECTION.
 
 
 
Sobre el autor
Publicación académica de Cesar Armando Gutierrez Gomez, en su ámbito de estudios para la Carrera Consultor ABAP.
Cesar Armando Gutierrez Gomez
Profesión: Ingeniero en Sistemas y Redes Infor - El Salvador - Legajo: KQ36J
✒️Autor de: 89 Publicaciones Académicas
🎓Egresado de los módulos:
- Máster Funcional ABAP
- Máster ABAP Orientado a Objetos
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
Disponibilidad Laboral: FullTime
Certificación Académica de Cesar Gutierrez