✒️ABAP / Los Eventos Por Exequiel Acevedo
ABAP Los Eventos

En ABAP, disparar y manejar eventos es una forma de comunicación entre objetos. Un objeto puede disparar un evento, y otros objetos pueden responder a ese evento si están registrados para escucharlo.
- Disparo de eventos : Se realiza con la instrucción RAISE EVENT.
- Manejo de eventos : Se define un método especial para responder al evento y se registra con SET HANDLER.
Por ejemplo:
Definición del evento:
CLASS z_emisor DEFINITION.
PUBLIC SECTION.
EVENTS evento_disparado.
METHODS disparar_evento.
ENDCLASS.
CLASS z_emisor IMPLEMENTATION.
METHOD disparar_evento.
RAISE EVENT evento_disparado.
ENDMETHOD.
ENDCLASS.
Para disparar un evento en ABAP, necesitas:
- Declarar el evento en la parte pública de la clase usando la palabra clave EVENTS.
- Disparar el evento utilizando la instrucción RAISE EVENT dentro de uno de los métodos de la clase.
Por ejemplo:
CLASS z_mi_clase DEFINITION.
PUBLIC SECTION.
EVENTS mi_evento.
METHODS disparar_mi_evento.
ENDCLASS.
CLASS z_mi_clase IMPLEMENTATION.
METHOD disparar_mi_evento.
RAISE EVENT mi_evento.
ENDMETHOD.
ENDCLASS.
También podemos manejar eventos y acceder a la instancia que disparó el evento usando el parámetro implícito SENDER. Esto es útil cuando necesitas saber qué instancia específica desarrolló el evento.
Por ejemplo, al definir el controlador del evento:
CLASS z_receptor DEFINITION.
PUBLIC SECTION.
METHODS manejar_evento FOR EVENT mi_evento OF z_mi_clase
IMPORTING dato SENDER sender.
ENDCLASS.
CLASS z_receptor IMPLEMENTATION.
METHOD manejar_evento.
" Aquí puedes usar 'dato' y la instancia 'sender'
ENDMETHOD.
ENDCLASS.
Los eventos manejadores, o manejadores de eventos, son métodos que responden a eventos específicos. Se definen en clases y se registran para escuchar eventos disparados por otras clases.
Para definir un administrador de eventos:
- Crear el método : Debes definir un método en la clase que actuará como manejador del evento.
- Registrar el manejador : Usas la instrucción SET HANDLERpara asociar el método con el evento que deseas manejar.
Ejemplo:
CLASS z_mi_clase_emisora DEFINITION.
PUBLIC SECTION.
EVENTS mi_evento.
METHODS disparar_evento.
ENDCLASS.
CLASS z_mi_clase_emisora IMPLEMENTATION.
METHOD disparar_evento.
RAISE EVENT mi_evento.
ENDMETHOD.
ENDCLASS.
CLASS z_mi_clase_receptora DEFINITION.
PUBLIC SECTION.
METHODS manejar_evento FOR EVENT mi_evento OF z_mi_clase_emisora.
ENDCLASS.
CLASS z_mi_clase_receptora IMPLEMENTATION.
METHOD manejar_evento.
" Lógica del manejador del evento
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA: emisor TYPE REF TO z_mi_clase_emisora,
receptor TYPE REF TO z_mi_clase_receptora.
CREATE OBJECT: emisor, receptor.
SET HANDLER receptor->manejar_evento FOR emisor.
emisor->disparar_evento( ).
La sintaxis de SET HANDLER varía según el tipo de evento:
Eventos dependientes de instancia declarados en una clase :
- SET HANDLER receptor->manejar_evento FOR emisor.
Eventos dependientes de instancia declarados en una interfaz :
- SET HANDLER receptor->manejar_evento FOR emisor.
Eventos estáticos declarados en una clase :
- SET HANDLER receptor->manejar_evento.
Eventos estáticos declarados en una interfaz :
- SET HANDLER receptor->manejar_evento.
La diferencia principal es si el evento es dependiente de instancia (requiere especificar la instancia FOR) o estático (no lo requiere).
La coordinación en el manejo de eventos implica asegurarse de que los eventos se disparen y manejen en el orden y contexto correctos. Aquí hay algunos aspectos clave:
-
Registro de manejadores : Asegúrese de registrar los manejadores antes de que se dispare el evento usando SET HANDLER.
-
Orden de ejecución : Los manejadores se ejecutan en el orden en que se registran. Puedes controlar este orden para coordinar la respuesta a eventos.
-
Contexto de ejecución : Los eventos dependen del contexto de la instancia (para eventos de instancia) o del contexto estático (para eventos estáticos).
-
Sincronización : En algunos casos, puede ser necesario asegurarse de que ciertos eventos se disparen después de que otros se manejen, utilizando banderas o condiciones.
 
 
 
Sobre el autor
Publicación académica de Exequiel Eduardo Acevedo, en su ámbito de estudios para la Carrera Consultor ABAP Nivel Avanzado.
Exequiel Eduardo Acevedo
Profesión: Analista de Sistemas de Información - Argentina - Legajo: JM18M
✒️Autor de: 32 Publicaciones Académicas
🎓Cursando Actualmente: Carrera Consultor ABAP Nivel Inicial
🎓Egresado de los módulos:
- Master Funcional ABAP
- Master ABAP Orientado a Objetos
- Master ABAP for HANA
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
Disponibilidad Laboral: FullTime
























