Skip to content

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 as well as the static type, then compatibility, which is based entirely on technical type attributes, is not sufficient.

Other versions: 7.31 | 7.40 | 7.54

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.

  • the length (for types c, n, p, x)
With compatible elementary data types, all these attributes match.
  • 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 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.
  • For mesh types, the technical type attributes are:
  • node structure including node names
  • associations (defined by ON conditions) of every component, including names and used table key


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:

  • 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.