
CONDICIONALES
Igual que en todos los lenguajes, ABAP cuentas con las condicionales. Consiste en que una o varias sentencias se ejecutaran si se cumple o no una condicion (expresion logica). Estas son algunas condicionales:
- IF - ENDIF (anidadado) ejemplo
IF var_calificacion >= '9'.
WRITE: / 'Aprobado con merito'.
ELSEIF var_calificacion BETWEEN '6' AND '8'. (si esta entre BETWEEN 6 y 8)
WRITE: / 'Aprobado'.
ELSEIF var_calificacion BETWEEN '4' AND '6'.
WRITE: / 'Aprobado raspando'.
ELSE.
WRITE: / 'Reprobado'.
ENDIF.
CASE var_calificacion.
WHEN '10' OR '9' OR '8'.
WRITE: / 'Aprobado con meritos'.
WHEN '7' OR '6'.
WRITE: / 'Aprobado'.
WHEN '5' OR '4'.
WRITE: / 'Aprobado raspando'.
WHEN OTHERS.
WRITE: / 'Reprobado'. (si ninguna opcion es valida entonces se ejecuta WHEN OTHERS)
ENDCASE
BUCLES
Es un ciclo que se repite hasta que la secuencia de codigo ejecutada cumpla la condicion indicada en el bucle
Este se utiliza mayormente para las tablas internas, el bucle recorre registro por registro y realiza algun proceso.
EJEMPLO
LOOP AT ti_salida INTO wa_salida WHERE nettobtr > 0. (recorrera ti_salida mientras que nettobtr sea mayor a 0)
WRITE: / wa_salida-1, (recorre los registros de ti_salida y los almacena en la estructura wa_salida)
wa_salida-2,
wa_salida-3.
ENDLOOP.
Este se utiliza para las variables y no para las tablas como el anterior
EJEMPLO
DO 5 TIMES. (se realizan 5 iteraciones y en cada una se imprime el valor de v_vuelta)
ADD 1 TO v_vuelta.
WRITE: / v_vuelta.
ENDDO.
Las sentencias de control se utilizan para terminar el procesamiento de un bucle, subrutina o de todo el programa.
- CHECK: verifica si al condicion es verdadera. Si la condicion es falsa y esta dentro de un bucle salteara todas las sentencias siguientes en el bucle, si esta fuera de un bucle salteara todo hasta el final del evento o programa. Si es verdadera entonces se continua con el procesamiento.
EJEMPLO : CHECK sy-subrc EQ 0.
- EXIT: si se ejecuta dentro de un bucle se saldra del mismo, si esta dentro de una subrutina saldra de la misma, si esta en el codigo fuente saldra del programa
EJEMPLO: IF sy-subrc EQ 0.
EXIT.
ENDIF.
- CONTINUE: se utiliza solo dentro del bucle.
- STOP: finaliza el programa pero antes se ejecuta END-OF-SELECTION si es que existe.
- LEAVE: esta sentencia finaliza el programa sin ejecutar el evento END-OF-SELECTION
-