✒️ABAP La definición de Clases, Atributos, Métodos y Eventos
ABAP La definición de Clases, Atributos, Métodos y Eventos
1° Clases locales y globales:
Las clases globales se definen en el generador de clases, a través de la transacción SE24 en el ABAP WorkBench.
Estas clases son almacenadas en el Class Pools en la librería de clases en el Repositorio R/3.
Cuando se usa una clase en un programa ABAP el sistema busca primero una clase local con el nombre especificado. Si no encuentra ninguna entonces busca una clase global. A parte de la cuestión de la visibilidad, no hay ninguna diferencia entra usar una clase global o una clase local. Lo que si cambia sensiblemente es la manera en la que una clase local y una clase local son creadas.
Si se define una clase que se va a usar en un unico programa, normalmente es suficiente con definir los componentes visibles de manera que la clase se ajuste a nuestro programa. Por otro lado, las clases globales deben estar preparadas paraser usadas en cualquier parte.
2° Definición de Clases locales:
Las clases locales son el conjunto de sentencias que están entre las sentencias CLASS...ENDCLASS.
Una definición completa de una clase constará de una parte declarativa, lo que se conoce como definición de la clase, en la que se definen los componentes, y una parte de implementación, lo que se conoce como implementación de la clase, en la que se implementan estos componentes.
La parte declarativa o definición de una clase está comprendida entre las sentencias:
CLASS <class> DEFINITION.
....
ENDCLASS.
ejemplo
CLASS <class> DEFINITION.
PUBLIC SECTION:
METHODS: set IMPORTING value(set_value) TYPE i.
.....
PRIVATE SECTION:
DATA: ......
ENDCLASS.
La parte declarativa contiene la declaracion de todos los componentes de la clase (atrivutos, metodos y eventos). Cuando se definen clases locales, la parte declarativa pertenece a los datos globales del programa, (TOP).
Si se declaran métodos en la parte declarativa de una clase, se deberá escribir también su parte de implementación. Ésta es la que va incluida entre las siguientes sentencias:
CLASS <class> IMPLEMENTATION.
.....
ENDCLASS.
Ejm:
CLASS <class> IMPLEMENTATION.
METHOD set.
count = set_value.
endmethod.
ENDCLASS.
3° Estructura y Componentes de una Clase:
La estrucutra de una clase se define principalmente basándose en:
* Una clase contiene componentes.
* Cada componente se asigna a una sección de visibilidad(publico, protegido o privado)
* Las clases implementan métodos.
Los componentes de una clase representan sus contenidos. Todos los componentes son declarados en la parte declarativa de la clase. Los componentes definen los atributos de los objetos en una clase.
Cuando se define una clase, cada componente es asignado a una de las tres distintas secciones de visibilidad que define la interface externa de la clase. Todos los componentes de una clase son visibles dentro de la clase. Ademas todos comparten el mismo espacio por los que sus nombres deben ser únicos dentro de la clase.
Hay dos tipos de componentes en una clase, aquellos que existen separadamente para cada objeto de una clase, y aquellos que existen sólo una vez para la clase entera, independiente del número de instancias. Estos componentes son conocidos como dependientes de Instancia o independientes de instancia (o estáticos) respectivamente.
En los objetos ABAP, las clases pueden definir los siguientes componentes:
Atributos
Métodos
Eventos
4° Atributos:
Son los campos de datos internos de una clase y puedne tener cualquier tipo de datos ABAP.
El estado de un objeto viene determinado por el contenido de sus atributos. Un tipo de atributos son las variables referenciadas. Estas variables permiten crear y acceder a los objetos, de manera que si se definen en una clase permiten acceder a otros objetos desde dentro de la clase.
Existen dos tipos de atributos:
Dependientes de instancia: donde el contenido de los atributos es específico de cada objeto. Se declara usando la sentencia DATA.
Independientes de instancia o estáticos: donde el contenido de los atributos define el estado de la clase y es válido para todas las instancias de la clase.
Los atributos estáticos existen sólo una vez para cada clase. Se declaran usando la sentencia CLASS-DATA. Son accesibles desde todo el entornode ejecución de la clase. Todos los objetos de una clase pueden acceder a sus atributos estátoicos. Si se cambia un atributo estático en un objeto, el cambio es visible en todos los demás objetos de la clase.
Veamos un ejemplo:
CLASS contador DEFINITION.
PUBLIC SECTION.
METHODS: set IMPORTING VALUE (set_value) TYPE i.
PRIVATE SECTION
DATA: cont TYPE i. " Atributo Dependiente de instancia
CLASS-DATA v_sma TYPE i. " Atributo Independiente de instancia
ENDCLASS.
5° Métodos:
Son procedimientos internos de una clase. Esto les permite cambiar el contenido de los atributos de un objeto.
Los métodos poseen también una interface con parámetros que les permite recibir valores cuando son invocados y devolver valores después de la llamada. Los atributos privados de una clase sólo pueden ser cambiados por métodos de la misma clase.
La definición y la interface de un método son similares a las de los módulos de funciones. Un método se define en la parte declarativa de la clase y se implementa en la parte de implementación usando las sentencias:
MEHOD <meth>.
---
ENDMETHOD.
Veamos un ejemplo:
METHOD increment.
ADD 1 TO count.
ENDMETHOD.
Se pueden declarar tipos de datos locales y objetos en los métodos de la misma manera que en cualquier otro procedimiento ABAP. Los métodos se llaman mediante la sentencia CALL METHOD.
Existen tres tipos de métodos:
Dependientes de instancia: estos métodos se declaran usando la sentencia METHODS. Pueden acceder a todos los atributos de una clase y pueden desencadenar todos los eventos de una clase.
Independientes de instancia o estáticos: estos métodos se declaran usando la sentencia CLASS-METHODS. Sólo pueden acceder a los atributos estáticos y desencadenar eventos estáticos.
Especiales: además de los métodos normales que se pueden llamar con la sentencia CALL METHOD, hay dos métodos especiales llamados CONSTRUCTOR y CLASS_CONSTRUCTOR que son automaticamente llamados cuando se crea un objeto (constructor) o cuando se accede por primera vez a los componentes de la clase (CLASS_CONSTRUCTOR).
6° Eventos:
Son acontecimientos o sucesos que utilizan los objetos o las clases para desencadenar la ejecución de un método en otro objeto o clase.
Estos métodos se llaman métodos que manejan eventos (event gandler methods).
En una llamada normal a un método, el método puede ser llamado por cualquier número de usuarios. Cuando un evento es desencadenado, cualquier número de estos métodos puede ser llamado.
La unión entre el disparador del evento "trigger" y el manejador del evento "handler" no es establecida de antemano, si no en el entorno de ejecución. En las llamadas normales a métodos, el programa que llama determina los métodos los métodos a los que quiere llamar. Estos métodos tienen que existir.
El manejador de evenos determina los eventos a los cuales tiene que reaccionar. No tiene porque existir un método manejador de eventos registrado para cada evento. Los eventos de una clase pueden ser desencadenados en los métodos de la misma clase usando la sentencia RAISE EVENT.
Un método de la misma o de diferenta clase, se declara como metodo manejador de eventos utilizando la adición FOR EVENT OF.
Los eventos tienen una interface de parámetros similar a la de los métodos, pero sólo tienen parámetros de salida. Los parámetros son pasados por el disparador (sentencia RAISE EVENT) al método manejador de eventos el cual los recibe como parámetros de entrada.
El vínculo de unión entre el disparador y el manejador (tigger y handler) es establecido dinámicamente en el programa usano la sentencia SET HANDLER. El disparador y el manejador pueden ser objetos o clases, dependiendo de si tenemos eventos dependientes de intancia o eventos estáticos y métodos manejadores de eventos. Cuando un evento es disparado, el correspondiente método manejador de eventos es ejecutado en todas las clases registradas para ese manejador.
Existen dos tipos de eventos:
Dependientes de instancia: Se declaran con la sentencia EVENTS. Sólo pueden ser desencadenados en un método dependiente de instancia.
Independientes de instancia o estáticos: se declaran con la sentencia CLASS-EVENTS. Todos los métodos pueden desencadenar eventos estáticos. Los eventos estaticos son el unico tipo de eventos que puede ser desencadenado por un método estático.
Ejm:
CLASS handler DEFINITION.
PUBLIC SECTION
METHODS handle_excess FOR EVENT critical_value OF counter
IMPORTIN excess.
ENDCLASS.
CLASS hendler IMPLEMENTATION.
METHOD handle_excess.
WRITE: / 'Excess is', excess.
ENDMETHOD.
ENDCLASS.
 
 
 
Sobre el autor
Publicación académica de Matias Giorgieff, en su ámbito de estudios para la Carrera Consultor ABAP.
Matias Giorgieff
Profesión: Programador Jr - Chile - Legajo: RA71X
✒️Autor de: 24 Publicaciones Académicas
🎓Cursando Actualmente: Master Funcional para Consultores ABAP
🎓Egresado de los módulos:
Certificación Académica de Matias Giorgieff