Trunc para sql en sap abap

Tengo el siguiente dilema, necesito truncar un campo de la tabla, para este caso el 1er cobemp_fecha_pago que reflejo en el select, es tipo datetime (tomado de la DB) y deseo me tome solo el mes y el año, es decir, hoy es 07.04.2017 deseo que el campo cobemp_fecha_pago tenga solo 201704, como le puedo hacer para lograr dicho objetivo? Muchas gracias de antemano

METHOD clear_sql_cobemp.
    EXEC SQL.
      OPEN dbcur for

      SELECT    cobemp_fecha_pago, cobemp_ci, cobemp_fecha_pago, cobemp_ncomp_pago,
                cobemp_monto_pago, cobemp_control, cobemp_fecha_registro
      FROM COBEMP
    ENDEXEC.

    DO.
    clear: ti_COBEMPH.
       EXEC SQL.
        FETCH NEXT dbcur INTO :ti_COBEMPH.
      ENDEXEC.
      IF sy-subrc ne 0.
        exit.
      ENDIF.


    ENDDO.


  ENDMETHOD.

en abap las fechas se maneja con el siguiente formato ‘YYYYMMDD’ que seria 20170407, por lo que si quieres solo tener el año y el mes basta con tener algo asi:

Data: lv_year_mes type string.

lv_year_mes = SY-DATUM(6).

espero te haya dado idea…

2 Me gusta

Hola @canuto , te comprendo, pero nota que estoy tomando el campo en la consulta (el 1er campo), y ese es el campo que deseo truncar, que todo lo que le llegue a ese campo se trunque al momento de hacerle el fetch (o antes del fetch) dentro de la tabla interna cobemph. En todo caso, la solucion que propones da pero para el valor de una variable

Pude resolver de la siguiente manera:

METHOD clear_sql_cobemp.
    DATA: wa_cobemph LIKE ti_cobemph.
    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,
          :WA_COBEMPH-FECHA_REGISTRO
      ENDEXEC.
      IF sy-subrc NE 0.
        EXIT.
      ENDIF.
      wa_cobemph-lapso = wa_cobemph-fecha_pago+0(4) && wa_cobemph-fecha_pago+5(2).
      APPEND wa_cobemph TO ti_cobemph.
*      PERFORM APPEND_DATAS.
    ENDDO.

    LOOP AT ti_cobemph INTO wa_cobemph.
      EXEC SQL.
        INSERT INTO COBEMPH
        FROM :WA_COBEMPH
      ENDEXEC.
    ENDLOOP.

  ENDMETHOD.

@canuto si estaba en buena via del código, muchas gracias por la iluminación!!

2 Me gusta

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