Ayuda SAP

Excepciones en ABAP

Hola! Buenas tardes a todos! Estoy estudiando las excepciones en ABAP y no consigo entender que es exactamente y porqué se utiliza, estoy un poco atascada con este tema.
¿Podría alguien aclararme esta duda? Gracias.

Un saludo, Virginia

Hola,

Las excepciones en abap se colocan en los módulos de funciones, cuando se produce algun error. Esta excepcion sirve para cuando llamas a la funcion y da el error, te cambie el valor de sy-subrc. Si no tienes excepciones, el valor de sy-subrc va a ser siempre cero, y no puedes controlar dichos errores. Por favor avisanos si necesitas más detalle.

Saludos.

5 Me gusta

Hola Virginia, las excepciones se utilizan para controlar excepciones de la función en caso que se encuentre alguna anomalía en dicha función.

Cuando creas tu modulo de función, en la pestaña EXCEPTIONS, se declaran las excepciones que se requieren controlar (tú le das valores: ejem. 1,2,3,etc. los cuales te los regresa cuando termina la función) en la Función, por ejemplo división entre cero, algún parámetro no encontrado, etc.

Saludos

1 me gusta

Solo para complementar…tambien las puedes usar en metodos !!!

Las excepciones de manera general, son aquellas situaciones/eventos/resultados que no esperamos o controlamos.
Por ejemplo, si tenemos una variable de tipo entero y le asignamos/igualamos con un valor de diferente tipo (no entero), se producira un error, si esta situacion la conocemos, la podemos controlar, por ejemplo:

Una division entre cero, sera algo que podrias encontrar en todos los lenguajes de programacion (incluso en la calculadora de windows)

Ahora el ejemplo ABAP:

REPORT  zprueba_abap.
* Prueba de división por cero sin capturar excepción
 
DATA: resultado TYPE p DECIMALS 2,
      ref_exc   TYPE REF TO CX_ROOT,
      error     TYPE STRING.
 
PARAMETERS: p_num1 TYPE i DEFAULT '10',
            p_num2 TYPE i DEFAULT '0'.
 
resultado = p_num1 / p_num2.
WRITE: 'El resultado es: ', resultado.

Si ejecutas este codigo, obtendras un error y simplemente te sacara del programa.

Si usas el manejo de excepciones, podras “controlar” el error (handling):

REPORT  zprueba_abap.
* Prueba de división por cero capturando la excepción
 
DATA: resultado TYPE p DECIMALS 2,
      ref_exc   TYPE REF TO CX_ROOT,
      error     TYPE STRING.
 
PARAMETERS: p_num1 TYPE i DEFAULT '10',
            p_num2 TYPE i DEFAULT '0'.
 
TRY.
    resultado = p_num1 / p_num2.
    WRITE: 'El resultado es: ', resultado.
  CATCH cx_sy_zerodivide INTO ref_exc.
    error = ref_exc->get_text( ).
    MESSAGE error TYPE 'I'.
ENDTRY.

En lugar del error, obtendras un mensaje y no te sacara del programa. (En este punto mediante tu codigo, podrias pedir que corrijan o tomar alguna medida)

Espero que la explicacion te sea util.
Saludos!!

Fuente Ejemplo:
h_tp://www.teknodatips.com.ar/sap-netweaver/267-abap-objects-tutorial-manejo-excepciones.html

3 Me gusta

en ultraresumen son para que el programa no se caiga (dump, error de sistema) para cierto tipo de errores, cuando estos errores se producen se termina la ejecución del programa. También existen excepciones que no son para errores criticos.

saludos,

Este tema se cerró automáticamente 91 días después del último post. No se permiten nuevas respuestas.