‎2006 Apr 06 6:23 AM
I need to add 6 months to current date. Also, may be days or years also. Can anyone let me know is there any function module which can be used to achieve the functionality.
‎2006 Apr 06 6:24 AM
Use the below function module...
data : wa_date type sy-datum.
call function 'RP_CALC_DATE_IN_INTERVAL'
exporting
date = sy-datum
days = 0
months = 6
years = 0
signum = '+'
importing
calc_date = wa_date.
Pl. award points if useful.
‎2006 Apr 06 6:24 AM
Use the below function module...
data : wa_date type sy-datum.
call function 'RP_CALC_DATE_IN_INTERVAL'
exporting
date = sy-datum
days = 0
months = 6
years = 0
signum = '+'
importing
calc_date = wa_date.
Pl. award points if useful.
‎2006 Apr 06 6:27 AM
<b>MONTH_PLUS_DETERMINE</b> Add or subtract months from a date. To subtract a month, enter a negative value for the 'months' parameter.
Example:
data: new_date type d.
CALL FUNCTION 'MONTH_PLUS_DETERMINE'
EXPORTING
months = -5 " Negative to subtract from old date, positive to add
olddate = sy-datum
IMPORTING
NEWDATE = new_date.
write: / new_date.
<b>RP_CALC_DATE_IN_INTERVAL</b> Add/subtract years/months/days from a date
<b>DATE_IN_FUTURE</b> Import: date in current external format for user; number of days.
Export: calculated date in future in external format mm/dd/yyyy
<b>RE_ADD_MONTH_TO_DATE</b> This module really can add/subtract months to/from date.
regards
vinod
‎2006 Apr 06 6:29 AM
‎2006 May 05 6:41 PM
Hi ,
I can not see MONTH_PLUS_DETERMINE fm in my system unfortunatly .
Can you please send me source code of this .
Waiting for u r response
Thanks
Jimmy
‎2006 May 05 7:02 PM
Hi jimmy,
here is the code for FM "MONTH_PLUS_DETERMINE".
========================================================
FUNCTION MONTH_PLUS_DETERMINE.
*"----
*"Lokale Schnittstelle:
*" IMPORTING
*" MONTHS
*" OLDDATE LIKE SY-DATUM
*" EXPORTING
*" NEWDATE LIKE SY-DATUM
*"----
DATA: BEGIN OF DAT,
JJJJ(4) ,
MM(2) ,
TT(2) ,
END OF DAT,
BEGIN OF HDAT,
JJJJ(4) ,
MM(2) ,
TT(2) ,
END OF HDAT,
NEWMM TYPE P,
DIFFJJJJ TYPE P.
WRITE: OLDDATE+0(4) TO DAT-JJJJ,
OLDDATE+4(2) TO DAT-MM,
OLDDATE+6(2) TO DAT-TT.
DIFFJJJJ = ( DAT-MM + MONTHS - 1 ) DIV 12.
NEWMM = ( DAT-MM + MONTHS - 1 ) MOD 12 + 1.
DAT-JJJJ = DAT-JJJJ + DIFFJJJJ.
IF NEWMM < 10.
WRITE '0' TO DAT-MM+0(1).
WRITE NEWMM TO DAT-MM+1(1).
ELSE.
WRITE NEWMM TO DAT-MM.
ENDIF.
IF DAT-TT > '28'.
HDAT-TT = '01'.
NEWMM = ( DAT-MM ) MOD 12 + 1.
HDAT-JJJJ = DAT-JJJJ + ( ( DAT-MM ) DIV 12 ).
IF NEWMM < 10.
WRITE '0' TO HDAT-MM+0(1).
WRITE NEWMM TO HDAT-MM+1(1).
ELSE.
WRITE NEWMM TO HDAT-MM.
ENDIF.
IF DAT-TT = '31'.
NEWDATE = HDAT.
NEWDATE = NEWDATE - 1.
ELSE.
IF DAT-MM = '02'.
NEWDATE = HDAT.
NEWDATE = NEWDATE - 1.
ELSE.
NEWDATE = DAT.
ENDIF.
ENDIF.
ELSE.
NEWDATE = DAT.
ENDIF.
ENDFUNCTION.
=========================================================