Buscar..
Declaración de clase
Las clases ABAP pueden ser declaradas global o localmente . Una clase global puede ser utilizada por cualquier objeto dentro del repositorio ABAP. Por el contrario, una clase local solo se puede usar dentro del alcance que se declara.
CLASS lcl_abap_class DEFINITION.
PUBLIC SECTION.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS lcl_abap_class IMPLEMENTATION.
ENDCLASS.
Constructor, metodos
Implementación de la clase:
CLASS lcl_abap_class DEFINITION.
PUBLIC SECTION.
METHODS: constructor,
method1.
PROTECTED SECTION.
PRIVATE SECTION.
METHODS: method2,
method3.
ENDCLASS.
CLASS lcl_abap_class IMPLEMENTATION.
METHOD constructor.
"Logic
ENDMETHOD.
METHOD method1.
"Logic
ENDMETHOD.
METHOD method2.
"Logic
method3( ).
ENDMETHOD.
METHOD method3.
"Logic
ENDMETHOD.
ENDCLASS.
Método de ejemplo de llamada:
DATA lo_abap_class TYPE REF TO lcl_abap_class.
CREATE OBJECT lo_abap_class. "Constructor call
lo_abap_class->method1( ).
Método con parámetros (Importando, Cambiando, Exportando)
Implementación de la clase:
CLASS lcl_abap_class DEFINITION.
PRIVATE SECTION.
METHODS method1 IMPORTING iv_string TYPE string
CHANGING cv_string TYPE string
EXPORTING ev_string TYPE string.
ENDCLASS.
CLASS lcl_abap_class IMPLEMENTATION.
METHOD method1.
cv_string = iv_string.
ev_string = 'example'.
ENDMETHOD.
ENDCLASS.
Método de ejemplo de llamada:
method1 (
EXPORTING iv_string = lv_string
IMPORTING ev_string = lv_string2
CHANGING cv_string = lv_string3
).
Método con parámetro de retorno
Implementación de la clase:
CLASS lcl_abap_class DEFINITION.
PRIVATE SECTION.
METHODS method1 RETURNING VALUE(rv_string) TYPE string.
ENDCLASS.
CLASS lcl_abap_class IMPLEMENTATION.
METHOD method1.
rv_string = 'returned value'.
ENDMETHOD.
ENDCLASS.
Método de ejemplo de llamada:
lv_string = method1( ).
Tenga en cuenta que los parámetros declarados con RETURNING se pasan solo por valor.
Herencia - definición
Información
La herencia le permite derivar una nueva clase de una clase existente. Haces esto usando la suma de HERENCIA DE
CLASE subclase DEFINICIÓN HERENCIA DE superclase.
declaración. La nueva subclase de clase hereda todos los componentes de la superclase de clase existente. La nueva clase se llama la subclase de la clase de la que se deriva. La clase original se llama la superclase de la nueva clase. Una clase puede tener más de una subclase directa, pero solo puede tener una superclase directa.
Implementación de clase
CLASS lcl_vehicle DEFINITION.
ENDCLASS.
CLASS lcl_vehicle IMPLEMENTATION.
ENDCLASS.
CLASS lcl_car DEFINITION INHERITING FROM lcl_vehicle.
ENDCLASS.
CLASS lcl_car IMPLEMENTATION.
ENDCLASS.
Herencia - Resumen y Métodos Finales y Clases
Información
Las adiciones ABSTRACT y FINAL a los métodos y las declaraciones de CLASS le permiten definir métodos o clases abstractos y finales.
Un método abstracto se define en una clase abstracta y no se puede implementar en esa clase. En su lugar, se implementa en una subclase de la clase. Las clases abstractas no pueden ser instanciadas.
Un método final no se puede redefinir en una subclase. Las clases finales no pueden tener subclases. Concluyen un árbol de herencia.
Implementación de la clase:
CLASS lcl_abstract DEFINITION ABSTRACT.
PUBLIC SECTION.
METHODS: abstract_method ABSTRACT,
final_method FINAL
normal_method.
ENDCLASS.
CLASS lcl_abstract IMPLEMENTATION.
METHOD final_method.
"This method can't be redefined in child class!
ENDMETHOD.
METHOD normal_method.
"Some logic
ENDMETHOD.
"We can't implement abstract_method here!
ENDCLASS.
CLASS lcl_abap_class DEFINITION INHERITING FROM lcl_abstract.
PUBLIC SECTION.
METHODS: abstract_method REDEFINITION,
abap_class_method.
ENDCLASS.
CLASS lcl_abap_class IMPLEMENTATION.
METHOD abstract_method.
"Abstract method implementation
ENDMETHOD.
METHOD abap_class_method.
"Logic
ENDMETHOD.
ENDCLASS.
Método de ejemplo de llamada:
DATA lo_class TYPE REF TO lcl_abap_class.
CREATE OBJECT lo_class.
lo_class->abstract_method( ).
lo_class->normal_method( ).
lo_class->abap_class_method( ).
lo_class->final_method( ).