✒️ABAP POO Los Eventos
ABAP POO Los Eventos
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 instancia contienen el parámetro implícito SENDER, el cual tiene el tipo de una referencia al tipo o a la interface en la cual se declara el evento.
- Los eventos dependientes de instancia solo se desencadenan en métodos dep de instancia.
- Los eventos estáticos, único tipo que puede ser desencadenado por métodos estático.
- Métodos dep de instancia y estáticos pueden desencadenar eventos estáticos.
RAISE <evt> EXPORTING... <ei> = <f i>...
Cada parámetro que no contenga la adición OPTIONAL, será requerido su valor en EXPORTING.
La referencia a sí mismo ME es pasada automáticamente al parámetro implícito SENDER.
Eventos manejadores
Los eventos se usan para ejecutar métodos que:
- Están definidos como eventos manejadores (handler) de ese evento.
- Están registrados en tiempo de ejecución para el evento.
En una clase puede haber manejadores de eventos para eventos propios o de otras clases.
Método dependiente de instancia:
METHODS <meth> FOR EVENT <evt> OF <cif> IMPORTING.. <ei>..
Método estático:
CLASS-METHOD <meth> FOR EVENT <evt> OF <cif> IMPORTING.. <ei>..
La infertace de un método manejador, sólo puede contener parámetros formales definidos en declaración del evento. El método no tiene por que usar todos los parámetros RAISE EVENT.
Registro de métodos manejadores de eventos
Para que un método manejador reaccione a un evento, se declara el disparador :
SET HANDLER... <hi>... [FOR]...
Tipos de eventos:
- Dependientes de instancia declarados en una clase.
- Dependientes de instancia declarados en una interface.
- Estáticos declarados en una clase.
- Estáticos declarados en una interface.
Para un evento dependiente de instancia se usa la adición FOR para especificar la instancia a la cual se quiere registrar el manejador.
Una sola instancia especifica como disparador (variable referenciada)
SET HANDLER... <hi>...FOR <ref>.
Todas las instancias pueden disparar el evento
SET HANDLER... <hi>...FOR ALL INSTANCES
Aplica para todas las instancias, incluso las que no han sido creadas al momento del registro.
Para eventos estáticos NO se usa FOR
SET HANDLER... <hi>...
Aplica a todas las clases que implementan la interface que contiene el evento estático.
En el caso de las interfaces, también aplica a clases que aun no han sido cargadas al momento del registro.
Coordinación en el manejo de eventos
Después de la sentencia RAISE EVENT, todos los métodos manejadores registrados son ejecutados antes de que la siguiente sentencia sea procesada (manejo de eventos sincrónico).
Los eventos solo pueden anidar 64 niveles para evitar bucles finitos.
Los métodos manejadores de eventos son ejecutados en el orden en el que se registran.
Los métodos manejadores de eventos se deben programar como si fuesen a ejecutarse simultáneamente debido a que son registrados dinámicamente y no se sabe el orden en el que serán procesados.
Eventos sujetos a misma estructura de visibilidad.
Los públicos puede usarlos cualquiera
Los protegidos pueden usarlos usuarios dentro de la clase y sus subclases
Los privados solo pueden usarse dentro de la clase
Los métodos manejadores de eventos pueden tener la misma visibilidad o mas restringida de los eventos a los que se refieren.
Ejemplo de manejo de eventos
La clase CONTADOR implementa un contador
Se desencadena el evento valor_ctritico cuando el valor UMBRAL es excedido, se visualiza la diferencia.
La clase MANEJADOR puedemanejar las excepciones en la clase CONTADOR. El manejador es registrado en tiempo de ejecución para todas las variables referenciadas que apunten al objeto.
 
 
 
Sobre el autor
Publicación académica de Denisse Adriana Hernandez Trujillo, en su ámbito de estudios para el Máster ABAP POO.
Denisse Adriana Hernandez Trujillo
Mexico - Legajo: AH80E
✒️Autor de: 71 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Denisse Hernandez