ABAP Keyword Documentation → ABAP - Reference → Processing Internal Data → Assignments → Assigning Components → CORRESPONDING - Component Operator
CORRESPONDING - Components of an Argument
Other versions:
7.31 | 7.40 | 7.54
Syntax
... { CORRESPONDING dtype|#( [DEEP] [BASE ( base )] struct|itab ) }
| { CORRESPONDING dtype|#( [BASE ( base )] struct|itab
[mapping] ) } ...
Addition
Effect
This expression constructs a result with the target type specified using dtype
or #
from the components of a parameter struct
or itab
struct
and itab
are
general expression positions.
- If the target type is a structured type, a structure
struct
must be used as a parameter. The expression creates a structure of the target type. The target structure is either initial or is assigned the value ofbase
after the optional addition BASE as a start value. The target structure is then by default assigned the identically named components ofstruct
in accordance with the rules ofMOVE-CORRESPONDING
for structures.
- If the target type is a table type, an internal table
itab
must be used as a parameter. The expression creates an internal table of the target type. The target table is either initial or is assigned the value ofbase
after the optional addition BASE as a start value. The target table is then by default assigned the identically named columns ofitab
in accordance with the rules ofMOVE-CORRESPONDING
for internal tables.
If the addition DEEP
is specified, the assignment is made in the same way
as with the addition EXPANDING
NESTED TABLES of the statement MOVE-CORRESPONDING
. A mapping rule
mapping
can
be used to override the matching name assignment rule of MOVE-CORRESPONDING
.
If a mapping rule is specified, the addition DEEP
is set implicitly. It is not allowed to be set explicitly.
Notes
- An assignment of structures
struct2 = CORRESPONDING #( struct1 ).
BASE
is not the same as an assignment
MOVE-CORRESPONDING struct1 TO struct2.
MOVE-CORRESPONDING
, all not identically named components in struct2
keep their value. If the result of the constructor expression is assigned, however, they are assigned
the value from there. This value is initial for ignored components. This behavior can be overridden using the addition BASE
.
- In the case of an assignment of an argument to the target type and its assignment to a data object
dobj = CORRESPONDING type( ... ).
Examples
See
Addition
... BASE ( base ) ...
Effect
The addition BASE
can be used to specify a start value base
for the new structure or internal table. base
is a
functional operand position in which a database convertible to the target type can be specified.
If the addition BASE
is specified, the value of base
is assigned to the target structure or target table in accordance with the general
assignment rules before the remainder of the expression is evaluated.
Notes
- Unlike the operators
NEW
andVALUE
, parentheses must be placed aroundbase
inCORRESPONDING
.
- Unlike the operators
NEW
andVALUE
, the data type ofbase
is not used inCORRESPONDING
to determine a result type specified using#
.
- The addition
BASE
can be used with the component operator to replace the statementMOVE-CORRESPONDING
as follows:
- An assignment of structures
struct2 = CORRESPONDING #( BASE ( struct2 ) struct1 ).
is the same as an assignment
MOVE-CORRESPONDING struct1 TO struct2.
- An assignment of internal tables
itab2 = CORRESPONDING #( BASE ( itab2 ) itab1 ).
is the same as an assignment
MOVE-CORRESPONDING itab1 TO itab2 KEEPING TARGET LINES.