es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿MOVE-CORRESPONDING se utiliza para tablas internas?

Quiero mover campos de itab1 a itab2 basándome en sus nombres de campo. He intentado lo siguiente:


CLEAR itab2.
MOVE-CORRESPONDING itab1 TO itab2.

Esto funciona, pero solo si los campos son nombrados de forma igual.

Ahora quiero hacer algo como esto:


CLEAR itab2.
MOVE-CORRESPONDING itab1-campo1 TO itab2-campo2.
MOVE-CORRESPONDING itab1-campo3 TO itab2-campo4.

y así sucesivamente.. Pero cada vez que intento hacer eso, obtengo el siguiente error: "itab1-campo1" no es una estructura o una tabla interna.

También he intentado escribirlo de esta manera MOVE-CORRESPONDING -campo1 pero esto tampoco funciona.

¿Cómo puedo lograr lo que quiero? Gracias por intentar ayudarme.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para lograr la funcionalidad deseada, puedes utilizar los símbolos de campo para acceder dinámicamente a los campos de las tablas internas. Aquí tienes un ejemplo de cómo puedes mover campos de itab1 a itab2 basándote en sus nombres de campo:

    DATA: itab1 TYPE STANDARD TABLE OF any,
          itab2 TYPE STANDARD TABLE OF any.
    
    FIELD-SYMBOLS: <fs1> TYPE any,
                   <fs2> TYPE any.
    
    LOOP AT itab1 ASSIGNING <fs1>.
      LOOP AT itab2 ASSIGNING <fs2> WHERE name = <fs1>-name.
        IF sy-subrc = 0.
          <fs2>-value = <fs1>-value.
        ENDIF.
      ENDLOOP.
    ENDLOOP.
    

    En el código anterior, primero definimos dos tablas internas itab1 e itab2 de tipo any. Luego definimos dos símbolos de campo <fs1> y <fs2> del mismo tipo.

    A continuación, utilizamos un bucle anidado para recorrer cada registro de itab1 y buscar un registro coincidente en itab2 basado en el campo name. Una vez que encontramos un registro coincidente, asignamos el valor del campo de itab1 a itab2 utilizando <fs1>-value y <fs2>-value.

    Utilizando este enfoque, puedes mover campos de una tabla interna a otra, incluso si tienen nombres de campo diferentes.

Comments are closed.