* Klassenobjekte sind nur statisch verfügbar (CLASS-DATA)
* von ihr kann nicht abgeleitet werden (FINAL)
* mit NEW können keine Objektreferenzen erzeugt werden (CREATE PRIVATE)
CLASS lcl_enum_colors DEFINITION FINAL CREATE PRIVATE.
PUBLIC SECTION.
* Konstanten vom Typ des Parameters
CLASS-DATA: co_red TYPE REF TO lcl_enum_colors READ-ONLY.
CLASS-DATA: co_green TYPE REF TO lcl_enum_colors READ-ONLY.
CLASS-DATA: co_blue TYPE REF TO lcl_enum_colors READ-ONLY.
* Klassenkonstruktor
CLASS-METHODS:
class_constructor.
ENDCLASS.
CLASS lcl_enum_colors IMPLEMENTATION.
* Vorbelegung der Konstanten
* wird immer beim allerersten Aufruf eines Klassenelementes (Funktion, Variable, Konstante ...) ausgeführt
METHOD class_constructor.
co_red = NEW #( ).
co_green = NEW #( ).
co_blue = NEW #( ).
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
* Variablen vom Typ REF TO lcl_enum_colors
DATA: lv_color_green TYPE REF TO lcl_enum_colors.
DATA: lv_color_red TYPE REF TO lcl_enum_colors.
DATA: lv_color_blue TYPE REF TO lcl_enum_colors.
* Variablen mit konstanten Werten vorbelegen
lv_color_green = lcl_enum_colors=>co_green.
lv_color_red = lcl_enum_colors=>co_red.
lv_color_blue = lcl_enum_colors=>co_blue.
* Werteausgabe
IF lv_color_green = lcl_enum_colors=>co_green.
WRITE: / 'Ok.'.
ELSE.
WRITE: / 'Not ok.'.
ENDIF.
IF lv_color_green = lcl_enum_colors=>co_red.
WRITE: / 'Ok.'.
ELSE.
WRITE: / 'Not ok.'.
ENDIF.
IF lcl_enum_colors=>co_red = lcl_enum_colors=>co_blue.
WRITE: / 'Ok.'.
ELSE.
WRITE: / 'Not ok.'.
ENDIF.