select.. y suma de fechas..????

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • trampoboy
    Member
    • nov
    • 32

    #1

    select.. y suma de fechas..????

    Queridos abaperos… una preguntita



    Tengo el siguiente Select…





    SELECT bsid~blart bsid~vbeln kna1~name1 bsid~bldat bsid~wrbtr

    bsid~waers INTO CORRESPONDING FIELDS OF TABLE t_datos

    FROM

    bsid inner join kna1 ON bsid~kunnr = kna1~kunnr

    WHERE

    bsid~blart in so_wlkun and

    bsid~kunnr in p_client and

    bsid~zfbdt + bsid~zbf3t > sy-datum .


    si UD miran la parte enrojecida, tengo que sumar días a una fecha, y esta compararla con la fecha actual. si estuviera yo en ORACLE.. haría una función, la cual me daría esta suma y podría hacer la comparación.. ¿ puedo hacer eso en ABAP ? no encuentro bibliografía .. de lo contrario.. que podría hacer , para que sea optimo.? Ya que no me compila si lo hago de la actual forma…
    gracias amigos..¡¡¡
  • Floren
    Senior Member
    • abr
    • 209

    #2
    Hola,

    Oracle ofrece más alternativas para realizar las consultas a BBDD. Yo creo que dentro del mismo select no vas a poder hacerlo en abap.

    Quizás otra persona pueda aportar más...

    Un saludo
    Florentín Navarrete Moya
    SAP HCM Consultant
    Mail: administracion@blogdefloren.com
    Blog: www.blogdefloren.com

    Comentario

    • larmadovr
      Member
      • ene
      • 77

      #3
      Que tal:

      Segú yo, no es posible en ABAP hacer algo parecido, pero puedes hacer lo siguiente:

      SELECT bsid~blart bsid~vbeln kna1~name1 bsid~bldat bsid~wrbtr

      bsid~waers INTO CORRESPONDING FIELDS OF TABLE t_datos

      FROM

      bsid inner join kna1 ON bsid~kunnr = kna1~kunnr

      WHERE

      bsid~blart in so_wlkun and

      bsid~kunnr in p_client.


      DATA: L_zfbdt LIKE SY-DATUM.

      LOOP AT T_DATOS

      L_zfbdt = T_DATOS-zfbdt + "Dias que quieres sumar".

      IF L_zfbdt > SY-DATUM.

      MOVE-CORRESPONDIGN T_DATOS TO T_DATOS2.
      APPEND T_DATOS2.
      CLEAR: T_DATOS2.

      ENDIF.

      CLEAR: T_DATOS, L_zfbdt.

      ENDLOOP.

      Al terminar este ciclo, tendras T_DATOS2 con tu información ya procesada.

      NOTA: Puede ser desventaja el número de registros que va traer si al query no le validas una fecha, pero si tus llaves estan bien hechas, no debe haber mucho problema.

      Espero que te sirva.

      Salu2.
      I.S.C.T. Luis Armando Valdez Rodríguez
      Consultor ABAP
      correo: larmandovr@hotmail.com
      cel: (045) 5537406023

      "La vida premia la acción"

      Comentario

      • ballan
        Senior Member
        • oct
        • 671

        #4
        Pues me temo que no vas a poder hacerlo en ABAP, yo lo que haria es añadir los campos ZFBDT y ZBF3T en la tabla t_datos rellenarlos en la clausula select

        despues haces

        loop at t_datos.

        check t_datos-zfbdt + t_datos-zbf3t > sy-datum.

        aqui el codigo que quieras

        endloop.

        Comentario

        • Claudia Valdespino
          Member
          • mar
          • 54

          #5
          Suma de fechas

          Hola trampoboy, lo que puedes hacer es coloca tu select in la condición en rojo, y luego haces un LOOP a tu tabla interna con el siguiente código:

          DATA: p_fecha LIKE bsid-zfbdt.

          SELECT bsid~blart bsid~vbeln kna1~name1 bsid~bldat
          bsid~wrbtr bsid~waers bsid~zfbdt bsid~zbd3t
          INTO CORRESPONDING FIELDS OF TABLE t_datos
          FROM bsid INNER JOIN kna1 ON bsid~kunnr = kna1~kunnr
          WHERE bsid~blart IN so_wlkun AND
          bsid~kunnr IN p_client.

          LOOP AT t_datos.
          CLEAR p_fecha.

          * Suma N dias de la condición de pago a la fecha base
          CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
          EXPORTING
          date = t_datos-zfbdt "fecha base
          days = t_datos-zbd3t "dias a sumar / restar
          months = '00' "meses a sumar / restar
          signum = '+' "signo de la operación
          years = '00' "años a sumar / restar
          IMPORTING
          calc_date = p_fecha. "fecha final

          * Solo tomas aquellos registros cuya sumatoria sea mayor a la fecha de hoy, * por lo tanto si la fecha obtenida es menor o igual al día de hoy lo borra
          IF p_fecha LE sy-datum.
          DELETE t_datos INDEX sy-tabix.
          ENDIF.
          ENDLOOP.

          Espero te sea de ayuda
          Saludos,

          Claudia V.

          Comentario

          • trampoboy
            Member
            • nov
            • 32

            #6
            gracias..

            gracias amigo(a)s.. abrasos y kariños para todo(a)s

            Comentario

            Trabajando...