ABAP Keyword Documentation → ABAP - Reference → Creating Objects and Values
CREATE OBJECT
Other versions: 7.31 | 7.40 | 7.54
Syntax Forms
Defining a Class Implicitly
1. CREATE OBJECT oref
[area_handle] [parameter_list].
Defining a Class Explicitly
2. CREATE OBJECT oref
[area_handle]
TYPE { class [parameter_list] }
| { (name) [parameter_list|
parameter_tables] }.
Effect
The statement CREATE OBJECT
creates an instance of a class or object and
assigns the object reference to the oref
reference variables. The instance constructor of the class is called directly after the object is created.
By default, the object is created in the internal session (heap) of the current program and remains there for as long as it is required. If no heap references point to the object, which means that
- no object reference points to the object,
-
no data reference can no field symbol points to an instance attribute or to a part of an instance attribute,
and if no method of the object is registered as an event handler, it is deleted by
Garbage Collector.
The addition area_handle
can be used to create the object as a
shared object.
The reference variable oref
must be declared as an object reference variable.
Instance components of an object created using CREATE OBJECT
can only be accessed using object reference variables (see
Data Objects in Operand Positions).
The addition TYPE
can be used to specify the class of the created object.
The static type of the object reference variables must be more general than or identical to the class of the created object (in accordance with the rules for
Assignments Between Object Reference Variables).
In the case of the additions parameter_list
and parameter_tables
,
the non-optional input parameters must be filled of the first explicitly implemented instance constructor
that is located in the path of the inheritance tree from the instantiated class to the root class
object. These additions can also be used to assign return values to the non-class-based exceptions of the instance constructor.
If handleable exception is raised in the runtime environment when the object is created, the object
is not created and the object reference variable oref
is initialized. If
a handleable exception is raised when the object is created in the instance constructor of the class, the object is deleted and the object reference variable oref
is initialized.
Return Value
Notes
-
Instances of a class can be created only where permitted by the addition
CREATE
of the statementCLASS DEFINITION
. -
If the reference variable
oref
specified after CREATE OBJECT is simultaneously passed to the instance constructor, then when this variable is executed, it points to the new object. To pass a reference to an existing object to the instance constructor, a different reference variable needs to be used. -
The statement
CREATE OBJECT
creates a heap reference. All references that point to the object or its parts are also heap references and keep the object alive. The same applies to field symbols that point to instance attributes or to their parts. -
When a class is used, the instance
operator
NEW
acts like the statementCREATE OBJECT oref TYPE class
and can be used in general expression positions. -
The return code
sy-subrc
is set to 0 if the statement is successful because the instance constructor is called.sy-subrc
is set each time a method is called.
Exceptions
Catchable Exceptions
CX_SY_CREATE_OBJECT_ERROR
-
Cause: An attempt was made to instantiate an abstract class.
Runtime Error:CREATE_OBJECT_CLASS_ABSTRACT
-
Cause: The class specified in the addition
TYPE
does not exist.
Runtime Error:CREATE_OBJECT_CLASS_NOT_FOUND
-
Cause: The class specified dynamically in
TYPE
does not match the type of the reference variable.
Runtime Error:MOVE_OREF_NOT_CONVERTIBLE
-
Cause: An attempt was made to instantiate a private class externally.
Runtime Error:CREATE_OBJECT_CREATE_PRIVATE
-
Cause: An attempt was made to instantiate a protected class externally.
Runtime Error:CREATE_OBJECT_CREATE_PROTECTED
Non-Catchable Exceptions
-
Cause: A reference must be specified as the target variable.
Runtime Error:CREATE_OBJECT_NO_REFTYPE
: