ABAP Keyword Documentation → ABAP - Reference → Declarations → Declaration Statements → Classes and Interfaces
CLASS
Other versions: 7.31 | 7.40 | 7.54
Syntax Forms
Declaration Part of a Class
1. CLASS class DEFINITION
[class_options]. [PUBLIC SECTION.
[components]]
[PROTECTED SECTION. [components]]
[PRIVATE SECTION. [components]]
ENDCLASS.
Implementation Part of a Class
2. CLASS class IMPLEMENTATION. ...
METHOD ... ...
ENDMETHOD. ...
ENDCLASS.
Publication of Classes
3. CLASS class DEFINITION DEFERRED [PUBLIC].
Local Friends of Global Classes
4. CLASS class DEFINITION
LOCAL FRIENDS class1 class2 ...
intf1 intf2 ...
Effect
The statement CLASS defines a class class, publishes it, or specifies properties.
-
The complete definition of a class consists of a declaration part and an
implementation part, which are both introduced
by
CLASSand ended byENDCLASS. In the declaration part, the properties of the class are specified and its components are declared. In the implementation part, the methods of the class are implemented. -
The variants of
CLASSwithoutENDCLASSare used for the publication of classes in a program and the declaration of local friends of a global class.
The statements CLASS and associated statements ENDCLASS
can be specified only in the global context of a program. CLASS and
ENDCLASS cannot be specified within classes, procedures, and processing blocks implemented internally
as a procedure (event blocks for GET
and AT SELECTION-SCREEN).
This applies in particular to the variants of CLASS specified here, which is not closed using ENDCLASS.
Notes
-
The declaration part of a class, and the variants of
CLASSnot closed usingENDCLASSare handled like other declaration statements (DATA,TYPE, ...). In a processing block without a local context, they are handled like global program declarations and do not end the processing block. - Overall, the implementation part of a class functions like a separate processing block and closes other processing blocks.
-
The obsolete variant
CLASS ... DEFINITION LOADwas formerly used to load classes explicitly.