✒️ABAP POO / Los Eventos Por Juan Carro

Selector Alummnos / Empresas

CVOSOFT UNITED STATES OF AMERICA | 17 años de ingeniería dedicados a formación profesional de Consultores SAP | +info

ABAP Los Eventos

ABAP 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.


 

Escanear / Compartir

 

 


Sobre el autor

Publicación académica de Juan Pablo Carro, en su ámbito de estudios para el Master ABAP Orientado a Objetos.

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 la Programación Orientada a Objetos (POO) en ABAP permiten establecer una comunicación flexible entre objetos mediante el mecanismo publicador–suscriptor. Un evento se declara en una clase emisora con la palabra clave EVENTS y se dispara usando RAISE EVENT. Los objetos interesados deben registrarse mediante el método SET HANDLER, asociando un método receptor que se ejecutará automáticamente cuando el evento ocurra. Esta técnica promueve un acoplamiento débil, ya que el emisor no necesita conocer directamente a los receptores, facilitando la modularidad, reutilización y mantenimiento del código. Los eventos pueden ser estáticos o de instancia, y...

Acceder a esta publicación

Creado y Compartido por: David Ibarra / Disponibilidad Laboral: FullTime + Carta Presentación

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

SAP Expert


Disparar y Manejar Eventos: En objetos ABAP 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. Para disparar un evento una clase tiene que: Declarar el evento en la parte declarativa. 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 sentencia: EVENTS <evt> EXPORTING…VALUE(<ei>) TYPE type [OPTIONAL]… Para declarar eventos estáticos se usa...

Acceder a esta publicación

Creado y Compartido por: Jeferson Jos Pena Curvelo / Disponibilidad Laboral: FullTime

*** 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 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 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 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 ***

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

*** 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 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 Senior

Hice el ejercicio un poco diferente. Pero es con apenas unos detalles. Esencialmente es lo mismo SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L0S31 { font-style: italic; color: #808080; } .L0S32 { color: #3399FF; } .L0S33 { color: #4DA619; } .L0S52 { color: #0000FF; } .L0S55 { color: #800080; } .L0S70 { color: #808080; } *&---------------------------------------------------------------------* *& Report ZPRUEBA_EVENTOS_RQ48L *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZPRUEBA_EVENTOS_RQ48L. CLASS DEUDA DEFINITION. PUBLIC SECTION. METHODS:...

Acceder a esta publicación

Creado y Compartido por: Alfredo César

 


 

👌Genial!, estos fueron los últimos artículos sobre más de 99.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:


🔎Googlear en CVOSOFT:
Googlear: "ABAP - Los Eventos"

 


 

No sea Juan... Solo podrá llegar alto si realiza su formación con los mejores!