CREATE OBJECT
Short Reference
ABAP Syntax:
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
] }.
What does it do? 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.
ABAP_SUBRC_GENERAL
If the statement CREATE OBJECT is executed successfully,
sy-subrc is set to 0. Values other than 0 can occur when specifying
EXCEPTIONS in parameter_spec when non-class-based
exceptions of the instance constructor are handled.
Latest notes: Instances of a class can be created only where permitted
by the addition CREATE of the statement CLASS
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 r
eference 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 statement CREATE 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
.
Runtime Exceptions
Catchable Exceptions
CX_SY_CREATE_OBJECT_ERROR
ABAP_TEXTID ABSTRCT_CLASS
Reason for error: An attempt was made to instantiate an abstract class.
Runtime error: CREATE_OBJECT_CLASS_ABSTRACT
Reason for error: The class specified in the addition TYPE does not
exist.
Runtime error: CREATE_OBJECT_CLASS_NOT_FOUND
Reason for error: The class specified dynamically in TYPE does not
match the type of the reference variable.
Runtime error: MOVE_OREF_NOT_CONVERTIBLE
Reason for error: An attempt was made to instantiate a private class
externally.
Runtime error: CREATE_OBJECT_CREATE_PRIVATE
Reason for error: An attempt was made to instantiate a protected class
externally.
Runtime error: CREATE_OBJECT_CREATE_PROTECTED
Non-catchable Exceptions
Reason for error: A reference must be specified as the target variable.
Runtime error: CREATE_OBJECT_NO_REFTYPE :
Documentation extract taken from SAP system, � Copyright SAP AG. All rights reserved