✒️ABAP El tratamiento de los Objetos
ABAP El tratamiento de los Objetos
El ejercicio de práctica solo llega hasta la definición de datos pero le he añadido funcionalidad al programa para tener claro cómo hay que crear un objeto de clase avion y utilizar sus datos (propiedades) y métodos. También creo dos instancias a la clase, una para el avion1 y otra para el avion2.
También modifico los datos (propiedades) en tiempo de ejecución y llamo a los métodos sin CALL METHOD, sino de la manera que se hace en la mayoría de los lenguajes. Verlo al final. La clase SALV_GRID funciona de esta manera.
*&---------------------------------------------------------------------*
*& Report ZPRUEBA_OBJETOS_HF78E
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zprueba_objetos_hf78e.
TYPE-POOLS icon. " Debe ir al principio
*----------------------------------------------------------------------*
* CLASS avion DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS avion DEFINITION.
PUBLIC SECTION.
METHODS: definir_atributos IMPORTING
im_nombre TYPE string
im_tipo TYPE saplane-planetype,
mostrar_atributos.
CLASS-METHODS: mostrar_numero_de_aviones.
PRIVATE SECTION.
DATA: nombre TYPE string,
tipo TYPE saplane-planetype.
CLASS-DATA: numero_de_aviones TYPE i.
ENDCLASS. "AVION DEFINITION
*----------------------------------------------------------------------*
* CLASS AVION IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS avion IMPLEMENTATION.
METHOD definir_atributos. " METHOD
nombre = im_nombre.
tipo = im_tipo.
numero_de_aviones = numero_de_aviones + 1.
ENDMETHOD. "avion
METHOD mostrar_atributos. " METHOD
WRITE: / icon_ws_plane AS ICON,
/ 'Nombre del avión:', nombre,
/ 'Tipo de avión :', tipo.
SKIP.
ENDMETHOD. "avion
METHOD mostrar_numero_de_aviones. " CLASS-METHOD
WRITE:/ 'Número total de aviones:', numero_de_aviones LEFT-JUSTIFIED.
SKIP.
ENDMETHOD. "avion
ENDCLASS. "AVION IMPLEMENTATION
DATA: o_avion1 TYPE REF TO avion,
o_avion2 TYPE REF TO avion.
*&---------------------------------------------------------------------*
START-OF-SELECTION.
*&---------------------------------------------------------------------*
CREATE OBJECT o_avion1.
CALL METHOD o_avion1->definir_atributos
EXPORTING
im_nombre = 'BOEING'
im_tipo = 'PASAJEROS'.
CALL METHOD o_avion1->mostrar_atributos.
CALL METHOD o_avion1->mostrar_numero_de_aviones.
CREATE OBJECT o_avion2.
CALL METHOD o_avion2->definir_atributos
EXPORTING
im_nombre = 'ANTONOV'
im_tipo = 'CARGUERO'.
CALL METHOD o_avion2->mostrar_atributos.
CALL METHOD o_avion2->mostrar_numero_de_aviones.
write:/ 'Cambiando la propiedad NOMBRE del avión 1 de BOEING a TUPOLEV sin llamar al método'.
* Cambiando propiedades en tiempo de ejecución
WRITE:/ 'Nombre anterior:', o_avion1->nombre.
o_avion1->nombre = 'TUPOLEV'.
* ... y llamando a un procedimiento como se utiliza normalmente en POO.
* La clase SALV_GRID trabaja de esta manera
o_avion1->mostrar_atributos( ). " Importante el espacio entre los paréntesis (si no, error)
La salida por pantalla ha de ser esta:
Espero que este aporte te sea de utilidad.
Fernando Morales
Las Palmas de Gran Canaria
 
 
 
Agradecimiento:
Ha agradecido este aporte: Pedro Salazar
#1 / 30 de Nov de 2022 / Pedro Salazar: |
Sobre el autor
Publicación académica de Fernando Morales Del Rosario, en su ámbito de estudios para la Carrera Consultor ABAP.
Fernando Morales Del Rosario
Profesión: Analista Programador - España - Legajo: HF78E
✒️Autor de: 17 Publicaciones Académicas
🎓Cursando Actualmente: Master ABAP for HANA
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Mi objetivo es poner en práctica lo aprendido y alcanzar un buen nivel como programador abap.
Certificación Académica de Fernando Morales