✒️ABAP POO El tratamiento de Objetos
ABAP POO El tratamiento de Objetos
U1-L9
Utilización de los componentes de un objeto
Solo se pueden acceder a los componentes de las instancias usando las referencias de las variables referenciadas.
r_vehiculo->color "Acceder atributo color
Llamar a método de instancia
CALL METHOD r_vehiculo->encendido().
r_vehiculo->encendido(). "versión reducida para llamar a método de instancia
Cuando se llama un método de instancia dentro de otro método de instancia se puede omitir la referencia del objeto.
DATA: r_vehiculo TYPE REF TO vehiculo,
marca TYPE string,
modelo TYPE strng.
START-OF-SELECTION.
CREATE OBJETCT r_vehiculo.
r_vehiculo->obtener_tipo( IMPORTING ex_marca = mara
ex_modelo = modelo ).
Para componente estáticos, se puede usar el nombre de la clase o la variable referenciada, también se puede acceder a los componentes estáticos antes de crear algun objeto de la clase.
vehiculo->color.
Para llamar a un método estático:
CALL METHOD vehiculo=>encendido().
vehiculo=>encendido()
Cuando se llama un método estático desde la clase, se puede omitir el nombre de la misma.
DATA: numero TYPE i.
...
vehiculo=>obtener_n_o_vehiculos( RECEIVING re_contador = numero ).
Métodos Funcionales
Aquellos que devuelven un valor en un parámetro RETURNING. El parámetro denbe ser pasado usando la adición VALUE.
result = ref->func_method_name( im_par_l = val_ex_1
...
im_par_n = val_ex_n ).
result = class_name=>func_method_name( im_par_l = val_ex_1
...
im_par_n = val_ex_n ).
Los métodos funcionales pueden ser llamados dentro de varias expresiones.
Expresiones logicas; IF, ELSEIF, WHILE, CHECK, WAIT.
Condiciones CASE: CASE, WHEN.
Expresiones Aritméticas: COMPUTE.
Fuentes de calores como copia local; MOVE.
Condiciones de búsqueda para tablas internas, asumiendo que el operando no es un componente de la fila: LOOP AT ... WHERE
CLASS vehiculo DEFINITION.
PUBLIC SECTION.
METHODS: obtener_consumo_promedio IMPORTING im_distancia TYPE i
im_combustible TYPE i
RETURNING VALUE(re_combustible) TYPE i.
ENDCLASS.
DATA: r_vehiculo1 TYPE REF TO vehiculo,
r_vehiculo2 TYPE REF TO vehiculo,
consumo_promedio_comb TYPE i.
...
consumo_promedio_comb = r_vehiculo1->obtener_consumo_promedio( im_distancia = 500
im_combustible = 50 )
r_vehiculo2->obtener_consumo_promedio( im_distancia = 600
im_combustible = 60 ).
Autoreferencia
Se puede acceder a componentes individuales de la misma clase; ME.
me->color.
CALL METHOD me->encendido()
CLASS vehiculo DEFINITION.
PUBLIC SECTION.
METHODS asignar_tipo IMPORTING im_marca TYPE stirng.
...
PRIVATE SECTION.
DATA: marca TYPE string.
ENDCLASS.
CLASS vehiculo IMPLEMENTATION.
METHOD asignar_tipo.
DATA: marca TYPE string.
me->marca = im_marca.
TRANSLATE me->marca TO UPPER CASE.
ENDMETHOD.
ENDCLASS.
Dentro de métodos de instancia no es necesario la autoreferencia ME, se puede usar para mejorar la legibilidad del código, es útil cuando se desea diferenciar los objetos de datos locales y los atributos de instancia que llevan el mismo nombre.
 
 
 
Sobre el autor
Publicación académica de Denisse Adriana Hernandez Trujillo, en su ámbito de estudios para el Máster ABAP POO.
Denisse Adriana Hernandez Trujillo
Mexico - Legajo: AH80E
✒️Autor de: 71 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Denisse Hernandez