ABAP
ABAP-objecten
Zoeken…
Klasse verklaring
ABAP-klassen kunnen wereldwijd of lokaal worden verklaard. Een globale klasse kan door elk object binnen de ABAP-repository worden gebruikt. Een lokale klasse kan daarentegen alleen worden gebruikt binnen de scope die wordt aangegeven.
CLASS lcl_abap_class DEFINITION.
PUBLIC SECTION.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS lcl_abap_class IMPLEMENTATION.
ENDCLASS.
Constructor, methoden
Klasse implementatie:
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.
Voorbeeld van methodeaanroep:
DATA lo_abap_class TYPE REF TO lcl_abap_class.
CREATE OBJECT lo_abap_class. "Constructor call
lo_abap_class->method1( ).
Methode met parameters (importeren, wijzigen, exporteren)
Klasse implementatie:
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.
Voorbeeld van methodeaanroep:
method1 (
EXPORTING iv_string = lv_string
IMPORTING ev_string = lv_string2
CHANGING cv_string = lv_string3
).
Methode met terugkerende parameter
Klasse implementatie:
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.
Voorbeeld van methodeaanroep:
lv_string = method1( ).
Houd er rekening mee dat parameters die met RETURNING worden gedeclareerd, alleen door waarde worden doorgegeven.
Overerving - definitie
Informatie
Met Overerving kun je een nieuwe klasse afleiden uit een bestaande klasse. U doet dit met de toevoeging INHERITING FROM in de
KLASSE subklasse DEFINITIE DIE OVERKOMT UIT superklasse.
uitspraak. De nieuwe klasse subklasse neemt alle componenten van de bestaande klasse superklasse over. De nieuwe klasse wordt de subklasse genoemd van de klasse waaruit deze is afgeleid. De oorspronkelijke klasse wordt de superklasse van de nieuwe klasse genoemd. Een klasse kan meer dan één directe subklasse hebben, maar deze mag slechts één directe superklasse hebben.
Klasse implementatie
CLASS lcl_vehicle DEFINITION.
ENDCLASS.
CLASS lcl_vehicle IMPLEMENTATION.
ENDCLASS.
CLASS lcl_car DEFINITION INHERITING FROM lcl_vehicle.
ENDCLASS.
CLASS lcl_car IMPLEMENTATION.
ENDCLASS.
Overerving - Abstracte en definitieve methoden en klassen
Informatie
Met de ABSTRACTE en LAATSTE toevoegingen aan de METHODEN en KLASSE- instructies kunt u abstracte en definitieve methoden of klassen definiëren.
Een abstracte methode is gedefinieerd in een abstracte klasse en kan niet in die klasse worden geïmplementeerd. In plaats daarvan wordt het geïmplementeerd in een subklasse van de klasse. Abstracte klassen kunnen niet worden gestart.
Een definitieve methode kan niet opnieuw worden gedefinieerd in een subklasse. Laatste klassen kunnen geen subklassen hebben. Ze concluderen een erfenisboom.
Klasse implementatie:
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.
Voorbeeld van methodeaanroep:
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( ).