![](/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/401.jpg)
Definición de clases, atributos, metodos y eventos.
1. Clases locales y globales:
las clases en abap se pueden declarar globalmente o localmente. las clases globales se definen en el generador de clases, a través de la transacción SE24 en el ABAP Workbench
Transacción SE24: utilizaremos el "generador de clases" correspondiente a la transacción estándar SE24 para la administración de las clases e interfases definidas en el sistema SAP.
Estas clases son almacenadas en el Class Pools en la libreria de clases en el repositorio R/3. todos los programas ABAP en un sistema R/3 pueden acceder a las clases globales.
las clases locales se definen en un programa ABAP y solo pueden ser invocados desde el programa en el que se han definido.
Cuando se usa una clase en un porgrama ABAP el sistema busca primero una clase local con el nombre especificado. si no encuentra ninguna entonces busca clase global. A parte de la cuestion de la visibilidad, no hay ninguna diferencia entre 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 global 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 para ser usadas en cualquier parte.
2. definición de clases locales
las clases locales son el conjunto de sentencias que estan entre 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 esta comprendida entre las sentencias:
CLASS <class> definition. ....ENDCLASS.
Ejemplo:
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.
La parte de implementación contiene la implementación de tosos los métodos de la clase. esta parte actúa como un bloque, esto quiere decir que cualquier sección de 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 principalmente basándose en:
- una clase contiene componentes
- cada componente se asigna a una seccion de visibilidad(público, 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 casel. todos los componentes de una clase son visibles dentro de la clase. ademas todos comparten el mismo espacio por lo que sus nombres deben ser unicos dentro de la clase.
hay 2 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 estaticos) respectivamente).
En los objetos ABAP, las clases pueden definir los siguientes componentes:
- atributos
- metodos
- eventos
4. Atributos.
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 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 2 tipos de atributos:
- Dependientes de instancia: donde el contenido de los atributos es especifico de cada objeto. Se declaran usando la sentencia DATA.
- Independientes de instancia o estaticos: donde el contenido de los atributos define el estado de la clase y es valido para todas las instancias de la clase.
los atributos estaticos existen solo una vez para la clase. se declaran usando la sentencia class- data. son accesibles desde todo el entorno de la ejecución de la clase. todos los objetos de una clase pueden acceder a sus atributos estaticos. si se cambia un atributo estatico en un objeto, el camio es visible en todos los demas objetos de la clase.
5. Metodos
metodos: son procedimientos internos de una clase que definen el comportamiento de un objeto.
los metodos pueden acceder a todos los atributos de una clase. esto les permite cambiar el contenido de los atributos de un objeto.
los metodos poseen tambien una interface con parametros que les permite recibir valores cuando son invocados y devolver valores despues de la llamada. los atributos privados de una clase solo pueden ser cambiados por metodos de la misma clase.
la definición y la interface de un metodo son similares a las de los modulos de funciones. un metodo se define en la parte declarativa de la clase y se implementa en la parte de implementación usando las sentencias:
se pueden declarar tipos de datos locales y objetos en los metodos de la misma manera que en cualquier otro procedimiento ABAP. los metodos 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 estaticos: estos metodos se declaran usando la sentancia CLASS-METHODS. solo pueden acceder a los atributos estaticos y desencadenar eventos estaticos.
- especiales: ademas de los metodos normales que se pueden llama con la sentencia CALL METHOD, hay dos metodos especiales llamados CONSTRUCTOR y CLASS_CONSTRUCTOR que son automaticamente llamados cuando se crea un objeto o cuando se accede por primera vez a los componentes de la clase.
6. Eventos
eventos: son acontecimientos o sucesos que utilizan los objetos o las clases para desencadenar la ejecución de un metodo en otro objeto o clase.
estos metodos se llaman metodos que manejan eventos.En una llamada normal a un metodo. el metodo 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 metodos a los que quiere llamar. estos metodos tienen que existir.
El manejador de eventos determina los eventos a los cuales tiene que reaccionar. no tiene por que existir un metodo manejador de eventos registrado para cada evento. los eventos de una clase pueden ser desencadenados en los metodos de la misma clase usando la sentencia RAISE EVENT.
un metodo de la misma o diferente clase, se declara como metodo manejador de eventos utilizando la adición FOR EVENT OF.
los eventos tienen una interface de parametros similar a la de los metodos, pero solo tienen parametros de salida. los parametros son pasados por el disparador(sentencia raise event) al metodo manejador de eventos el cual los recibe como parametros de entrada.
el vinculo de union entre el disipador y el manejador es establecido dinamicamente en el programa usando la sentencia SET HANDLER. el disparador y el manejador pueden ser objetos o clases, dependiendo de si tenemos eventos dependientes de instancia o eventos estaticos y metodos manejadores de eventos. cuando un evento es disparado, el correspondiente metodo manejador de eventos es ejecutado en todas las clases registradas para ese manejador.
existen 2 tipos de eventos:
- Dependientes de instancia: se declaran con la sentencia EVENTS . solo pueden ser desencadenados en un metodo dependiente de instancia.
- independientes de instancia o estaticos: se declaran con la sentencia CLASS-EVENTS. todos lo metodos pueden desencadenar eventos estaticos. los eventos estaticos son el unico tipo de eventos que puede ser desencadenado por un metodo estatico.
7. Tipos y constantes
se pueden definir tipos de datos ABAP dentro de una clase con la sentencia TYPES. los tipos de datos no son especificos de cada instancia y existen una sola vez para todos los objetos de la clase.
las constantes son un tipo especial de atributos estaticos. 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.
8.- Visibilidade de una clase
la parte declarativa o definición de una clase se divide en tres areas de distintas visibilidad:
- Public section
- Protected section
- Private section
estas tres areas definen la visibilidad externa de los componentes de la clase, esto es, la interface entre la clase y el usuario.
Cada componente de una clase ha de ser asignado a una de estas tres secciones:
- Public section: todos los componentes declarados en la sección pública son accesibles para todos los usuarios de la clase y para todos los métodos de la clase y de cualquier clase que herede de ella. los componentes publicos conforman la interface entre la clase y el usuario.
- Protected section: todos los componentes declarados en la sección protegida son accesibles para todos los métodos de la clase y de las clases que heredan de ella. los componentes protegidos conforman la interface entre una clase y todas sus subclases.
- Private section: los componentes declarados en la sección privada son sólo visibles en los métodos de la misma clase. los componentes privados no forman parte de la interface externa de la clase.
 
 
 
Sobre el autor
Publicación académica de Natalia Alejandra Garcia Milla, en su ámbito de estudios para la Carrera Consultor ABAP.
Natalia Alejandra Garcia Milla
Profesión: Ingeniero en Informática - Chile - Legajo: ZE97A
✒️Autor de: 41 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime