![](/cvo_files/imgs_sap_abap/logos/logo_cvo_academy_it.png)
✒️ABAP La definición de Clases, Atributos, Métodos y Eventos
ABAP La definición de Clases, Atributos, Métodos y Eventos
![ABAP La definición de Clases, Atributos, Métodos y Eventos ABAP La definición de Clases, Atributos, Métodos y Eventos](https://www.cvosoft.com/cvo_files/imgs_sap_abap/og-images/212.jpg)
1- Clases locales y globales
Las clases en abad pueden ser globales o locales
las clases globales se definen en el generador de clases a través de SE24 (generador de clases para la administración de las clases e interfase definidas en el sistema SAP) en Ablap workbench.
Estas son al maceradas en el CLASS POLLS en la librera en el repositorio R/3, todos los programas ABAP en un sistema R/3 pueden acceder a las clases globales.
Las clases locales solo puede ser invocadas desde el programa en el que se ha definido.
Cuando se usa una clase en un programa Abad el sistema busca primero la clase local con el nombre especificado. Sin esta no se encuentra entonces busca la global. A parte de la cuestión de visibilidad, no hay ninguna diferencia entre usar una clase global o una clase local. Lo que si cambia simplemente la manera en que la clase local y una clase global son creadas.
Si se define una clase que se va a usar en un único programa, normalmente es suficiente con definir los componentes locales visibles de manera que la clase se ajuste a nuestro programa. Las clases globales deben estar preparadas para ser usada en cualquier parte.
2- Definición de clases locales
Las clases locales son el conjunto de sentencias que entre las sentencias CLASS... ENDCLASS.
Una definición completa de una clase contara de una parte declarativa, lo que se conoce como definición de clase, en estas se definen componentes y una parte de implementación. lo que se conoce como implementación de la clase en que se implementan esos componentes.
La parte declarativa o definición de una clase esta comprendida entre las siguientes sentencias:
CLASS <class> DEFENITION.
...
ENDCLASS.
CLASS counter DEFINITION.
PUBLIC SECTION.
METHODS: set IMPORTING value(set_value) TYPE i,
increment,
get EXPORTING value(get_value) TYPE i.
PRIVATE SECTION.
DATA count TYPE i.
ENDCLASS.
Parte declarativa contienen declaración de todos los componentes de la clase (atributos, métodos y eventos). Cuando se definen clases locales, la parte declarativa pertenece a los datos globales del programa, por lo tanto se sitúan al principio. Si se declaran los métodos en la parte directiva de una clase, se Debra escribir también su parte de implementación. Esta es la que va incluida entre las siguientes sentencias,
CLASS <class> IMPLEMENTATION.
...
ENDCLASS.
CLASS counter IMPLEMENTATION.
METHOD set.
count = set_value.
ENDMETHOD.
METHOD increment.
ADD 1 TO count.
ENDMETHOD.
METHOD get.
get_value = count.
ENDMETHOD.
ENDCLASS.
La parte de la implementación contiene la implementación de todos los métodos de la clase, esta parte actual como un bloque es decir que cualquier sección del código que no forme parte del bloque no será accesible.
3- Estructura y Componentes de una clase.
La estructura de una clase se define:
- 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 definen la interface externa de la clase. Todos los componentes de una clase son visibles dentro de la clase. Además, todos comparten el mismo espacio por lo 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 solo una vez para la clase entera, independientemente 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 definirse:
- Atributos
- Métodos
- Eventos.
4- Atributos.
Son los campos de datos internos de una clase y pueden tener cualquier tipo de datos ABAP.
El estado de un objeto viene determinado por el contenido de sus atributos. Un tipo de atributo 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: El contenido de los atributos es específico de cada objeto. Se declaran usando la sentencia DATA.
- Independientes de instancia o estáticos: 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 sólo existen una vez para la clase. Se declaran usando la sentencia CLASS-DATA. Son accesibles desde todo el entorno de ejecución de la clase. Todos los objetos de una clase pueden acceder a sus atributos estáticos. Si se cambia un atributo estático en un objeto, el cambio es visible en todos los demás objetos de la clase.
CLASS counter DEFINITION.
PUBLIC SECTION.
METHODS: set IMPORTING value(set_value) TYPE i,
increment,
get EXPORTING value(get_value) TYPE i.
PRIVATE SECTION.
DATA count TYPE i. "Atributo Dependiente de Instancia
CLASS-DATA v_suma TYPE i. "Atributo Independiente de Instancia
ENDCLASS. "contador DEFINITION
5-Métodos.
Son procedimientos internos de una clase que definen el comportamiento de un objeto.
Los métodos pueden acceder a todos los atributos de una clase. Esto les permite cambiar el contenido de los atributos de un objeto.
Los métodos poseen 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 solo pueden ser cambiados por los 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
METHOD <meth>.
…
ENDMETHOD.
Ejemplo (implementación):
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 procedimiento ABAP. Los métodos se llaman mediante la sentencia CALL METHOD.
Existen tres tipos de métodos:
- Dependientes de instancia: 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: Se declaran usando la sentencia “CLASS-METHODS”. Solo pueden acceder a los atributos estáticos y desencadenar los eventos estáticos.
- Especiales: Hay dos métodos especiales llamados CONSTRUCTOR y CLASS_CONSTRUCTOR. Son llamados automáticamente 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 handler methods).
En una llamada normal a un método, el método puede ser llamado por cualquier número de usuarios. Cuando un método es desencadenado, cualquier número de estos métodos puede ser llamado.
La unión entre el disparador del evento “trigger” y el manejador de eventos “handler” no es establecida de antemano, sino en el entorno de ejecución. En las llamadas normales a métodos, el programa que llama determina los métodos a los que quiere llamar. Estos métodos tienen que existir.
El manejador de eventos determina los eventos a los cuales tiene que reaccionar. No tiene por qué 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 diferente clase, se declara como método manejador de eventos utilizando el agregado 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 (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 (trigger y handler) es establecido dinámicamente en el programa, con la sentencia SET HANDLER. El disparador y el manejador pueden ser objetos o clases, dependiendo de si tenemos eventos dependientes de instancia 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.
Tipos de eventos:
- Dependientes de instancia: Se declaran con la sentencia EVENTS. Solo 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 estáticos son el único tipo de eventos que puede ser desencadenado por un método estático.
CLASS handler DEFINITION.
PUBLIC SECTION.
METHODS handle_excess FOR EVENT critical_value OF counter,
IMPORTING excess.
ENDCLASS.
CLASS handler IMPLEMENTATION.
METHOD handle_excess.
WRITE: / 'Excess is', excess.
ENDMETHOD.
ENDCLASS.
7-Tipos y constantes.
Se pueden definir tipos de datos dentro de una clase con la sentencia TYPES. Los tipos de datos no son específicos de cada instancia y existen una sola vez para todos los objetos de la clase.
Las constantes son un tipo especial de atributos estáticos. Su valor se fija cuando son declaradas y no puede ser cambiado. Se declaran usando la sentencia CONSTANTS. Las constantes existen sólo una vez para todos los objetos de la clase.
CLASS contador DEFINITION.
PUBLIC SECTION.
METHODS: set IMPORTING value(set_value) TYPE i,
incrementar_contador,
get EXPORTING value(get_value) TYPE i.
PRIVATE SECTION.
DATA count TYPE i. "Atributo Dependiente de Instancia
CLASS-DATA v_suma TYPE i. "Atributo Independiente de Instancia
ENDCLASS. "contador DEFINITION
los atributos públicos son los atributos a los que un usuario puede acceder externamente. Los componentes públicos de la clase se conocen como la inferface de la clase. A la sección de visibilidad privada también se la llama como la ocultación de la información o encapsulación, se utiliza para proteger al usuario de una clase ya que los componentes privados de una clase se modificarán pero su interface será siempre la misma. Los usuarios externos sólo pueden acceder a sus componentes a través de la interface de la clase, con lo que se continuará trabajando con la clase después de realizar el cambio. El usuario no se da cuenta del cambio porque sólo se modificó la implementación interna. Si los componentes públicos de una clase son modificados de manera incompatible, cada usuario externo tendrá que tener en cuenta estos cambios. Es aconsejable no modificar los componentes publicos de nuestra clases.
 
 
 
Sobre el autor
Publicación académica de Juan Carlos Pavicich, en su ámbito de estudios para la Carrera Consultor ABAP.
Juan Carlos Pavicich
Profesión: Técnico Informático - Argentina - Legajo: VR91L
✒️Autor de: 116 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Tengo el agrado de dirigirme a ud/s con el objeto de mencionar mi experiencia y conocimientos técnicos necesarios para desarrollar actividades en el rubro de su empresa.
Certificación Académica de Juan Pavicich