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

 X 

✒️ABAP POO Los Eventos

ABAP POO Los Eventos

ABAP POO Los Eventos

EVENTOS

Los eventos estan sujetos a los atributos de visibilidad, determinando quien esta autorizado para controlar o manejar el evento.

Ejemplo, los eventos publicos pueden ser usados por cualquiera.

La visibilidad de un metodo handler determina quien esta autorizado para registrar el metodo (donde podremos usar SET HANDLER). Los publicos pueden ser usados en cualquier lugar, mientras los privados solo pueden ser usados por el usuario dentro de la clase.

Hay metodos triggers, que disparan un evento, y metodos

Handles que se ejecutan cuando ocurre un event.

EVENTOS DISPARADORES (TRIGGERS)

Dependientes de instancia

La clase (o interfaz) debe declarar el evento en la parte declarativa y disparar el evento en uno de sus metodos.

Para declarar eventos dependientes de instancia, se usa

EVENTS <evento> EXPORTING… VALUE( <ei>) TYPE type [OPTIONAL]

Exporting especifica los parametros que se le pasan al manejador de eventos. Estos siempre se pasan por valor (VALUE).

Los metodos dependientes de instancia tienen el parametro implicito SENDER, que tiene el tipo de referencia a la clase o la interface en la cual el evento es declarado.

Los eventos dependientes de instancia solo pueden ser declarados por metodos dependientes de instancia (no estaticos).

Todos los metodos (dependientens de instancia o estaticos) pueden desencadenar eventos estaticos.

Estaticos

Es el unico tipo de evento que puede ser desencandenado por un evento metido estatico.

Para declarar eventos estaticos se usa

CLASS-EVENTS

Y para dispararlo:

RAISE EVENT <evento> EXPORTING … <ei> = < f i>…

(se le deben pasar todos los parametros formales!) La referencia a sí mismo ME es pasada autoamticamente al parametro implicito SENDER

EVENTOS MANEJADORES (HANDLES)

Se usan para ejecutar una serie de metodos, los cuales tienen que estar definitos como eventos manejadores ede ese evento y estar registrados en tiempo de ejecucion para el evento.

Una clase puede tener metodos manejadores tanto para su propia clase como de otras clases.

Manejador de eventos dependiente de instancia

METHODS <metodo> FOR EVENT <evento> of < cif > IMPORTING … <ei>…

Manejador de eventos estaticos

CLASS-METHODS <metodo> FOR EVENT <evento> of < cif > IMPORTING … <ei>…

La interface de un metodo manejador de eventos solo puede contener parametros FORMALES definidos en la declaracion del evento. Los atributos de los parametros tambien son adoptados por el evento.

El metodo manejador de eventos no necesita usar todos los parametros pasados en la sentencia RAISE EVENT

REGISTRAR A LOS METODOS MANEJADORES DE EVENTOS

Para que un metodo handler pueda reaccionar a un evento, en tiempo de ejecución se debe determinar al disparador al cual va a reaccionear con la sentencia

SET HANDLER <hi> … [FOR] …

Esta sentencia relaciona los metodos manejadores de eventos con sus correspondientes metodos. Hay 4 tipos de eventos:

Eventos dependientes de instancia (declarados en una clase o en una interfaz), en los cuales se usa la palabra clave FOR para especificar la instancia para la cual se quiere registrar el manejador. Se puede especificar una sola instancia como disparador usando una variable referenciada ó para todas las instancias que puedan disparar el evento

SET HANDLER …. <handler i> .. FOR < referencia a instancia > ó

SET HANDLER … <handler i> … FOR ALL INSTANCES.

En caso de aplicarse para todas las intancias, se aplica incluso a instancias que no han sido creadas al momento que se registro el manejador.

Eventos estaticos declarados en una clase o en una interfaz)

No se la palabra FOR

SET HANDLER … <handler i>…

Y se aplica automaticamente a la clase entera o a todas las clases que implementan la interfaz que contiene el evento estatico.

COORDINACION EN EL MANEJO DEL EVENTO

Despues de la sentencia RAISE EVENT, todos los metodos manejadores registrados son ejecutados antes de que la siguiente sentencia sea procesada (es sincronico)

Solo se permiter 64 niveles de anidado para evitar la posibilidad de bucles infinitos.

Como los eventos son registrados de manera dinamica, no se puede saber el orden en el que seran procesados, es por eso que se deben programar todos los manejadores de eventos como si se fueren a ejecutar todos simultaneamente.

Ejemplo

REPORT zejercicio_eventos.

CLASS contador DEFINITION.
PUBLIC SECTION.
METHODS incrementar_contador.
EVENTS valor_critico EXPORTING value(exceso) TYPE i.
PRIVATE SECTION.
DATA: cuenta TYPE i,
umbral TYPE i VALUE 10.
ENDCLASS. "contador DEFINITION

CLASS contador IMPLEMENTATION.

METHOD incrementar_contador.
DATA diferencia TYPE i.
ADD 1 TO cuenta.

IF cuenta > umbral.
diferencia = cuenta - umbral.
RAISE EVENT valor_critico EXPORTING exceso = diferencia.
ENDIF.
ENDMETHOD. "incrementar_contador

ENDCLASS. "contador IMPLEMENTATION

CLASS manejador DEFINITION.
PUBLIC SECTION.
METHODS manejar_exceso FOR EVENT valor_critico OF contador
IMPORTING exceso.
ENDCLASS. "manejador DEFINITION

CLASS manejador IMPLEMENTATION.
METHOD manejar_exceso.
WRITE: / 'El Exceso es: ', exceso.
ENDMETHOD. "manejar_exceso
ENDCLASS. "manejador IMPLEMENTATION

*programa principal

DATA: cuenta TYPE REF TO contador,
manejador TYPE REF TO manejador.

START-OF-SELECTION.

CREATE OBJECT: cuenta, manejador.

SET HANDLER manejador->manejar_exceso FOR ALL INSTANCES.

DO 20 TIMES.
CALL METHOD cuenta->incrementar_contador.
ENDDO.

En pantalla, se mostraria al ejecutar

Eventos en ABAP

El exceso es: 1

El exceso es: 2

..

El exceso es: 10.

Ejemplo ejercicio de practica

Crear un programa que lance un evento cuando el atributo SUM_DEUDAS perteneciente a la clase DEUDA sea mayor a 100.

Para ello definiremos la clase DEUDA y la clase MANEJADOR.

En la clase DEUDA se definirán los siguientes atributos, métodos y eventos:

• Métodos: INCREMENTAR_DEUDA

• Eventos: VALOR_CRITICO

• Atributos: SUM_DEUDAS (tipo I) y UMBRAL (tipo I ) con valor inicial 100

Dentro de la clase MANEJADOR se deberá definir e implementar el evento MANEJAR_EXCESO, el cual imprimirá en pantalla el exceso de deuda.

REPORT zejercicio_eventos_BK54Z.

CLASS deuda DEFINITION.
PUBLIC SECTION.
METHODS incrementar_deuda.
EVENTS valor_critico EXPORTING value(exceso) TYPE i.

PRIVATE SECTION.
DATA: sum_deudas TYPE i,
umbral TYPE i VALUE 100.
ENDCLASS. "deuda DEFINITION

CLASS deuda IMPLEMENTATION.

METHOD incrementar_deuda.
DATA diferencia TYPE i.
ADD 10 TO sum_deudas.

IF sum_deudas > umbral.
diferencia = sum_deudas - umbral.
RAISE EVENT valor_critico EXPORTING exceso = diferencia.
ENDIF.
ENDMETHOD. "incrementar_deuda
ENDCLASS. "deuda IMPLEMENTATION

CLASS manejador DEFINITION.
PUBLIC SECTION.
METHODS manejar_exceso FOR EVENT valor_critico OF deuda
IMPORTING exceso.
ENDCLASS. "manejador DEFINITION

CLASS manejador IMPLEMENTATION.
METHOD manejar_exceso.
WRITE: / 'La deuda es: ', exceso.
ENDMETHOD. "manejar_exceso
ENDCLASS. "manejador IMPLEMENTATION

*Programa principal

DATA: deuda TYPE REF TO deuda,
manejador TYPE REF TO manejador.

START-OF-SELECTION.

CREATE OBJECT: deuda, manejador.

SET HANDLER manejador->manejar_exceso FOR ALL INSTANCES.

DO 20 TIMES.
CALL METHOD deuda->incrementar_deuda.
ENDDO.


 

 

 


Sobre el autor

Publicación académica de Juan Pablo Carro, en su ámbito de estudios para el Máster ABAP POO.

SAP SemiSenior

Juan Pablo Carro

Profesión: Analista de Sistemas - Argentina - Legajo: DB81J

✒️Autor de: 8 Publicaciones Académicas

🎓Egresado de los módulos:

Disponibilidad Laboral: FullTime

Certificación Académica de Juan Carro

✒️+Comunidad Académica CVOSOFT

Continúe aprendiendo sobre el tema "Los Eventos" de la mano de nuestros alumnos.

SAP Expert


Los eventos. En objetos ABAP hay ciertos metodos que se conocen como disparadores (triggers que disparan un evento) y otros que se conocen como manejadores (handlers que se ejecutan cuando ocurre un evento). Para disparar un evento una clase tiene que: Declarar el evento en la parte declarativa y Disparar el evento en uno de sus metodos Por cada parametro formal que no este definido como opcional se tiene que pasar el correspondiente parametro real en la adicion EXPORTING. La referencia a si mismo ME es pasada automaticamente al parametro implicito SENDER. Los eventos manejadores: Estar definidos como eventos manejadores (handler) de ese evento y Estar registrados en tiempo de ejecucion para el evento. Hay 4 tipos diferentes de eventos: Eventos...

Acceder a esta publicación

Creado y Compartido por: David De Jesùs Restrepo Cañas

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

SAP Expert


Eventos Disparar y manejar eventos En objetos ABAP hay ciertos metodos que se conocen como disparadores (triggers) y otros que se conocen como manejadores (handlers). Los triggers son los metodos que disparan un evento, mientras que los handlers son los metodos que se ejecutan cuando ocurre un evento. Para disparar un evento una clase tiene: Declarar el evento en la parte declarativa Disparar el evento en uno de sus metodos Los eventos depependientes de instancia siempre contienen el parametro implicito SENDER, el cual el tipo de una referencia al tipo o a la interface en la cual el evento es declarado. Los eventos dependientes de instancia solo pueden ser desencadenar en un metodo dependiente de instancia. Todos los metodos (dependientes...

Acceder a esta publicación

Creado y Compartido por: Marvin Raul Lopez Morales / Disponibilidad Laboral: FullTime + Carta Presentación

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

SAP SemiSenior

Lección Eventos. 1. Disparar y Manejar Eventos. - Métodos disparadores (triggers), disparan un evento. - Métodos manejadores (handlers), se ejecutan cuando ocurre un evento. Para disparar un evento, una clase tiene que : - Declarar el evento en la parte declarativa, Para declarar eventos dependientes de instancia, es usa la siguiente sentencia: EVENTS <evt> EXPORTING... VALUE(<ei>) TYPE type [OPTIONAL].. Para declarar eventos estaticos se usa la sentencia : CLASS-EVENTS <EVT>... - Disparar el evento en uno de sus métodos. Para disparar un evento en un método, se usa la siguiente sentencia : RAISE EVENT <evt> EXPORTING... <ei> = <fi>...... Los eventos dependientes...

Acceder a esta publicación

Creado y Compartido por: Rafael Humberto Quintero Pinto

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

SAP Master

EVENTOS DISPARAR Y MANEJAR EVENTOS En ABAP existen ciertos metodos conocidos como disparadores (triggers: que son los metodos que disparan un evento) y otros como manejadores (handlers: son los metodos que se ejecutan cuando ocurre un evento) Para disparar un evento la clase debe: Declarar el evento en la parte declarativa, sentencia: EVENTS<ei>TYPE type[OPTIONAL].. Disparar el evento en uno de sus metodos, sentencia: CLASS-EVENTS<evt>... Podemos usar la clave EXPORTRING en un evento para especificar parametros que se pasan al manejador del evento. Los eventos dependientes de instancia contienen el parametro SENDER. Todos los metodos (dependientes de instancia y estaticos) pueden desencadenar eventos estaticos Los eventos...

Acceder a esta publicación

Creado y Compartido por: Ixhel Magai Lopez Valencia / Disponibilidad Laboral: PartTime + Carta Presentación

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

Los eventos dependientes de instancia siempre contienen el parámetro SENDER.

Acceder a esta publicación

Creado y Compartido por: Mehdi Ould El Gadia

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

SAP Master

U2-L5 Disparar y manejar eventos En objetos ABAP ciertos métodos se conocen como: - Disparadores (triggers); disparan un evento - Manejadores (handlers); se ejecutan cuando ocurre un evento Para disparar un evento: - Declarar el evento en la parte declarativa de la clase o en una interface. - Disparar el evento en uno de los métodos de la clase. Eventos dependientes de instancia: EVENTS <evt> EXPORTING... VALUE(<ei>) TYPE type [OPTIONAL].. Eventos estáticos: CLASS-EVENTS <evt>... En la declaración un evento se pueden especificar parámetros que pasan al manejador de eventos con la adición EXPORTING. Los parámetros se pasan siempre por valor. Los eventos dependientes de...

Acceder a esta publicación

Creado y Compartido por: Denisse Adriana Hernandez Trujillo

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

SAP Expert


EVENTOS – LECCION 2-5 DISPARAR Y MANEJAR EVENTOS El objeto ABAP hay ciertso métodos que se conocen como disparadores (triggers) y otros que se conocen como manejadores (handlers). Los triggers son los métodos que disparan un evento, mientras que los hablers son los métodos que se ejecutan cuando ocurre un evento Para disparar un evento, una clase debe realizar dos acciones - Declarar el evento en la parte de la declaración - Disparar el evento en uno de sus métodos Los eventos se declaran en la parte declarativa de una clase o en una interface. Para declarar eventos dependientes de instancia se usa la siguiente sentencia EVENTS <evt> EXPORTING... VALUE(<ei>) TYPE type...

Acceder a esta publicación

Creado y Compartido por: Cristian Darwin Arteaga Diaz / Disponibilidad Laboral: FullTime + Carta Presentación

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

SAP Master

Disparar y Manejar Eventos. En objetos ABAP hay ciertos métodos que se conocen como disparadores (triggers) y otros que se conocen como manejadores, los triggers son métodos que disparan un evento. Mientras que los handlers son métodos que se ejecutan cuando ocurre un evento. Para disparar un evento, una clase tiene que: - Declarar el evento en la parte declarativa. - Dispara el evento en uno de sus métodos. Los eventos se declaran en la parte declarativa de una clase o en una interface, Para declarar eventos dependientes de instancia , se utiliza la siguiente sentencia EVENT <evt> EXPORTING …. VALUE(ei) TYPE <type> [OPTIONAL]. Para declarar eventos estáticos se utiliza...

Acceder a esta publicación

Creado y Compartido por: Tobias Emanuel Mareco Rojas / Disponibilidad Laboral: FullTime

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

SAP SemiSenior

EVENTOS: Disparar y Manejar eventos: (TRIGGERS Y HANDLERS) En ABAP Objects hay ciertos métodos que se conocen como disparadores (triggers) y otros que se conocen como manejadores (handlers). Los triggers son los métodos que disparan un evento, mientras que los handlers son los métodos que se ejecutan cuando ocurre un evento. Eventos disparadores Para disparar un evento una clase tiene que: − declarar el evento en la parte declarativa − disparar el evento en uno de sus métodos. Declaración de eventos Los eventos se declaran en la parte declarativa de una clase o en una interface. Para declarar eventos dependientes de instancia se usa la sentencia: EVENTS <evt> EXPORTING... VALUE(<ei>)...

Acceder a esta publicación

Creado y Compartido por: Enrique Horacio Lugo Lander

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

SAP SemiSenior

EVENTOS Los eventos estan sujetos a los atributos de visibilidad, determinando quien esta autorizado para controlar o manejar el evento. Ejemplo, los eventos publicos pueden ser usados por cualquiera. La visibilidad de un metodo handler determina quien esta autorizado para registrar el metodo (donde podremos usar SET HANDLER). Los publicos pueden ser usados en cualquier lugar, mientras los privados solo pueden ser usados por el usuario dentro de la clase. Hay metodos triggers, que disparan un evento, y metodos Handles que se ejecutan cuando ocurre un event. EVENTOS DISPARADORES (TRIGGERS) Dependientes de instancia La clase (o interfaz) debe declarar el evento en la parte declarativa y disparar el evento en uno de sus metodos. Para...

Acceder a esta publicación

Creado y Compartido por: Juan Pablo Carro / Disponibilidad Laboral: FullTime

 


 

👌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!