ABAP Keyword Documentation →  ABAP − Reference →  Declarations →  Declaration Statements →  Data Types and Data Objects →  Types and Objects - Overview → 

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.

With compatible elementary data types, all these attributes match.
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 components, then the structures are not compatible.
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 variables 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:

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