✒️ABAP El tratamiento de los Objetos
ABAP El tratamiento de los Objetos
TRATAMIENTO DE OBJETOS
UTILIZACION DE OBJETOS
· Los objetos son instancias de las clases.
· Cada objeto tiene una identidad propia y tiene sus propios atributos.
· Todos los objetos transitorios residen en el contexto de una sesión interna (área de memoria de un programa ABAP).
· Una clase puede tener un número indefinido de instancias.
· Un objeto existe mientras se esté usando en el programa. Existe siempre que al menos una referencia apunte hacia él, o al menos un método del objeto está registrada como método manejador de eventos.
REFERENCIAS A OBJETOS
Son punteros a los objetos ABAP.
Se usan para acceder a un objeto desde un programa ABAP.
En ABAP los objetos están siempre contenidos en variables referenciadas.
· Las variables referenciadas o bien contienen el valor INITIAL o bien contienen la referencia a un objeto ya existente.
· Una variable que apunta a un objeto es la que conoce la identidad del objeto.
· Los usuarios no pueden acceder a la identidad el objeto directamente.
· Las variables referenciadas en ABAP son tratadas como cualquier otro objeto de datos elemental, puede contener una tabla interna o una estructura.
· ABAP contiene un tipoi de datos predefinido para las referencias.
· El tipo de datos completo no está definido hasta la declaración en el programa ABPA
· El tipo de datos de la variable referenciada determina como el programa actúa con su calor, o sea, con la referencia al objeto.
Hay dos tipos principales de referencias
· Referencia a interfaces (se estudia más adelante)
· Referencias a clases
REFERENCIAS A CLASES
Mediante las sentencia TYPE REF TO <nombreclase>.
Ejemplo
DATA: v_alv TYPE REF TO cl_gui_alv_grid.
Esta adición se usa en las sentencias TYPES o DATA
Una variable referenciada de este tipo se llama VARIABLE REFERENCIADA A CLASE o REFERENCIA A CLASE.
Una referencia a clase permite al usuario crear una instancia de la clase y acceder a un componente visible de la siguiente manera:
cref->comp
CREACION DE OBJETOS
Antes de crear un objeto de una clase es necesario declarar una variable referenciada con la referencia a la clase
Una vez que se ha declarado la referencia a la clase se puede crear el objeto usando la sentencia CREATE OBJET.
Esta sentencia crea una instancia de la clase y la variable referenciada contiene la referencia al objeto.
EJEMPLO:
CLASS counter DEFINITION.
…PUBLIC SECITION.
……METHOS: set IMPORTING value(set_value) TYPE i, increment,
……………….get EXPORTING value(get_value) TYPE i.
…PRIVATE SECTION.
……DATA count TYPE i.
ENDCLASS.
CLASS counter IMPLEMENTATION.
…METHOD set.
……count = set value.
…ENDMETHOD.
…METHOD get.
……get_value = count.
…ENDMETHOD.
ENDCLASS.
DATA number TYPE i VALUE 5.
DATA cnt TYPE REF TO counter.
START-OF-SELECTION
…CREATE OBJETC cnt.
¿Cómo ACCEDER A LOS COMPONENTES DE UN OBJETO?
Los programas solo pueden acceder a los componentes de las instancias usando las referencias de las variables referenciadas.
Para acceder al atributo: ref->attr.
Para acceder al método: CALL METHOD ref->meth.
Para los componentes estáticos o independientes de instancia, solo dependientes de clase, se puede usar tanto el nombre de la clase como las variables referenciadas.
También es posible acceder a los componentes estáticos de una clase antes de que un objeto de la clase haya sido creado.
Siendo class la clase:
Para acceder al atributo estático: class->attr.
Para llamar al método estático: CALL METHOD class->meth.
Dentro de una clase se puede acceder también a los componentes individuales mediante la referencia a si mismo ME:
Para acceder al atributo en la propia clase: me->attr.
Para llamar al método en la propia clase: CALL METHOD me->meth.
Los CONSTRUCTORES:
Son un tipo especial de métodos, no se pueden llamar por CALL METHOD
Son llamados automáticamente por el sistema. Se usan para fijar el estado inicial de un nuevo objeto o clase
Hay de dos tipos los dependientes de instancia y los independientes de instancia o estáticos.
Tiene el nombre predefinido, deben ser declarados explícitamente en la clase.
Son necesarios si necesitamos asignar recursos, iniciar atributos que no se puedan iniciar con VALUE o enviar mensaje al crear un nuevo objeto.
No existe DESTRUCTOR en SAP.
ASIGNACION DE REFERENCIA
Se pueden asignar referencias a distintas variables referenciadas usando la sentencia MOVE.
De esta manera se puede tener las referencias en varias variables referenciadas apuntando al mismo objeto.
Cuando se asigna una referencia a una variable referenciada distinta, sus tipos deben ser compatibles.
Cuando se usa MOVE o = el sistema debe ser capaz de reconocer en el chequeo de la sintaxis si la asignación va a ser posible.
Esto mismo se aplica cuando se pasan variables referenciadas como parámetros a procedimientos.
Si escribimos la sentencia cref1 = cref2:
· Las dos referencias tienen que tener el mismo tipo.
· Tiene que referirse a la misma clase o bien la clase de cref1 tiene que ser la clase predefinida como vacía, o sea OBJETC.
· La clase OBJET no tiene componentes.
· Tiene la misma función que para las variables referenciadas que el tipo de datos ANY para las variables normales.
· Las variables referenciadas de tipo OBJETC pueden funcona como contenedoras para pasar referencias.
· Nunca pueden ser usadas para acceder a objetos.
MI PRIMER PROGRAMA DE OBJETOS
Programa para simular un contador.
Se definen la clase CONTADOR con los métodos públicos y el atributo privado COUNT.
Creamos la implementación de la clase.
Declaramos las variables NUMBER de tipo i e inicializamos con el valor 5
Declaramos la variable CNT que será una referencia de la clase contador.
Luego creamos una instancia de la clase contador
Ejecutamos el método set
Finalmente ejecutamos dentro de una iteración el método incrementar contador.
Imprimimos en pantalla.
 
 
 
Sobre el autor
Publicación académica de Josep Antoni Lopez Moyano, en su ámbito de estudios para la Carrera Consultor ABAP.
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