![](/cvo_files/imgs_sap_abap/logos/logo_cvo_academy_it.png)
✒️ABAP El tratamiento de los Objetos
ABAP El tratamiento de los Objetos
![ABAP El tratamiento de los Objetos ABAP El tratamiento de los Objetos](https://www.cvosoft.com/cvo_files/imgs_sap_abap/og-images/458.jpg)
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