MOVE-CORRESPONDING

Basic form

MOVE-CORRESPONDING struc1 TO struc2.

Effect

struc1 and struc2 must be structures.
Searches for all names of subfields that occur both in struc1 and struc2. Generates for all relevant field pairs which correspond to the subfields ni, statements of the form

MOVE struc1-ni TO struc2-ni.

The other fields remain unchanged.

Notes

  1. If untyped field symbols or parameters are used for struc1 or struc2 in procedures, the corresponding type is determined at runtime. If struc1 or struc2 are no structures then, a runtime error occurs. If you use untyped operands, in particular, with large structures, the statement executes much more slowly than if you use structures that can be recognized statically.

  2. With deep structures, the complete (path) names of the corresponding field pairs must be textually identical.

  3. The command performs the assignments based on the name identity of the fields. To avoid unintended assignments, you should consider all fields of the source and the target structure. If the source or the target structure has been defined with reference to a type from the ABAP Dictionary (for example, a database table), new fields are subsequently added to that structure by enhancing the ABAPDictionary type. Besides the intended name identities, accidental identies may occur which may result in a wrong program logic.

Example

DATA: BEGIN OF INT_TABLE OCCURS 10,
        WORD(10),
        NUMBER TYPE I,
        INDEX  LIKE SY-INDEX,
      END   OF INT_TABLE,
      BEGIN OF RECORD,
        NAME(10) VALUE 'not WORD',
        NUMBER TYPE I,
        INDEX(20),
      END   OF RECORD.
...
MOVE-CORRESPONDING INT_TABLE TO RECORD.

This MOVE-CORRESPONDING statement is equivalent to both the following statements:

MOVE INT_TABLE-NUMBER TO RECORD-NUMBER.
MOVE INT_TABLE-INDEX  TO RECORD-INDEX.

Example

TYPES: BEGIN OF ROW1_3,
         CO1 TYPE I,
         CO2 TYPE I,
         CO3 TYPE I,
       END   OF ROW1_3.
TYPES: BEGIN OF ROW2_4,
         CO2 TYPE I,
         CO3 TYPE I,
         CO4 TYPE I,
       END   OF ROW2_4.
TYPES: BEGIN OF MATRIX1,
         R1 TYPE ROW1_3,
         R2 TYPE ROW1_3,
         R3 TYPE ROW1_3,
       END OF   MATRIX1.
TYPES: BEGIN OF MATRIX2,
         R2 TYPE ROW2_4,
         R3 TYPE ROW2_4,
         R4 TYPE ROW2_4,
       END OF   MATRIX2.
DATA: ROW TYPE ROW1_3,
      M1  TYPE MATRIX1,
      M2  TYPE MATRIX2.

ROW-CO1 = 1. ROW-CO2 = 2. ROW-CO3 = 3.
MOVE: ROW TO M1-R1, ROW TO M1-R2, ROW TO M1-R3.
MOVE-CORRESPONDING  M1 TO M2.

The last MOVE-CORRESPONDING statement is equivalent to the statements:

MOVE: M1-R2-CO2 TO M2-R2-CO2,
      M1-R2-CO3 TO M2-R2-CO3,
      M1-R3-CO2 TO M2-R3-CO2,
      M1-R3-CO3 TO M2-R3-CO3.

Non-Catchable Exceptions

Related

MOVE, ADD-CORRESPONDING, SUBTRACT-CORRESPONDING, MULTIPLY-CORRESPONDING, DIVIDE-CORRESPONDING

Additional help

Assigning Values Using MOVE