✒️ABAP La definición de Clases, Atributos, Métodos y Eventos
ABAP La definición de Clases, Atributos, Métodos y Eventos
Clases locales y globales
Las clases en ABAP se pueden declarar globalmente o locamente.
SE24 para declarar clases globales. El generador de clases administra las clases e interfaces definidas en el sistema SAP. Estas clases se almacenan en el Class Pools.
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 ABAP el sistema busca primero una clase local y si no la encuentra busca una clase global.
Definición de clases locales
Son el conjunto de sentencias que están entre las sentencias CLASS... ENDCLASS. Contiene 3 partes:
- Parte declarativa: es la definición de la clase, se definen los componentes. Contiene la declaración de todos los componentes de la clase (atributos, métodos y eventos). La parte declarativa pertenece a los datos globales del programa, por lo que se sitúa al principio del programa. Si se declaran métodos en la parte declarativa, se deberá escribir también su parte de implementación.
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.
- Parte implementación: contiene la implementación de todos los métodos de la clase. Esta parte actúa como un bloque, es decir cualquier sección de código que no forme parte del bloque no será accesible. Ejemplo:
CLASS counter IMPLEMENTATION.
METHOD set.
count = set_value.
ENDMETHOD.
METHOD increment.
ADD 1 TO count.
ENDMETHOD.
METHOD get.
get_value = count.
ENDMETHOD.
ENDCLASS.
Estructura y componentes de una Clase
Una clase contiene componentes. (Atributos, métodos y 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. Existen dos tipos de atributos:
- Dependientes de instancia: donde el contenido de los atributos es específico de cada objeto. Se declaran mediante la sentencia DATA.
- Independientes de la 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. Se declaran mediante la sentencia CLASS-DATA. Son accesibles desde toda la ejecución de la clase. Si se cambia un atributo estático en un objeto, el cambio es visible a todos los demás 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 cont TYPE i. " Atributo Dependiente de instancia.
CLASS-DATA v_suma TYPE i. " Atributo Independiente de instancia.
ENDCLASS. " contador DEFINITION.
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. Los atributos privados de una clase sólo pueden ser cambiados por métodos de la misma clase. 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. Se llaman mediante CALL METHODS. Ejemplo:
METHOD increment.
ADD 1 TO count.
ENDMETHOD.
Existen 3 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: se declaran usando la sentencia CLASS-METHODS. Sólo pueden acceder a los atributos estáticos y desencadenar eventos estáticos.
- Especiales: 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. Es decir, métodos que manejan eventos. Disparador del evento "trigger" y el manejador del evento "handler".
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 diferente clase, se declara como método manejador de eventos utilizando la adición FOR EVENT OF. Un método manejador de eventos se declara con la adición FOR EVENT OF. Existen 2 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 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.
Cada componente se asigna a una sección de visibilidad (público, protegido o privado).
La parte declarativa se divide en 3 áreas de distintan visibilidad:
- PUBLIC SECTION (Parte Pública): 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 cualquiera que herede de ella. Los componentes públicos conforman la interface entre la clase y el usuario.
- PROTECTED SECTION (Parte Protegida): todos los componentes declarados en la sección protegieda 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 (Parte Privada): 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.
 
 
 
Agradecimiento:
Ha agradecido este aporte: Helen Silva Ruiz
Sobre el autor
Publicación académica de Javier Exposito Diaz, en su ámbito de estudios para la Carrera Consultor ABAP.
Javier Exposito Diaz
Profesión: Programador Abap/4 Sap - España - Legajo: PF87S
✒️Autor de: 55 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Javier Exposito