Copiar datos entre Tablas Transparentes

Buenas noches amigos, para comenzar me disculpo por la ausencia, la red aquí en Venezuela ha estado bastante inestable. Ahora bien me gustaría comentarles mi duda para ver si alguno me da una idea de lo que debo hacer.

Practico actualmente con un minisap virtualizado que encontré en internet, alguien de mi trabajo me sugirió un ejercicio que comento por orden.

1.- Crear una tabla transparente con la misma estructura que la HRP1000 (esa parte pude hacerla).
2.- Me piden copiar los datos de la HRP1000 a mi tabla Z_HRP1000 (eso también lo pude hacer por medio de tablas internas).

Mi actual problema que no he podido solucionar.

3.- Luego como pude copiar eso, el amigo me pidió otro ejercicio de copiar los datos a mi tabla Z_HRP1000, pero que cada 500 registros que copie, el programa me haga un “COMMIT WORK” y continúe con la copia de los datos, esto con el fin de asentar los cambios y liberar memoria.

He intentado con “insert” en estructuras repetitivas pero obviamente me da error porque sobreescribe información.

¿Alguno tendrá una idea con la que pudiera orientarme a realizar esto?

Gracias.

Hola,

Dentro de la lógica que estés haciendo, que debe ser un loop, yo agregaría otra tabla interna del mismo tipo que tu tabla transparente.

Entonces primero le haces un append a tu tabla interna y agregaria esto:

LOOP...
APPEND  LT_Z_HRP1000.
DESCRIBE TABLE LT_Z_HRP1000 LINES LV_LINES.

IF LV_LINES EQ 500.

  MODIFY Z_HRP1000 FROM TABLE LT_Z_HRP1000.
  IF SY-SUBRC EQ 0.
    COMMIT WORK AND WAIT.
    REFRESH LT_Z_HRP1000.
  ENDIF.

ENDIF.
ENDLOOP...

Espero que te sirva!
Saludos.

4 Me gusta

Ah y después del loop habria que hacer otro modify MODIFY Z_HRP1000 FROM TABLE LT_Z_HRP1000. para los últimos registros que queden.

3 Me gusta

Muchas gracias amigo @sconoredhot yo lo estuve intentando y mis 2 errores fueron:

1.- Confusión tonta en los ciclos (soy noob en esto de abap jeje).
2.- Que al hacer el “insert” a mi tabla transparente(zcm_hrp1000 que es la copia de la hrp1000 que había creado anteriormente) lo hacia desde mi tabla interna y obviamente ésta estaba cargada con todos los datos de la “hrp1000” (ese error si me di cuenta y lo solucione haciendo el “insert” desde mi “work area”, de ese modo insertaba un registro a la vez.

Por otro lado, le comente mis dudas y errores al amigo que me dio el ejercicio y pude solucionar lo del “commit work” de una manera mucho mas sencilla, destaco que tu solución la entiendo solo un poco y la probaré a ver como me resulta, pero en cuanto a mi consulta ya esta solucionada, de hecho se hizo de la siguiente manera:

  SELECT * FROM hrp1000 INTO TABLE it_tab1000.

     LOOP AT it_tab1000 INTO wa_hrp1000.
      INSERT zcm_hrp1000 FROM wa_hrp1000.
      ivar = ivar + 1.

      IF ivar = 500.
        COMMIT WORK.
        CLEAR ivar. " limpiar contador
      ENDIF.

    ENDLOOP.
    COMMIT WORK.

De verdad muchas gracias, puedo dar el post por cerrado.

1 me gusta

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.