Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

difference between two dates

Former Member
0 Likes
987

hi all,

i need logic for calucating diffrence between two dates to get nos of days between these two dates.

these date can be of any year

eg- 01.01.2006 & 07.02.2007

i don't want any FM bcoz i am working on 4.0b

in which the FM which r available r not giving correct

result.

Message was edited by:

sanjeev singh

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
900

Hi,

data: DATE1 TYPE D,

DATE2 TYPE D.

IF DATE1 > DATE2.

EARLIEST = '2'.

ELSEIF DATE2 > DATE1.

EARLIEST = '1'.

ELSE.

*---- Both are equal

EARLIEST = '0'.

DAYDIFF = 0.

EXIT.

ENDIF.

ENDIF.

IF EARLIEST = '1'.

D1 = DATE1.

D2 = DATE2.

ELSE.

D1 = DATE2.

D2 = DATE1.

ENDIF.

  • Calculate date difference

DAYDIFF = D2 - D1.

Hope this helps.

Reward if helpful.

Regards,

Sipra

9 REPLIES 9
Read only

Former Member
0 Likes
900

use fm DAYS_BETWEEN_TWO_DATES.

or if both the field are type sy-datum.

data : date1 like sy-datum value '20060101',

date2 like sy-datum value '20070701'.

data : days type i.

days = date2 - date1.

regards

shiba dutta

Read only

Former Member
0 Likes
900

Hi,

Data: var type i.

var = 01.01.2006 - 07.02.2007.

write: var.

in the Variable VAR you will have the difference between those dates

Regards

Sudheer

Read only

Former Member
0 Likes
900

Hi

try using

/SDF/CMO_DATETIME_DIFFERENCE

SD_DATETIME_DIFFERENCE

In time set as 12 in both dates

Regards

Shiva

Read only

Former Member
0 Likes
901

Hi,

data: DATE1 TYPE D,

DATE2 TYPE D.

IF DATE1 > DATE2.

EARLIEST = '2'.

ELSEIF DATE2 > DATE1.

EARLIEST = '1'.

ELSE.

*---- Both are equal

EARLIEST = '0'.

DAYDIFF = 0.

EXIT.

ENDIF.

ENDIF.

IF EARLIEST = '1'.

D1 = DATE1.

D2 = DATE2.

ELSE.

D1 = DATE2.

D2 = DATE1.

ENDIF.

  • Calculate date difference

DAYDIFF = D2 - D1.

Hope this helps.

Reward if helpful.

Regards,

Sipra

Read only

Former Member
0 Likes
900
DAYS_BETWEEN_TWO_DATES  
MONTHS_BETWEEN_TWO_DATES   Integer number  
MONTHS_BETWEEN_TWO_DATES_NEW

Most universal FM to determine months (both integer and float values)

CALL FUNCTION 'DAYS_BETWEEN_TWO_DATES' 
EXPORTING 
I_DATUM_BIS = x_faede-zfbdt 
I_DATUM_VON = p_fdat 
I_KZ_EXCL_VON = '0' 
I_KZ_INCL_BIS = '0' 
I_KZ_ULT_BIS = ' ' 
I_KZ_ULT_VON = ' ' 
I_STGMETH = '0' 
I_SZBMETH = '1' 
IMPORTING 
E_TAGE = dias_v. 
IF SY-SUBRC <> 0. 
ENDIF. 

donde: 

x_faede-zfbdt -> 20050915 
p_fdat -> 20050811 

dias_v = 4

Read only

0 Likes
900

hi

if u r using fm days_between_two_dates then

enter date 31.01.2007 & 30.01.2007

u will get 0 days diffence between these two dates which is wrong

bcoz it should be 1.

i am already using this fm . in this fm it is not recognising 31st date.

Read only

0 Likes
900
DATA: DATE_1 LIKE SY-DATUM,  
             DATE_2 LIKE SY-DATUM. 
             DATA DAYS TYPE I. 

DATE_1 = SY-DATUM. 
DATE_2 = SY-DATUM + 65. 
DAYS = DATE_2 - DATE_1. 
WRITE:/ 'DATE_2=',DATE_2,'DATE_1=',DATE_1,'DAYS=',DAYS.

Run this code and then you will understand.

Read only

0 Likes
900

Hi sanjeev,

<b>

If FIMA_DAYS_AND_MONTHS_AND_YEARS FM is there then use this code,</b>

Report zex33.

DATA: EDAYS LIKE VTBBEWE-ATAGE,

EMONTHS LIKE VTBBEWE-ATAGE,

EYEARS LIKE VTBBEWE-ATAGE.

PARAMETERS: FROMDATE LIKE VTBBEWE-DBERVON,

TODATE LIKE VTBBEWE-DBERBIS DEFAULT SY-DATUM.

call function 'FIMA_DAYS_AND_MONTHS_AND_YEARS'

exporting

i_date_from = FROMDATE

i_date_to = TODATE

  • I_FLG_SEPARATE = ' '

IMPORTING

E_DAYS = EDAYS.

*E_MONTHS = EMONTHS

*E_YEARS = EYEARS.

WRITE:/ 'Difference in Days ', EDAYS.

*WRITE:/ 'Difference in Months ', EMONTHS.

*WRITE:/ 'Difference in Years ', EYEARS.

INITIALIZATION.

FROMDATE = SY-DATUM - 1.

Read only

Former Member
0 Likes
900

thanks for all ur replies.

i have solved the issues on my own