✒️ABAP POO Los constructores
ABAP POO Los constructores
CONSTRUCTORES:
QUE SON LOS CONSTRUCTORES
Es un método especial que es llamado por el sistema en tiempo de ejecución de forma implícita.
Existen dos tipos de métodos en los Objetos ABAP:
Los Explícitos: se llaman mediante CALL METHOD (o la forma abreviada =>)
Los Implícitos: son los Constructores.
CUANDO SE UTILIZAN CONSTRUCTORES
· Un constructor será necesario si después de crear una instancia de una clase necesitamos:
· Asignar recursos
· Inicializar atributos que no pueden ser cubiertos con la adición VALUE de la sentencia DATA
· Modificar atributos estáticos.
· Enviar mensajes que indiquen que un nuevo objeto ha sido creado.
TIPOS DE CONSTRUCTORES
Existe do tipos de constructores que pueden ser declarados.
De instancia: lleva el nombre de CONSTRUCTOR (es llamado por el sistema tan pronto como el objeto ha sido generado en memoria)
Estático, lleva el nombre CLASS_CONSTRUCTOR
CONSTRUCTOR DE INSTANCIA
Es llamado en tiempo de ejecución con la sentencia CREATE OBJECT, se define así:
CLASS <nombreclase> DEFINITION.
…..METHODS constructor [ IMPORTING in_par TYPE type_name EXCEPTIONS exception RAISING exception_class ].
…
ENDCLASS.
A tener en cuenta:
· Solo puede haber un constructor por clase
· Debe ser definido en la sección pública
· Solo puede tener parámetros IMPORTING y EXCEPTIONS
· Cuando se ejecutan las excepcione en el constructor las instancias del objeto no son creadas
· Excepto en casos extraordinarios, no se puede llamar a un constructor explícitamente.
NOTA: No existe un destructor en los objetos ABAP, no hay método de instancia que se llame automáticamente antes de que un objeto sea borrado.
Ejemplo:
CLASS vehiculo DEFINITION.
…PUBLIC SECTION.
……METHODS constructor IMPORTING im_marca TYPE string im_modelo TYPE string.
…PRIVATE SECTION.
……DATA: marca TYPE string, modelo TYPE string.
ENDCLASS.
CLASS vehiculo IMPLEMENTATION.
…METHOD constructor.
……marca = im_marca.
……modelo = im_modelo.
…ENDMETHOD.
ENDCLASS.
DATA: r_vehiculo TYPE REF TO vehiculo.
START-OF-SELECTION.
…CREATE OBJECT r_vehiculo
……EXPORTING
……..im_marca = ‘Ferrari’
……..im_modelo = ‘F40’.
Todas las clases tienen un constructor de instancia llamado CONSTRUCTOR, esto es una excepción a la regla que establece que los nombres de los componentes dentro de un árbol de herencia deben ser únicos. Sin embargo los constructores de instancia son independientes entre sí.
Nos es factible redefinir el constructor de instancia de una superclase en una clase. Tampoco se pueden llamar a los constructores con CALL METHOD
Debido a que una subclase contiene todos los atributos visibles de sus superclases que también pueden ser establecidos por los constructores de instancia. El constructor de instancia de una subclase tiene que asegurarse que los constructores de instancia de sus superclases sean llamados, para ello debe contener el método CALL METHOD super constructor
En las superclases que no tengan un constructor de instancia explícitamente definido, el constructor de instancia implícito es llamado. De esa forma nos aseguramos de forma automática que el constructor de la superclase inmediata es llamado.
CONSTRUCTOR DE CALSE
Es llamado por el sistema cuando la clase es accedida por primera vez por el flujo del programa pero antes que las siguientes acciones sean ejecutadas por primera vez
· Crear una instancia de la clase con la sentencia CREATE OBJECT
· Acceder a un atributo estático de la clase
· Llamar a un método estático de la clase
· Registrar un método manejador de eventos para un evento de la clase.
A tener en cuanta:
· Solo puede haber un constructor estático por clase
· El constructor estático debe ser definido en la sección pública
· El constructor estático no puede tener parámetros IMPORTING ni EXCEPCIONES.
· Un constructor estático no pude ser llamado en forma explicita
Ejemplo de definición y utilización:
CALSS vehiculo DEFINITION.
…PUIBLIC SECTION.
……CLASS-METHODS class_constructor.
…PRIVATE SECTION.
…CLASS-DATA: n_o_vehiculos TYPE i.
ENDCLASS.
CLASS vehiculo IMPLEMENTATION.
…METHOD class_constructor.
……CLEAR n_o_vehiculos.
…ENDMETHOD.
ENDCLASS.
Podemos crear el constructor de clase a través de la SE24 dentro de la definición de la clase global:
· SE 24
· Escribimos un nombre de clase en el tipo objeto
· Pulsamos crear
· En la barra de herramienta de pantalla veremos el botón CONSTRUCTOR CLASE en el extremo superior de la pantalla
· Si lo pulsamos,
· Se crea el método estático de visibilidad pública CLASS CONSTRUCTOR
· Si hacemos doble clic en el nombre del método podemos agregar el código ABAP que deseemos dentro del mismo..
 
 
 
Sobre el autor
Publicación académica de Josep Antoni Lopez Moyano, en su ámbito de estudios para el Máster ABAP POO.
Josep Antoni Lopez Moyano
Profesión: It Manager - España - Legajo: QP26P
✒️Autor de: 375 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor en SAP HCM Nivel Inicial
- Carrera Consultor Basis NetWeaver Nivel Avanzado
- Carrera Consultor Basis NetWeaver Nivel Inicial
- Máster Funcional ABAP
- Máster ABAP Orientado a Objetos
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial