🚀PROMO #PLANCARRERA2024 - 🔥Bonificaciones, Precios Congelados y Cuotas

 X 

✒️ABAP El control del flujo de datos

ABAP El control del flujo de datos

ABAP El control del flujo de datos

ABAP tiene algunas variables internas que se van actualizando automáticamente y que pueden ser utilizadas en los programas. Todas estás variables inicial con el prefijo SY.

CONDICIONALES

Como en todos los lenguajes estructurados, se tienen una serie de instrucciones para subdividir el programa en bloques lógicos que se ejecutaran cuándo se cumpla alguna condición.

Para ejecutar instrucciones sólo si se cumplen ciertas condiciones ABAP tiene dos bloques de instrucciones. El primero es IF….ENDIF. Esta instrucción comprueba si se cumple una condición antes de pasar a la siguiente instrucción. Si no se cumple ejecuta la instrucciónque sigue al ENDIF. Si queremos añadir una opción por defecto usamos la instrucción ELSE. Si queremos comprobar si se cumple una segunda condición usamos lainstrucción ELSEIF.

La segunda opción para comprobar si se cumple una condición es mediante el bloque de instrucciones CASE…ENDCASE. Podemos comprobar si se cumplen varias condiciones a la vez mediante la expresión AND.

También podemos comprobar si se cumple alguna de las condiciones mediante la expresión OR.

INTRUCCIONES DE BUCLE

Dentro de las condiciones podemos utilizar los clásicos operadores que ya conocemos. En Abap existen cuatro (4) tipos de bucles. Los bucles condicionales (WHILE), los no condicionales (DO), los bucles instrucción (SELECT) que se dan a través de los datos de la base de datos y los bucles sentencia (LOOP) que se dan en las tablas internas.

Los bucles condicionales se crean con el grupo de instrucciones WHILE…ENDWHILE. 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.

Supongamos que se le pide por pantalla al usuario que escriba un número que vamos a almacenar en la variable x.

En cada iteración el sistema comprueba que se cumple la condición antes de entrar de nuevo en el bucle. Si no se cumple salta hasta la sentencia ENDWHILE y continúa ejecutando el programa a partir de esa instrucción. Al igual que en las expresiones condicionales, en los bucles podemos comprobar más de una condición mediante las expresiones AND u OR. También podemos anidar varios bucles o condiciones.

Los bucles NO condicionales se crean con las instrucciones DO... ENDDO. Ejecución de sentencias indefinidamente hasta que se procese la sentencia EXIT, STOP o REJECT. En este caso se debe indicar el número de veces que requiere que se ejecute un grupo de instrucciones.

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.

Se puede terminar una vuelta con la instrucción CONTINUE. Otra forma de hacer lo mismo es con la sentecia de control CHECK.

En los procesos repetitivos, usamos DO y WHILE.

DO nos da permiso de ejecutar un bloque de instrucciones tantas veces cómo le indiquemos. En el caso de WHILE nos permite ejecutar un bloque de instrucciones mientras se cumpla una condición.

Para la utilización y explicación de los Bucles Select y Loop, se utilizan Tablas internas. Las tablas internas sirven para almacenar información extraída de la base de datos.

Bucle SELECT - ENDSELECT “Bucle a través de los datos de base de datos”

Esta sentencia realiza una lectura lineal de los datos de las tablas de la base de datos y los asigna directamente a los campos de nuestra tabla interna. Pero atención, para que queden almacenados sobre la tabla interna para cada registro seleccionado debemos utilizar la sentencia APPEND. La cláusula WHERE nos permite indicar el filtro de selección.

Nota: En las mejores prácticas de SAP se indica evitar el uso del SELECT...ENDSELECT, reemplazándolo por el bucle LOOP.

Bucle LOOP- ENDLOOP “Bucle en las tablas internas”

Esta sentencia nos permite recorrer uno a uno todos los registros que hemos guardado previamente en nuestra tabla interna. La forma en que la tratamos varía dependiendo de si hemos declarado nuestra tabla interna con cabecera o sin cabecera.

La sentencia loop...endloop en tablas internas con cabecera

No necesitan de ninguna variable adicional. Simplemente llamamos a nuestra tabla interna mediante la sentencia loop...endloop. En ese mismo momento, todos los registros de cada línea se cargan sobre la cabecera de la propia tabla interna.

LOOP AT <tabla_interna>.

* Acción sobre <tabla_interna>

ENDLOOP.

La sentencia loop...endloop en tablas internas sin cabecera

Necesitan de una variable estructura adicional donde se contenga el valor de cada registro de la tabla interna. Al hacer una llamada loop...endloop, el valor del registro por el que pasa se ha de traspasar a esta variable adicional.

LOOP AT <tabla_interna> into <estructura>.

* Acción sobre <estructura>

ENDLOOP.

Las sentencias de control

Se usaran para terminar el procesamiento de un bucle o proceso.

  • CHECK.
  • EXIT. Sentencia para salir del bucle.
  • STOP. Sentencia que se ejecuta indefinidamente hasta que se procese la sentencia EXIT.
  • LEAVE.
  • REJECT. Sentencia que al igual que STOP, se ejecuta indefinidamente hasta que se procese la sentencia EXIT.


 

 

 


Sobre el autor

Publicación académica de Sergio Armando Beltran Castaneda, en su ámbito de estudios para la Carrera Consultor ABAP.

SAP Master

Sergio Armando Beltran Castaneda

Profesión: Ingeniero de Sistemas con Especialización en Gerencia de Proyectos - Colombia - Legajo: WK55K

✒️Autor de: 70 Publicaciones Académicas

🎓Cursando Actualmente: Consultor ABAP Nivel Avanzado

🎓Egresado del módulo:

Disponibilidad Laboral: FullTime

Presentación:

Soy ingeniero de sistemas desde hace mas de 10 años y quiero enfocarme en el mundo sap, iniciando en el lenguaje abap, con miras a ampliar mi conocimiento profesional y laboral.

Certificación Académica de Sergio Beltran

✒️+Comunidad Académica CVOSOFT

Continúe aprendiendo sobre el tema "El control del flujo de datos" de la mano de nuestros alumnos.

SAP Master

CONTROL DE FLUJO DE DATOS SENTENCIA IF-ENDIF SENTENCIA IF-ELSEIF-ELSE-ENDIF SENTENCIA CASE OPERADORES LOGICOS BUCLES LOOP-ENDLOOP SENTENCIAS DE CONTROL CHECK EXIT CONTINUE STOP LEAVE NOTA.CUIDADO CON EL USO DE ESTAS SENTENCIAS YA QUE AFECTAN DIRECTAMENTE EL FLUJO DE UN PROGRAMA ABAP.

Acceder a esta publicación

Creado y Compartido por: Rainer Diaz

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

Debemos 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 ABAB

Acceder a esta publicación

Creado y Compartido por: Eli Joel Zorrilla Zorrilla

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

Control de Flujo de Datos. Condiciones: IF / ENDIF CASE / ENDCASE Bucles: LOOP / ENDLOOP DO / END-DO Sentencias de Control: CHECK SY-SUBRC, Muestra resultados y/o equivalencia

Acceder a esta publicación

Creado y Compartido por: Noe Rivera

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP SemiSenior

Control de flujo de datos: IF-ENDIF, Cse-EndCase. Bucles: Loop-Endloop, Do-Endloop. Sentencias de control: Para terminar el procesamiento de un bucle, de un proceso ó de un programa. Check: Si la sentencia es falsa, y la sentencia esta dentro de un bucle, se salteará todas las sentencias y continuará con la siguiente iteración. Fuera de un bucle se saltará toda las sentencias hasta el final de del evento o del programa en proceso. Exit: dentro de un bucle, saldrá del bucle, dentro de una subrutina saldrá de la subrutina y fuera de un bucle saldrá del programa Cintunye: Se utiliza dentro de un bucle. Luego de la ejecución de la sentencia e sistema continua con la siguiente...

Acceder a esta publicación

Creado y Compartido por: Roxana Solis Ramirez

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

Las sentencias de Control de Flujo de programa son iguales en forma de operacion a las sentencias en otros lenguajes de programacion, lo importante es la mnemotecnia. Lo importante es aprender la mnemotecnia para poder emplearlas correctamente

Acceder a esta publicación

Creado y Compartido por: Eduardo Vargas

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

UNIDAD 2: DECLARACIÓN Y PROCESAMIENTO DATOS LECCIÓN 6:CONTROL FLUJO DE DATOS 1.- CONDICIONES a) IF ELSEIF ELSE ENDIF. b)Si en cada condición, se chequea que la variable sea igual a un valor determinado y las condiciones son muchas es aconsejable usar CASE WHEN WHEN OTHERS ENDCASE En ambas Se utilizan los operadores lógicos (AND OR EQ NE GT LT GE LE) 2.- BUCLES LOOP AT itab WHERE (uso es buena practica) ENDLOOP DO n TIMES ENDDO 3.- SENTENCIAS DE CONTROL CHECK EXIT (saldrá del bucle y/o saldrá del pprog. dependiendo) CONTINUE (dentro del bucle continua con la sgte.iteracion) STOP (antes de End Of Selection) LEAVE (finaliza y no ejecuta End-Of-Selection) Nota.- Debemos tener cuidado en el uso de estas...

Acceder a esta publicación

Creado y Compartido por: Hernan Cabezas

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

el flujo de datos debe de ser continuo.

Acceder a esta publicación

Creado y Compartido por: Allan Gomez

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

- Control del Flujo de Datos - Condiciones 1.- Utilizando IF-ENDIF: IF <CONDICION>. DECLARACIONES. ELSEIF <CONDICION>. DECLARACIONES. ELSE. DECLARACIONES. EDNIF. 2.- Mediante CASE-ENDCASE: CASE CAMPO. WHEN VALOR1. DECLARACIONES. WHEN VALOR2. DECLARACIONES. WHEN OTHERS. DECLARACIONES. ENDCASE. * Operadores lógicos: Y -----------------------> AND O ----------------------> OR Igual ------------------> = , EQ Distinto --------------> <> , NE Mayor...

Acceder a esta publicación

Creado y Compartido por: Sandra Erika Bernabe Abreu

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

Operadores logicos: Y -----> AND O -----> OR IGUAL -----> ,EQ DISTINTO ----> <> ,NE MAYOR ----> > , GT MENOR -----> < , LT MAYOR O IGUAL ------> >= , GE MENOR O IGUAL ------> <= , LE La utilizacion de la clausula WHERE siempre y cuando sea posible, es considerada una buena practica de programacion. Sentencias de control: se utilizan para terminar el procesamiento de un bucle, de un proceso o programa. las mismas son: Check: verifica si la condicion es verdadera, si la condicion es falsa y la sentencia esta dentro de un bucl, se salteara todas las sentencias siguientes que esten dentro del bucle y continuara con la siguiente iteracion. Exit:dentro de un bucle saldra del bucle, dentro de una subrutina...

Acceder a esta publicación

Creado y Compartido por: Cristian Merlo

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

Control de flujo de datos. Condiciones: IF <condicion>. Declaraciones. elseif <condición>. declaraciones. else. declaraciones. endif CASE- ENDCASE CASE campo. WHEN VALOR1. DECLARACIONES WHEN VALOR2 DECLARACIONES. WHEN OTHERS. DECLARACIONES. ENDCASE OPERADORES LOGICOS: = , <>, <, >, >=, <= BUCLES: LOOP A TABLA. DECLARACIONES. ENDLOOP DO n TIMES DECLARACIONES ENDDO SENTENCIAS DE CONTROL: CHECK: verifica si la condición es verdadera, si es falsa se saltara todas las sentencias siguientes y continuara la siguiente interacción, fuera del bucle ira al final del programa CHECK SY-SUBRC EQ 0. EXIT: Saldra del bucle,y fuera del bucle saldra del programa IF v_clase...

Acceder a esta publicación

Creado y Compartido por: Maria Ysabel Colina De Magdaleno

 


 

👌Genial!, estos fueron los últimos artículos sobre más de 79.000 publicaciones académicas abiertas, libres y gratuitas compartidas con la comunidad, para acceder a ellas le dejamos el enlace a CVOPEN ACADEMY.

Buscador de Publicaciones:

 


 

No sea Juan... Solo podrá llegar alto si realiza su formación con los mejores!