General properties of ABAP Classes / Interfaces
Every day you create or change ABAP class in class builder. When you activate your change, have you noticed a series of objects with several “=” in the middle part of each?
Technically speaking, an ABAP class consists of several parts. In order to figure them out, I just create a simple class with the following source code:
CLASS zcl_abap_class DEFINITION PUBLIC FINAL CREATE PUBLIC . PUBLIC SECTION. DATA public_attribure TYPE i . TYPES:BEGIN OF ty_global, name TYPE string, score TYPE i, END OF ty_global. METHODS public . protected section. data PROTECTED_ATTRIBUTE type I . methods PROTECTED . PRIVATE SECTION. DATA private_attribute TYPE i . METHODS private . ENDCLASS. CLASS ZCL_ABAP_CLASS IMPLEMENTATION. METHOD private. ENDMETHOD. method PROTECTED. endmethod. METHOD public. ENDMETHOD. ENDCLASS.
I have also generated a local test class for it via SE80. After activation, look into corresponding entry in TRDIR.
The object name under column NAME could be opened via SE38. Take CCAU for example:
So CCAU contains the source code of local test class implementation:
Here below is the list of each part and its meaning:
|Part Name||Part meaning|
|CCAU||contains the source code of local test class implementation|
|CCDEF||Class-Relevant Local Definitions, contains the definitions of local classes inside the public class|
|CCIMP||It contains the implementation for those local classes which definitions are stored in the Definitions-Include|
|CCMAC||contains the macros of the public class|
|CI||source code of private section|
|CO||source code of protected section|
|CU||source code of public section|
|CP||open it in SE38, it will automatically navigate to class builder|
|CT||open it in SE38, it will automatically navigate to class builder|
|CMXXX||source code of each method|
The constant of part name is defined in type group SEOP:
If you need to get the part name of a given class via ABAP code, you can use utility class CL_OO_CLASSNAME_SERVICE. There are corresponding getter method for each kind of part defined.
For example, if you need to get the part name of all methods of class CL_CRM_BOL_CORE, just set breakpoint in method CL_OO_CLASSNAME_SERVICE =>GET_ALL_METHOD_INCLUDES, and open the class CL_CRM_BOL_CORE in SE24, and click “Source Code-Based” button:
Here you can find the name class part for each method are populated with one incremental step in hexadecimal.