Cómo copiar datos de una tabla interna a otra

Copiar datos entre tablas internas es una operación muy común. Según lo que necesites, puedes:

  • Copiar todas las filas.
  • Copiar solo algunas columnas.
  • Renombrar columnas en la copia.
  • Ignorar columnas que no coinciden.

Copia total (misma estructura)

Si ambas tablas tienen exactamente los mismos campos, usa la asignación directa:

gt_copy = gt_original.

Copiar con diferentes columnas (CORRESPONDING)

Cuando las estructuras de las tablas no son idénticas, puedes usar CORRESPONDING para copiar solo los campos que coinciden por nombre.

  • Se copian los campos con el mismo nombre (y tipo compatible).
  • Los campos que no existen en el destino se ignoran.
  • Los campos destino sin correspondencia quedan con su valor inicial.
gt_tab2 = CORRESPONDING #( gt_tab1 ).

Mapear columnas con nombres diferentes

Si el campo origen se llama BUKRS (tab1) y el destino COMPANY (tab3), usa MAPPING:

gt_tab3 = CORRESPONDING #( gt_tab1 MAPPING company = bukrs).

Puedes añadir varios mapeos separados por espacio:

gt_tab3 = CORRESPONDING #( gt_tab1 MAPPING company  = bukrs
currency = waers ).

Excluir ciertos campos de la copia

Para copiar todos los campos excepto algunos, usa EXCEPT:

gt_tab2 = CORRESPONDING #( gt_tab1 EXCEPT bsart ).

Copia clásica (MOVE-CORRESPONDING)

Antes de ABAP 7.40, la forma estándar era MOVE-CORRESPONDING:

  • Copia campos con el mismo nombre (como CORRESPONDING #( ) sin mapeo).
  • Sigue siendo válida, pero la sintaxis moderna es más compacta y legible.
MOVE-CORRESPONDING gt_param TO gt_param_changes.

Copiar datos entre tablas internas es muy sencillo en ABAP, pero la técnica adecuada depende de cómo sean las estructuras