CLASS cl_one DEFINITION.
* Public-Deklarationen, global inner- und außerhalb des Objektes sichtbar
PUBLIC SECTION.
DATA: pu_val3 TYPE i. " dyn. Variable, nur zur Obj-Laufzeit verfügbar
CLASS-DATA: txt TYPE string. " statische Public-Variable
CLASS-DATA: int TYPE i. " statische Public-Variable
* statische Methode, hat keinen Zugriff auf pu_val3
CLASS-METHODS: function_one
IMPORTING
i_txt TYPE string
RETURNING VALUE(ret_val) TYPE string. " wenn RETURNING VALUE, dann kein EXPORTING oder CHANGING möglich
* statische Methode, hat keinen Zugriff auf pu_val3
CLASS-METHODS: function_two
IMPORTING
i_txt TYPE string
i_val TYPE i
RETURNING VALUE(ret_val) TYPE string. " wenn RETURNING VALUE, dann kein EXPORTING oder CHANGING möglich
* dynamische Methode, hat Zugriff auf pu_val3
METHODS: function_three
IMPORTING
i_val1 TYPE i DEFAULT 10 " Default-Wert, falls Parameter nicht gesetzt
i_val2 TYPE i DEFAULT 20 " Default-Wert, falls Parameter nicht gesetzt
RETURNING VALUE(ret_val) TYPE i. " wenn RETURNING VALUE, dann kein EXPORTING oder CHANGING möglich
* dynamische Methode, einfaches Exceptionhandling
METHODS: function_four
IMPORTING
i_val1 TYPE i
RETURNING VALUE(ret_val) TYPE i
RAISING cx_sy_arithmetic_error.
METHODS: constructor.
* Private-Deklarationen, nur innerhalb der Klasse sichtbar
PRIVATE SECTION.
DATA: pr_val3 TYPE i.
ENDCLASS.
CLASS cl_one IMPLEMENTATION.
* Constructor der Klasse
METHOD constructor.
me->pr_val3 = 100.
ENDMETHOD.
* Funktion mit einem Übergabeparameter
method function_one.
DATA: s TYPE string VALUE 'Return: '.
ret_val = |{ s } { i_txt }|.
ENDMETHOD.
* Funktion mit zwei Übergabeparametern
METHOD function_two.
ret_val = |{ i_txt } { i_val }|.
ENDMETHOD.
* Funktion mit zwei Übergabeparametern und DEFAULT-Werten
* Verwendung des me-> Operators für den Zugriff auf Attribute der Klasse
METHOD function_three.
ret_val = ( me->pu_val3 + me->pr_val3 ) * ( i_val1 + i_val2 ).
ENDMETHOD.
* Funktion mit einem Übergabeparameter
* löst bei DIV0 -> cx_sy_arithmetic_error aus
METHOD function_four.
ret_val = 100 / i_val1.
ENDMETHOD.
ENDCLASS.
INITIALIZATION.
cl_one=>int = 1.
cl_one=>txt = |Test.|.
START-OF-SELECTION.
* statische Objektaufrufe
WRITE: / cl_one=>int.
WRITE: / cl_one=>txt.
WRITE: / cl_one=>function_one( |Input.| ).
WRITE: / cl_one=>function_two( i_txt = |Input2:|
i_val = 1 ).
* dynamische Objektaufrufe
DATA(o_cl_one) = NEW cl_one( ).
o_cl_one->pu_val3 = 10.
WRITE: / o_cl_one->function_three( ).
WRITE: / o_cl_one->function_three( i_val1 = 1
i_val2 = 2 ).
* Exception abfangen
TRY.
WRITE: / o_cl_one->function_four( 0 ). " Division durch 0 auslösen
CATCH cx_root INTO DATA(e_text).
WRITE: / e_text->get_text( ).
ENDTRY.