![](/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/292.jpg)
Las Clases de ABAP se pueden generar Globalmente o Localmente. La definición global se realiza mediante el generador de clases, por medio de la Tx SE24. (Generador de Clases) Por medio de dicha Tx se puede administrar las clases e interfases definidas en el sistema SAP. Estas clases son almacenadas en la librería de clases en el Repositorio R/3.
Las clases locales se definen en un programa ABAP, y sólo pueden ser invocadas desde el programa en el que se han definido.
Cuando se usa una clase en un programa, El sistema busca primero una clase local, sino la encuentra busca entonces una global. A parte de la cuestión visibilidad, no hay ninguna diferencia entre ellas.. Lo que cambia es como son creadas. Si se define una clase que va ser usada en un único programa, es suficiente con definir los componentes visibles de manera que la clase se ajuste a nuestro programa. En cambio, las clases globales deben estar preparadas para usar en cualquier parte.
Las clases locales son el conjunto de sentencias que se encuentran entre CLASS y ENDCLASS. La definición de una clase consta de una parte declarativa, lo que se conoce como definición de los componentes de la clase y una parte de implementación en la que se implementan sus componentes. . La parte declarativa está comprendida entre CLASS (clase) DEFINITION. y ENDCLASS.
La parte declarativa contiene la declaración de todos los componentes de la clase. Cuando se definen clases locales, la parte declarativa, pertenece a los datos globales del programa, por tanto hay que situarlo al inicio del programa. Si se declaran métodos en la parte declarativa de una clase, se deberá escribir también su parte de implementación. Esta va entre las sentencias CLASS (clase) IMPLEMENTATION. y ENDCLASS. La parte de implementación contiene la implementación de todos los métodos de la clase. cualquier sección de código que no forme parte de este bloque no será accesible.
Estructura y componentes de una clase:
La estructura de una clase se define principalmente en:
-Una clase contiene componentes
-Cada componente se asigna a una sección de visibilidad (Público, privado, protegido)
-Las clases implementan métodos
Los componentes de una clase representa su contenido. 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 distintas secciones de visibilidad que define la interface externa de la clase. Todos los componentes de una clase son visibles dentro de la clase. Todos comparten el mismo espacio, por los que sus nombres deben ser únicos dentro de la clase. Hay dos tipos de componentes, los que existen separadamente para cada objeto de la clase, y los que existen sólo una vez para la clase entera. A estos se los conocen como dependientes de la instancia o independientes de la instancia (o estáticos) respectivamente.
Las clases pueden definir los siguientes componentes:
-Atributos
-Métodos
-Eventos
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 dentro de la clase. Existen dos tipos de atributos:
Dependientes de la instancia: Donde el contenido del atributo es específico de cada objeto. Se declara usando la sentencia DATA
Independiente de la instancia o estáticos: Donde el contenido del atributo define el estado de la clase y es válido para todos los objetos de ella. Estos existen sólo una vez para la clase, Se declaran usando la sentencia CLASS-DATA. Son accesibles desde todo entorno de ejecución de la clase. Todos los objetos de una clase pueden acceder a sus atributos estáticos. Si se cambia el atributo estático en un objeto, el campo es visible en todos los demás objetos de la clase.
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 también poseen una interfase 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. Para definir un método se usa las sentencias METHOD (método) y ENDMETHOD. Los métodos se llaman mediante la sentencia CALL METHOD. Existen tres tipos de métodos:
Dependientes de la instancia: Se declaran usando la sentencia METHODS. Pueden acceder a todos los atributos de la clase y pueden desencadenar todos los eventos de la misma.
Independientes de la instancia o estáticos: Se declaran usando la sentencia CLASS METHOD. Sólo pueden acceder a los atributos estáticos y desencadenar eventos estáticos.
Especiales: hay dos métodos especiales llamados CONSTRUCTOR y CLASS_CONSTRUCTOR que son automáticamente llamados cuando se crea un objeto CONSTRUCTOR o cuando se accede por primera vez a los componentes de la clase CLASS_CONSTRUCTOR.
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. La unión entre el disparador de evento "trigger" y el manejador del evento "handler" no es establecida de antemano, sino en el entorno de ejecución.
En la llamada 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 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.
El método de la misma o diferente clase, se declara como método manejador de eventos utilizando la adición FOR EVENT OF.
Los eventos tienen una interfase parecida a los 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.
Eñ vínculo entre el disparador y el manejador es establecido dinámicamente 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 la instancia o estáticos. Cuando un evento es disparado el correspondiente método manejador de eventos es ejecutado en todas las clases registrada para ese manejador. Los tipos de eventos
Dependiente de instancia: declaran usando la sentencia EVENTS. Sólo pueden ser desencadenados de un método dependiente de la instancia
Estáticos o independientes: declaran usando CLASS-EVENTS. Todos los métodos los pueden desencadenar. Los eventos estáticos son el único tipo de eventos que puede ser desencadenado por un método estático.
Tipos y constantes: Se pueden definir tipos de datos ABAP 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.
Visibilidad
La parte declarativa o de definición de una clase se divide en 3 áreas de distinta visibilidad, cada una de las cuales definen la visibilidad externa de los componentes de la clase, esto es, la interface entre la clase y el usuario:
Public Section: parte pública, todos los componentes declarados en esta sección 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 públicos 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 declarados aquí conforman la interface entre una clase y todas sus subclases
Privated Section: Parte privada, todos los componentes delcarados en esta sección son sólo visibles por los métodos de la misma clase. No forman interface externa de la clase
 
 
 
Sobre el autor
Publicación académica de Diego Baigorria, en su ámbito de estudios para la Carrera Consultor ABAP.
Diego Baigorria
Profesión: Aux Sistemas - Argentina - Legajo: ZC10B
✒️Autor de: 83 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor en SAP Fiori
- Máster Material Management en SAP S/4HANA LOGISTIC
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial