TYPES - REF TO
Short Reference
ABAP Syntax_3 TYPES dtype { {TYPE REF TO type}
| {LIKE REF TO dobj} }.
What does it do? The addition REF TO specifies a data type for a
reference variable. The entry behind REF TO specifies the static
type of the reference variable. The static type restricts the object
quantity to which a reference variable can refer. The dynamic type of a
reference variable is the data type and the object class to which it
refers. The static type is always more general or the same as the
dynamic type (see also assignment rules
for reference variables ).
Apart from data and object ,
generic data types can be specified
after TYPE REF TO .
Types for Data Reference Variables
If, for type , you have specified the predefined generic data
type data , the system creates
a data type for a data reference variable from the static type
data
. Such reference variables can refer to any data objects.
If type is specified as any non-generic data type (meaning a
non-generic data type from ABAP Dictionary or from the public visibility
section of a global class), as a non-generic local program type already
defined using TYPES , or as a non-generic
predefined ABAP type , a data type is
created for a data reference variable with an appropriate static type.
Such reference variables can refer to all data objects of the same type.
The same applies to dobj as to
TYPES ... LIKE . A data type is created for a data reference
variable and the static type of this variable is inherited from the data
type of the specified data object. Such reference variables can refer to
all data objects of the same type.
A data reference variable can be deferenced in different ways,
depending on its static type:
A data reference variable typed generically with TYPE REF TO data
can be dereferenced only in the
ASSIGN statement with
the dereferencing operator
- * .
A data reference variable typed completely with TYPE REF TO
complete_type or LIKE REF TO dobj can be dereferenced in all
matching operand positions with the dereferencing operator - * .
If the static data type is structured, the
object component selector
enables access to the components of the structure with dref- comp
.
Types for Data Reference Variables
If, for type , you have specified the predefined generic data
type data , the system creates
a data type for a data reference variable from the static type data
. Such reference variables can refer to instances of any class.
If, for type , you have specified a global or local class, the
system creates a data type for a class reference variable whose static
type is the specified class. Such reference variables can refer to all
instances of the class and its subclasses. You can access all components
of an object with a class reference variable. If the static type is the
super class of the dynamic type, then the components that can be
statically called are a subset of the components of the dynamic type.
You can call all attributes and methods of a dynamic type using a class
reference variable and the dynamic object attribute call (see
ASSIGN ) and the dynamic method call (see
CALL METHOD ).
If, for type , you have specified a global or local interface,
the system creates a date type for an interface reference variable whose
static type is the specified interface. Such reference variables can
refer to objects of all classes that implement the interface. When calli
ng components of objects with interface references, the name of the
static type is always implicitly placed before the component. With an
interface reference variable, you can only access the interface
components of an object that are known in the static type. This applies
to both dynamic and static access.
Latest notes: You can use the TYPE addition to define data types
for data and object reference variables. You can only define data types
for data reference variables with the LIKE addition.
The predefined gerenric data type any - as is the case with all
other generic types apart from
data - can only be specified after TYPE but not after REF
TO .
Example ABAP Coding This example shows how data types are defined for an
interface reference variable and for a class reference variable as well
as a data reference to an interface reference variable.
INTERFACE i1.
...
ENDINTERFACE.
CLASS c1 DEFINITION.
PUBLIC SECTION.
INTERFACES i1.
ENDCLASS.
TYPES: iref TYPE REF TO i1,
cref TYPE REF TO c1,
dref TYPE REF TO iref.
Documentation extract taken from SAP system, � Copyright SAP AG. All rights reserved