✒️ABAP Los Eventos
ABAP Los Eventos
7° Eventos
1- Disparar y Manejar Eventos
- Métodos Triggers (o Disparadores): Son los que Disparan un Evento
- Métodos Handlers (o Manejadores): Son los que se ejecutan cuando ocurre un Evento.
- Para disparar un Evento la Clase tiene que:
- Declarar el Evento en la Parte Declarativa
- Disparar el Evento en uno de sus Métodos.
- Declaración de Eventos
- Se declaran en la Parte Declarativa de una Clase o en una Interface
- Para Eventos Dependientes de Instancia
- EVENT <evt> EXPORTING ... VALUE(<ei>) TYPE type [optional] ...
- Para Eventos Independientes de Instancia o Estáticos
- CLASS-EVENT <evt> EXPORTING ... VALUE(<ei>) TYPE type [optional] ...
- Se puede adicionar EXPORTING para especificar Parámetros (por Valor) que se pasan al Manejador
- Los Dependientes de Instancia siempre contienen el Parámetro Implícito SENDER, el cual tiene el Tipo de una Referencia al Tipo o a la Interface en el cual el Evento es declarado.
- Un Evento Dependiente de Instancia puede ser desencadenado en un Método Dependiente de Instancia
- Los Eventos Estáticos son disparados por Métodos ..........
- Para disparar un Evento en un Método se utiliza la sentencia
- RAISE EVENT <evt> EXPORTING ... VALUE(<ei>) = <f i> ...
- Si un Parámetro Formal no está definido como Opcional, se tiene que pasar el Parámetro Real en EXPORTING
- La Referencia a sí mismo ME es pasada automáticamente al Parámetro Implícito SENDER.
2- Eventos Handlers o Manejadores
Los Eventos se usan para ejecutar una serie de Métodos, los cuales deben:
- Estar Definidos como Eventos Manejadores (Handlers) de ese Evento
- Estar Registrados en Tiempo de Ejecución para el Evento
Un Evento puede contener Métodos Manejadores de Eventos de su Clase como de otras Clases.
- Declaración de Métodos Manejadores de Eventos
- Para Dependientes de Instancia
- METHODS <meth> FOR EVENT <evt> OF <cif> IMPORTING ... <ei> ...
- Para Independientes de Instancia o Estáticos
- CLASS-METHODS <meth> FOR EVENT <evt> OF <cif> IMPORTING ... <ei> ...
- La Interface de un Método Manejador de Eventos sólo puede tener 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 Manejador de Eventos no tiene porque usar todos los Parámetros de la sentencia RAISE EVENT.
3- Registro de Métodos Manejadores de Eventos
Para permitir a un Método Manejador de Eventos reaccionar a un Evento, se debe determinar en Tiempo de Ejecución el Disparador al cual va a reaccionar. Esto se realiza usando la sentencia:
SET HANDLER ... <hi> ... [FOR] ...
Esta sentencia relaciona los Métodos Manejadores de Eventos con sus correspondientes Métodos
- Hay 4 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.
- Sintaxis y Efecto de la sentencia SET HANDLER
- Evento Dependiente de Instancia para una Instancia:
- SET HANDLER ... <hi> ... FOR <ref> siendo ref una Variable Referenciada.
- Evento Dependiente de Instancia para todas las Instancias (incluidas las no declaradas todavía).
- SET HANDLER ... <hi> ... FOR ALL INSTANCES.
- Evento Estático:
- SET HANDLER ... <hi> ...
- El Registro se aplica automáticamente a la Clase entera o a todas las Clases que implementan la Interface que contiene al Evento Estático.
- Para las Interfaces, también se aplica a las Clases que aún no se han cargado
4- Coordinación en el Manejo de Eventos
Después que se ejecuta la sentencia RAISE EVENT, se ejecutan todos los Métodos Handlers registrados antes de continuar con la sentencia siguiente al RAISE EVENT y se ejecutan en el orden en que fueron registrados
Debido a que son registrados dinámicamente, no se puede saber el orden en que serán procesados, por lo que se deben programar como si fuesen a ser ejecutados todos simultáneamente.
Los Eventos están sujetos a la misma estructura de Visibilidad de los demás Componentes de una Clase. Lo mismo ocurre con los Métodos Manejadores de Eventos.
- Los Eventos Públicos pueden ser utilizados por cualquiera
- Los Eventos Protegidos sólo pueden ser utilizados por los Usuarios dentro de la Clase y sus Subclases.
- Los Eventos Privados sólo pueden ser utilizados dentro de la Clase.
- La Visibilidad de un Método Manejador de Eventos determina quien está autorizado para registrar el Método, es decir en que lugares se podrá utilizar la sentencia SET HANDLER
- Los Públicos pueden ser utilizados por cualquiera
- Los Protegidos sólo pueden ser utilizados por los Usuarios dentro de la Clase y sus Subclases.
- Los Privados sólo pueden ser utilizados dentro de la Clase.
- Pueden tener la misma Visibilidad o más restringida que los Eventos a los que se refieren.
5- Ejemplo del Manejo de Eventos
- La Clase CONTADOR implementa un contador.
- Se desencadena el Evento VALOR_CRITICO cuando el valor UMBRAL es excedido y se visualiza la diferencia.
- La Clase MANEJADOR puede manejar las excepciones en la Clase CONTADOR.
- El Manejador es registrado en tiempo de ejecución para todas las Variables Referenciadas que apunten al Objeto.
CLASS contador DEFINITION.
CLASS manejador DEFINITION.
DATA: cuenta TYPE REF TO contador,
 
 
 
Sobre el autor
Publicación académica de Victor Norberto Levi, en su ámbito de estudios para la Carrera Consultor ABAP.
Victor Norberto Levi
Profesión: Analista Programador - Argentina - Legajo: VT17H
✒️Autor de: 111 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Victor Levi