✒️ABAP Los Eventos
ABAP Los Eventos
En los objetos abap hay ciertos métodos que se conocen como disparadores y otros que se conocen como manejadores. Los disparadores disparan el evento y los manejadores se ejecutan cuando ocurre un evento. Para disparar un evento una clase tiene que:
-Declarar el evento en la parte declarativa
-Declarar el evento en uno de sus métodos.
Los eventos se declaran en la parte declarativa de una clase o interface. Para declarar eventos dependientes de instancia: EVENTS (evt) EXPORTING...VALUE(ei) TYPE type [OPTIONAL].
Para declarar eventos estáticos: CLASS-EVENTS (evt).
Cdo se declara un evento, se puede usar la adición EXPORTING para especificar parámetros que se pasan al manejador de eventos. Los parámetros se pasan siempre por valor. Los eventos dependientes de instancia siempre contienen el parámetro implícito SENDER. Un evento dependiente de instancia en una clase puede ser disparado por cualquier método en la clase. Los eventos estáticos son disparados por métodos estáticos. Para disparar un evento en un método se usa: RAISE EVENT (evt) EXPORTING (ei)=(fi)
Eventos Manejadores: Se usan para ejecutar una serie de métodos: Dichos métodos tienen que:
-Estar definidos como eventos manejadores de ese evento
-Estar registrados en tiempo de ejecución para el evento
La interface de un método manejador de eventos sólo puede contener parámetros formales definidos en la declaración del evento. Los atributos de los parámetros también son adoptados por el evento. El método navegador de eventos no tiene porque usar todos los parámetros pasados en la sentencia RAISE EVENT.
Para permitir a un método manejador de eventos reaccionar a un evento, se tiene que determinar en tiempo de ejecución el disparador al cual va a reaccionar. Para ello se usa la sentencia SET HANDLER. Esta sentencia relaciona todos los métodos manejadores de eventos con sus correspondientes métodos. Tipos:
-Eventos dependientes de instancia declarados en una clase
-Eventos dependientes de instancia declarados en una interface
-Eventos estáticos declarados en una clase
-Eventos estáticos declarados en una interface
Para un evento dependiente de instancia se tiene que usar la adición FOR para especificar la instancia para la cual se quiere registrar el manejador. (FOR ALL INSTANCES para todas las instancias)
No se puede usar la adición FOR para los eventos estáticos. En este caso el registro se aplica a la clase entera.
Coordinación: después de la sentencia RAISE EVENT, todos los métodos manejadores registrados son ejecutados antes de que la siguiente sentencia sea procesada. (manejo eventos síncrono) Para evitar un bucle infinito actualmente los eventos sólo pueden anidar 64 niveles. Los métodos manejadores de eventos son ejecutados en el orden que son registrados. Debido a que los manejadores de eventos son registrados dinámicamente, no se puede saber el orden que serán procesados. Se debe programar todos los manejadores de eventos como si fuesen a ejecutar todos simultáneamente.
 
 
 
Sobre el autor
Publicación académica de Diego Baigorria, en su ámbito de estudios para la Carrera Consultor ABAP.
Diego Baigorria
Profesión: Aux Sistemas - Argentina - Legajo: ZC10B
✒️Autor de: 83 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor en SAP Fiori
- Máster Material Management en SAP S/4HANA LOGISTIC
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial