✒️ABAP El control del flujo de datos
ABAP El control del flujo de datos
Control de flujo de datos
1- Condiciones: se pueden representar en dos formas: una utilizando la palabra clave IF-ENDIF. La otra es mediante CASE-ENDCASE. Si las condiciones no son válidas el sistema ejecutará las declaraciones que estén debajo del WHEN OTHERS. En ambas formas se utilizan los siguientes Operadores Lógicos:
Y AND
O OR
Igual = , EQ
Distinto <> , NE
Mayor > , GT
Menor < , LT
Mayor o igual >= , GE
Menor o igual <= , LE
Recordatorio: Si en cada condicion se chequea que la variable sea igual a determinado valor y la cantidad de condiciones es alta, sería aconsejable utilizar CASE-ENDCASE.
2- Bucles: en ABAP se representan en varias formas. La primera mediante la palabra clave LOOP-ENDLOOP. Ej.:
LOOP AT TABLA
DECLARACIONES.
ENDLOOP
A saber: la utilización de la cláusula WHERE siempre y cuando sea posible es considerada una buena práctica de programación.
La segunda es mediante la palabra clave DO-ENDDO. Ej.
DO n TIMES
DECLARACIONES
ENDDOO
Audio Tips: ciclo en programación es una sentencia que se realiza repetidas veces a un trozo aislado de código hasta que la condición asignada a dicho bucle deje de cumplirse. Generalmente un bucle es utilizado para hacer una acción repetida sin tener que escribir repetidas veces el mismo código lo que ahorra tiempo, deja el código mas claro y facilita su modificaciones en el futuro. En ABAP lo utilizaremos para trabajar con tablas internas.
3- Sentencias de Control: se utilizan para determinar el procesamiento de un bucle, de un proceso o de un programa. Son:
- CHEK: verifica si la condición es verdadera, si es falsa y la sentencia esta dentro de un bucle se saltearán todas las siguientes que estén dentro del bucle y se continuará con la siguiente iteracción. Fuera de un bucle se saltearán todas las sentencias hasta el final del evento o del programa en proceso. Ej.
CHECK sy-subrc EQ 0. "EQ es equivalente a =
- EXIT: dentro de un bucle saldrá del bucle, dentro de una subrutina saldrá de la misma y fuera de un bucle saldrá del programa. Ej.
IF v_clase EQ 'CA'. "EQ es equivalente a =
EXIT
ENDIF
- CONTINUE: se utiliza solo dentro de bucle. Luego de la ejecución de la sentencia del sistema continua con la siguiente iteración. Ej.
DO 4 TIMES
IF sy-subrc EQ 4. "EQ es equivalente a =
CONTIUE.
ENDIF
ENDDO
- STOP: se finaliza el programa en ejecución pero antes se ejecuta el evento END-OF-SELECTION. Ej.
IF sy-subrc NE 0. "NE es equivalente a <>
STOP
ENDIF
- LEAVE: se finalica el programa en ejecución pero no se ejecutará el evento END-OF-SELECTION. Ej.:
IF v_calse EQ 'DT'. "EQ es equivalente a =
LEAVE.
ENDIF
Precauciones: Debemos tener mucho 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.
Ejercicio.
- Código Fuente del ejemplo
*&---------------------------------------------------------------------* *& Report Z_PRUEBA_ABAP2_6 *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT z_prueba_abap2_6. *Declaración de variables DATA: v_clase(2) TYPE c VALUE 'CA'. ************************************************************************ ******************* Estructura de las Conciones ************************ ************************************************************************ *IF <condicion>. "Condicion 1 * declaraciones. *ELSEIF <condicion>. "Condicion 2 * declaraciones. *ELSE. "Condicion n * declaraciones. *ENDIF. * *CASE campo. * WHEN valor1. "Condicion 1 * declaraciones. * WHEN valor2. "Condicion 2 * declaraciones. * WHEN OTHERS. "Condicion n * declaraciones. *ENDCASE. ************************************************************************ ******************* Estructura de los Bucles *************************** ************************************************************************ *LOOP AT tabla. * declaraciones. *ENDLOOP. * * *DO n TIMES. * declaraciones. *ENDDO. * *WHILE condicion. * declaraciones. *ENDWHILE. CHECK sy-subrc EQ 0. IF v_clase EQ 'CA'. EXIT. ENDIF. DO 4 TIMES. IF sy-subrc EQ 4. CONTINUE. ENDIF. ENDDO. IF sy-subrc NE 0. "NE es equivalente a <> STOP. ENDIF. IF v_clase EQ 'DT'. "EQ es equivalente a = LEAVE. ENDIF.- Ejercicio de Práctica *&---------------------------------------------------------------------* *& Report ZABAP_BUCLE *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT zabap_bucle. DATA: v_nro_vuelta TYPE i. START-OF-SELECTION. CLEAR v_nro_vuelta. DO 10 TIMES. ADD 1 TO v_nro_vuelta. IF v_nro_vuelta = 6. EXIT. ENDIF. ENDDO. WRITE:/'El numero de vuelta final del ciclo fue: ', v_nro_vuelta.
 
 
 
Sobre el autor
Publicación académica de Claudio Marcelo Dario Haikel, en su ámbito de estudios para la Carrera Consultor ABAP.
Claudio Marcelo Dario Haikel
Profesión: Funcional Sap - Argentina - Legajo: HM94J
✒️Autor de: 58 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Claudio Haikel