Preview only show first 10 pages with watermark. For full document please download

Abap Manejo De Excepciones Y Mensajes.docx

   EMBED


Share

Transcript

 ABAP Objects: Objects: Tutorial Tutorial para para implementar implementar "exceptions "exceptions"" En este Tutorial de ABAP ABAP Objects conoceremos qué es una excepción ("exception") y eremos en qué situaciones coniene usarlas! Adems# aprenderemos a implementarlas en ABAP Objects# y probaremos su uso mediante dos ejemplos# paso a paso! $na Excepci%n (" Exception") es un eento que ocurre durante la ejecuci%n de un pro&rama# que interrumpe el 'lujo normal de las instruccion instrucciones es del mismo# cambiando cambiando su normal compo comportami rtamiento! ento! uando se produc produce e una excepción (usualmente asociada a una condici%n de error)# el pro&rama termina inmediatamente# por lo tanto# es importante que esas situaciones puedan ser manejadas de al&una manera dentro del pro&rama y eitar la cancelaci%n del mismo! encionamos anteriormente que las excepciones usualmente indican una condici%n de error! Por ejemplo# la operaci%n de diisi%n no es posible cuando el divisor es cero ! En tal caso a a ocurrir un error en tiempo tiemp o de ejecuc ejecución ión# y can cancel celar* ar*a a el pro pro&ra &rama! ma! $n mod modo o de "ma "manej nejar" ar" una exc excepc epci%n i%n dentro dentro del pro&rama y presentar la interrupci%n al usuario de manera "ms ami&able"# podr*a mostrar en este caso un cartel indicando el error del por qué no se puede reali+ar tal operaci%n# y permitir al usuario un nueo in&reso de datos! En este tip eremos c%mo se manejan las excepciones ("exceptions") en ABAP Objects  y dos ejemplos donde se codi'ica su uso! Excepciones en ABAP objects uando se pro&rama en ABAP estructurado # las excepciones se manejan de manera &enérica con el bloque CATCH - ENDCATCH! En particular# si se trata de un error aritmético (por ejemplo la división por cero)# el error puede ser manejado en ABAP mediante el &rupo de excepciones A!THET!C#EO$! CATCH TCH $%$TE-E&CEPT!ON$ arit'metic-errors( En este caso la instrucci%n a usar ser*a: CA En AB ABAP AP OO# las exc excepc epcion iones es son rep repres resent entada adas s por una insta instancia ncia de una c)ase excep excepción ción! ,os atributos de ese objeto an a contener in'ormaci%n acerca de la situaci%n ocurrida! $na excepci%n puede ser -leantada. con la sentencia A!$E E&CEPT!ON! uando esto ocurre# el sistema busca un manejador manej ador adecuado adecuado que se /a&a car&o# y en el caso de no encontrarlo# encontrarlo# se produce un error en tiemp tiempo o de ejecuci%n! Este manejo se puede llear 0nicamente a cabo si la sentencia que podr*a ocasionar que se leante la excepci%n# se encuentra encerrada por el bloque T%-ENDT% ! El manejo de la excepci%n se reali+a espec*'icamente con la instrucci%n CATCH que se encuentra dentro del bloque! El si&uiente es un c%di&o &enérico que muestra la estrcutura del T%-ENDT%  conteniendo  conteniendo la AT1 que maneja la excepci%n! s adelante se mostrarn ejemplos concretos donde que utili+an estas sentencias para el manejo de excepciones! TRY. SENTENCIA_X. CATCH cx_exc_1 CATCH  cx_exc_1 INTO ref_exc_1. … CATCH cx_exc_2 CATCH  cx_exc_2 INTO ref_ex_2. … CLEANU CLE ANUP P. … ENDTRY. donde: “$ENTENC!A#&” puede ser una subrutina, un módulo de f unción, un método u otro   objeto que pueda lanzar una o más excepciones. re*#exc#i es una instancia de la clase +cx#exc#i" o de alguna superclase ( “cx#root" por  ejemplo, como se a a er más adelante!. a ejecución del código que puede estar incluido en el bloque C,EANP, se produce cuando el sistema no encuentra un manejador para la excepción que fue leantada (no existe #$%#&! ' se usa en general para "propagar" la excepción, es decir, oler a leantarla. #omo ejemplo, si la “$ENTENC!A#&” leanta la excepción cx#exc#. ' no existe un CATCH para la misma, ejecutará las instrucciones que se encuentren en el bloque #$)*+ siempre ' cuando se cumplan ciertas condiciones 2 $na excepci%n es leantada en el rea prote&ida! 2 ,a excepci%n no es manejada en el bloque T342E56T34 (como se dijo anteriormente)# pero s* en al&0n punto de la jerarqu*a! Tener en cuenta que se puede utili+ar el mismo manejador /CATCH0 para dos excepciones di*erentes! Entonces# la si&uiente sentencia es lida: CATCH cx-exc- cx-exc-/ !NTO re*#exc( Ejemplos de manejo de excepciones en ABAP Objects :  A continuaci%n mostraremos dos ejemplos de manejo de excepciones! En el primero se a auti)i1ar 2 manejar una excepción de3nida por $AP! En el segundo se crear una nueva c)ase excepción y se an a de'inir al&unos atributos! jemplo  0iisión por cero Códi4o de) pro4rama de prueba5 *&---------------------------------------------------------------------* *& Include Z_EXCEPCION_PRUEBA_TOP Repor Z_EXCEPCION_PRUEBA *& *&---------------------------------------------------------------------* 1+21% z-excepcion-prueba.  %3+4 t'-numero %3+ p )5%& 6 0#78$4 /. 0$%$ resultado %3+ t'-numero, ref-exc %3+ 19 %2 cx-root, msg %3+ string. +$1$8%14 pa-num %3+ t'-numero, pa-num/ %3+ t'-numero. :;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<: *& Repor Z_EXCEPCION_PRUEBA :; :;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<: :; :; :;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<: 7)#*0 z-excepcion-prueba-top . ! "lo#$l %$$ T%( resultado = pa-num > pa-num/. ?17% @l resultado es @, resultado. #$%#& cx-s'-zerodiide 7)%2 ref-exc. msg = ref-exc