‎2008 May 12 2:31 PM
Hi!
How can I get the time difference between 2 given dates and times?
Ex: Date1: 05-06-2008
Time1: 24:00:00
Date2: 05-02-2008
Time2: 12:23:17
Time difference = ???
I tried looking for some FM, but they mostly give the time difference without considering the date.
Thanks.
‎2008 May 12 2:35 PM
Please try this:
CONSTANTS:
lco_day TYPE i VALUE 86400,
lco_hour TYPE i VALUE 3600,
lco_minute TYPE i VALUE 60,
lco_d TYPE c LENGTH 1 VALUE 'd',
lco_sep TYPE c LENGTH 1 VALUE ':'.
DATA:
lv_seconds TYPE sytabix,
lv_day TYPE i,
lv_hour TYPE i,
lv_minute TYPE i.
CALL FUNCTION 'SWI_DURATION_DETERMINE'
EXPORTING
start_date = i_start_date
end_date = i_end_date
start_time = i_start_time
end_time = i_end_time
IMPORTING
duration = lv_seconds.
IF lv_seconds >= lco_day.
lv_day = lv_seconds DIV lco_day.
lv_seconds = lv_seconds - lv_day * lco_day.
ENDIF.
IF lv_seconds >= lco_hour.
lv_hour = lv_seconds DIV lco_hour.
lv_seconds = lv_seconds - lv_hour * lco_hour.
ENDIF.
IF lv_seconds >= lco_minute.
lv_minute = lv_seconds DIV lco_minute.
lv_seconds = lv_seconds - lv_minute * lco_minute.
ENDIF.
r_elapsed-day = lv_day.
r_elapsed-sep1 = lco_d.
r_elapsed-hour = lv_hour.
r_elapsed-sep2 = lco_sep.
r_elapsed-minute = lv_minute.
r_elapsed-sep3 = lco_sep.
r_elapsed-second = lv_seconds.
Regards,
‎2008 May 12 2:35 PM
Please try this:
CONSTANTS:
lco_day TYPE i VALUE 86400,
lco_hour TYPE i VALUE 3600,
lco_minute TYPE i VALUE 60,
lco_d TYPE c LENGTH 1 VALUE 'd',
lco_sep TYPE c LENGTH 1 VALUE ':'.
DATA:
lv_seconds TYPE sytabix,
lv_day TYPE i,
lv_hour TYPE i,
lv_minute TYPE i.
CALL FUNCTION 'SWI_DURATION_DETERMINE'
EXPORTING
start_date = i_start_date
end_date = i_end_date
start_time = i_start_time
end_time = i_end_time
IMPORTING
duration = lv_seconds.
IF lv_seconds >= lco_day.
lv_day = lv_seconds DIV lco_day.
lv_seconds = lv_seconds - lv_day * lco_day.
ENDIF.
IF lv_seconds >= lco_hour.
lv_hour = lv_seconds DIV lco_hour.
lv_seconds = lv_seconds - lv_hour * lco_hour.
ENDIF.
IF lv_seconds >= lco_minute.
lv_minute = lv_seconds DIV lco_minute.
lv_seconds = lv_seconds - lv_minute * lco_minute.
ENDIF.
r_elapsed-day = lv_day.
r_elapsed-sep1 = lco_d.
r_elapsed-hour = lv_hour.
r_elapsed-sep2 = lco_sep.
r_elapsed-minute = lv_minute.
r_elapsed-sep3 = lco_sep.
r_elapsed-second = lv_seconds.
Regards,
‎2008 May 12 2:36 PM
This one gives the difference in seconds
CCU_TIMESTAMP_DIFFERENCE
‎2008 May 12 2:37 PM
Hi,
Use the Function module.
SD_DATETIME_DIFFERENCE
Also you can use Function module
SD_CALC_DURATION_FROM_DATETIME
Edited by: Velangini Showry Maria Kumar Bandanadham on May 12, 2008 3:38 PM
‎2008 May 12 2:38 PM
Hi
Use This Function Module this might find you a solution
SD_CALC_DURATION_FROM_DATETIME
Reward If Helpfull,
Naresh.
‎2008 May 12 2:41 PM
Hi,
Try those:
SD_DATETIME_DIFFERENCE;
CCU_TIMESTAMP_DIFFERENCE;
FIMA_DAYS_AND_MONTHS_AND_YEARS;
HR_HK_DIFF_BT_2_DATES.
Regards,
Brian Gonsales
‎2008 May 12 2:45 PM
hi check this..
data: diffdate type d,
difftime type t,
clr type c.
call function /SDF/CMO_DATETIME_DIFFERENCE
IMPORTING
DATE1 = arrivaldate
TIME1 = arrivaltime
DATE2 = clearadate
VALUE = clearatime
EXPORTING
DATEDIFF = diffdate
TIMEDIFF = difftime
EARLIEST = clr
EXCEPTIONS
INVALID_DATETIME.
or use this..DURATION_DETERMINE
regards,
venkat
‎2008 May 12 2:45 PM
Hi,
try this Function Module : SD_CALC_DURATION_FROM_DATETIME
assign points if helpful
Thanks
Prashanth
‎2008 May 12 2:49 PM
Hi,
Please use FM SD_DATETIME_DIFFERENCE
Hope this solves your problem.
regards
Ravi
‎2008 May 12 3:10 PM
Hi Navi,
Please go through this code.
this will give difference in days and hour only.
data: d1 type D VALUE '20080510',
d2 TYPE D VALUE '20080513',
T1 TYPE T VALUE '230000',
T2 TYPE T VALUE '092000',
DATEDIFF TYPE P,
TIMEDIFF TYPE P,
EARLI(10) TYPE C.
CALL FUNCTION 'SD_DATETIME_DIFFERENCE'
EXPORTING
DATE1 = D1
TIME1 = T1
DATE2 = D2
TIME2 = T2
IMPORTING
DATEDIFF = DATEDIFF
TIMEDIFF = TIMEDIFF
EARLIEST = EARLI
EXCEPTIONS
INVALID_DATETIME = 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.
WRITE:/ DATEDIFF, TIMEDIFF, EARLI.