Insert en Tabla SQL sin usar :WA - POO

sap-abap
Etiquetas: #<Tag:0x00007f651efc5988>

#1

Hola Amigos! tengo algunas dudas en como puedo mejorar el código para que en vez de insertar un solo registro inserte todo lo que tiene almacenado en COBEMP a la COBEMPH, en la programación POO a nivel de sintaxis requiere la creación del WA, pero evidentemente me está almacenando el primer registro que encuentra. Y lo que requiero es que al hacer el insert a la COBEMPH inserte todos los registros.

Intente hacer un move corresponding de WA to COBEMPH
append COBEMPH

Pero me da error de sintaxis.

Acá el código:

METHOD clear_sql_cobemp.
    DATA: wa_cobemph LIKE ti_cobemph,
          v_fecha(23) TYPE c.
    
    EXEC SQL.
      OPEN DBCUR FOR
      SELECT    COBEMP_CI, COBEMP_FECHA_PAGO, COBEMP_NCOMP_PAGO,
                COBEMP_MONTO_PAGO, COBEMP_CONTROL, COBEMP_FECHA_REGISTRO
      FROM COBEMP
    ENDEXEC.

    DO.
      CLEAR: wa_cobemph.
      EXEC SQL.
        FETCH NEXT DBCUR INTO
          :WA_COBEMPH-CI,
          :WA_COBEMPH-FECHA_PAGO,
          :WA_COBEMPH-N_COMP_PAGO,
          :WA_COBEMPH-MONTO_PAGO,
          :WA_COBEMPH-CONTROL,
          :v_fecha
      ENDEXEC.
      IF sy-subrc NE 0.
        EXIT.
      ENDIF.
      wa_cobemph-lapso = wa_cobemph-fecha_pago+0(4) && wa_cobemph-fecha_pago+5(2).
      wa_cobemph-fecha_registro = v_fecha+0(4) && v_fecha+5(2) && v_fecha+8(2).
      APPEND wa_cobemph TO ti_cobemph.
    ENDDO.

    LOOP AT ti_cobemph INTO wa_cobemph.
      EXEC SQL.
        INSERT INTO COBEMPH (cobemp_lapso, cobemp_ci, cobemp_fecha_pago, cobemp_ncomp_pago, cobemp_monto_pago, cobemp_control, cobemp_fecha_registro)
        VALUES (:wa_cobemph-lapso, :wa_cobemph-ci, :wa_cobemph-fecha_pago, :wa_cobemph-n_comp_pago, :wa_cobemph-monto_pago, :wa_cobemph-control, :wa_cobemph-fecha_registro)
      ENDEXEC.

      IF sy-subrc = 0.
        CLEAR wa_cobemph.
        EXEC SQL.
          DELETE COBEMP
        ENDEXEC.
        IF sy-subrc EQ 0.
          COMMIT WORK.
        ELSE.
          ROLLBACK WORK.
        ENDIF.
      ENDIF.
    ENDLOOP.


  ENDMETHOD.

#2

Buenos días Estimados…

Ya encontré la solución, en el VALUES, estoy pasando :wa_cobemph- y lo correcto para que guarde todos los registros es :ti_cobemph.

De igual manera gracias.


#3

Perfecto @Vlp89, gracias por tu aporte.

Saludos!


#4