Obtener numero de semanas entre dos fechas

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • kelvin.acosta
    Member
    • ago
    • 37

    #1

    Obtener numero de semanas entre dos fechas

    Buenos dias a todos;


    Tengo un problema y es que necesito saber como calcular el numero de semanas entre dos fechas , mas abajo les hago un ejemplo de lo que necesito hacer:


    fecha1 = 14/12/2008
    fecha2 = 02/02/2009

    numero semanas = 8.


    Agradecere que me puedan colaborar,

    Gracias anticipadas.
    kmeoi
  • AJAAVE

    #2
    Buenas Tarde Kelvin.

    He estado buscando una función que me devuelva el número de semanas pero no la encontre, quizas si la hay y con mas tiempo puede que la encuentre, si alguien la conoce por favor que la postee. Yo recientemente trabaje con la función DAYS_BETWEEN_TWO_DATES que me devuelve el número de dias entre dos fechas y se me ocurrió lo siguiente, a lo mejor no es lo mas optimo pero te dejo esta idea.

    Código:
    DATA: E_TAGE(8) TYPE P DECIMALS 2.
    CALL FUNCTION 'DAYS_BETWEEN_TWO_DATES'
      EXPORTING
        I_DATUM_BIS                   = '20081214'
        I_DATUM_VON                  = '20090202'
        I_KZ_EXCL_VON                = '1'
    *   I_KZ_INCL_BIS                 = '1'
    *   I_KZ_ULT_BIS                  = ' '
    *   I_KZ_ULT_VON                 = ' '
        I_STGMETH                      = '2'
    *   I_SZBMETH                      = '1'
     IMPORTING
       E_TAGE                        = E_TAGE
    * EXCEPTIONS
    *   DAYS_METHOD_NOT_DEFINED       = 1
    *   OTHERS                        = 2
                             .
    IF SY-SUBRC <> 0.
    *  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *  WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    
    
    E_TAGE = FLOOR( E_TAGE / 7 ).
    
    
    WRITE E_TAGE.

    Comentario

    • kelvin.acosta
      Member
      • ago
      • 37

      #3
      Caso resuelto

      Hola a todos;

      ya solucione este problema, lo hice con una funcion que encontre en la red y con la misma he creado mi propio modulo de funciones, aqui les dejo el codigo:

      Código HTML:
      FUNCTION ZWEEK_DIFF.
      *"----------------------------------------------------------------------
      *"*"Local Interface:
      *"  IMPORTING
      *"     REFERENCE(START_DATE) TYPE  SCAL-DATE
      *"     REFERENCE(END_DATE) TYPE  SCAL-DATE
      *"  EXPORTING
      *"     REFERENCE(WEEK_DIFF) TYPE  I
      *"----------------------------------------------------------------------
      
      **Data Declaration
        DATA week1 LIKE scal-week.
        DATA week2 LIKE scal-week.
        DATA date_st LIKE scal-date.
        DATA day LIKE scal-indicator.
        DATA date_diff(5) TYPE n.
        DATA date_change TYPE sy-datum.
        DATA DAY_DIFF TYPE i.
      
      **To get the Week of Start Date
        CALL FUNCTION 'DATE_GET_WEEK'
        EXPORTING
        date = start_date
        IMPORTING
        week = week1
      * EXCEPTIONS
      * DATE_INVALID = 1
      * OTHERS = 2
        .
        IF sy-subrc = 0.
      **To get the First Day of the week from Start Date
          CALL FUNCTION 'WEEK_GET_FIRST_DAY'
          EXPORTING
          week = week1
          IMPORTING
          date = date_st
      * EXCEPTIONS
      * WEEK_INVALID = 1
      * OTHERS = 2
          .
          IF sy-subrc = 0.
          ENDIF.
        ENDIF.
      
        date_diff = end_date - date_st.
        day_diff = date_diff MOD 7.
        week_diff = date_diff DIV 7.
      
        IF ( ( day_diff >= 1 ) AND ( day_diff < 7 ) ).
          week_diff = week_diff + 1.
        ENDIF.
      
        date_change = end_date.
      
        IF day_diff = 0.
          CALL FUNCTION 'DATE_COMPUTE_DAY'
            EXPORTING
              date = date_change
            IMPORTING
              day  = day.
      
          IF sy-subrc = 0.
      
            IF day = 1.
              week_diff = week_diff + 1.
            ENDIF.
      
          ENDIF.
      
        ENDIF.
      
      ENDFUNCTION.
      Espero que le sirva a otra persona,

      saludos,
      kmeoi

      Comentario

      • Floren
        Senior Member
        • abr
        • 209

        #4
        Hola,

        También se puede utilizar el FM "HR_99S_INTERVAL_BETWEEN_DATES" que te devuelve de manera standard la diferencia de dos fechas en años, meses y semanas.


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

        Comentario

        Trabajando...