ARTICLE
Compatible Data Types
The compatibility of two data types (except reference types) is based on
the technical type attributes of the data types. It forms the basis for
type checking during assignments to
field symbols or when assigning
actual parameters to
formal parameters .
In addition, the compatibility determines whether with
value assignments and
comparisons between data objects except
reference variables a conversion has to be
performed or not.
In the case of reference types with data objects (reference variables)
that have a dynamic type besides the
static type , compatibility, which is
based entirely on technical type attributes, is not sufficient.
Non-Generic Data Types (Except Reference Types)
Two non-generic data types except
reference types and types that contain reference types as components
are compatible if all their technical type attributes match.
For elementary data types the technical type attributes are:
the predefined ABAP type
the length (for types c , n , p , x )
the number of decimal places (for
type p )
With compatible elementary data types, all these attributes match.
For structured types the technical type attribute is:
the component structure
The structure of structured types does not only refer to the sequence of
elementary components in memory, but also to the combination of
components to substructures and whether a substructure is a
boxed component . The names of
the components and of the semantic attributes defined in ABAP
Dictionary, such as conversion
routines or documentation, however, are not important. With
compatible structures, all components are compatible in pairs. This
applies recursively down to the level of elementary data types.
If two structures are both constructed identically but different
substructures are declared as boxed component s, then the
structures are not compatible.
For table types , the technical type attributes are:
the row type
the table category
the table key
With compatible internal tables, the row types are compatible and table
category and table key match. Other attributes, such as the initial
memory requirement, are not important.
Note
The types listed here are not compatible with one another - for example,
an elementary data type is never compatible with a structure, even if
the structure has only one component.
Generic Data Types
A non-generic data type except a reference type is compatible with a
generic data type if its technical
attributes are included into the generic data type.
Reference Types
A reference type is the static type of reference variables and
determines to which objects they can point. At runtime, reference var
iables also have a dynamic type determined by the type of the object,
which a reference variable points to. The dynamic type may be more
specialized than the static type. For this reason, the rules for typing
checks, assignments and comparisons cannot be covered by the idea of a
compatibility that is based entirely on the technical attributes of the
static type. Instead, the following three issues show how reference
types can be used together:
When checking typings, a reference variable can
be passed to a formal parameter typed as a reference variable, provided
that the type of the formal parameter is more general or equal to the
type of the formal parameter ( Up Cast )
and the formal parameter cannot be changed within the procedure.
be assigned to a field symbol typed as a reference variable, provided
that the reference types are identical.
Assignments between reference variables can be carried out by using an
up cast or a
down cast .
Data reference variables can be compared to all data reference variables
and object reference variables can be compared to all object reference
variables.
As a rule, data reference variables can only be used with data reference
variables and object reference variables only with object reference
variables. Reference variables are
never converted. They are either passed without conversion or assigned
to each other or compared to each other or not.
Notes
These rules for the usability of reference variables for assignments is
one-way. The type of a target reference variable, to which a source
reference variable can be assigned, does not itself have to be
assignable to the source reference variable. In contrast, the usability
of reference variables in the case of comparisons is not a one-way
relationship.
If a reference variable is a component of a structure, the usability of
the structure is determined accordingly. In particular, the usability of
this structure type with regard to assignments is also a one-way
relationship.
Documentation extract taken from SAP system, � Copyright SAP AG. All rights reserved