In SAP ABAP, adding months to a date is slightly more complex than adding days because you must consider varying month lengths. Here are different ways to add months to a date:


DATA: lv_date TYPE d,
lv_newdate TYPE d.
lv_date = sy-datum. " Current date
lv_newdate = cl_abap_datfm=>add_to_date(
i_date = lv_date,
i_months = 2 ). " Add 2 months
WRITE: lv_newdate.

Best practice for modern ABAP
✅ Handles month-end cases properly (e.g., from 31st Jan to 28th/29th Feb)


2. Using RP_CALC_DATE_IN_INTERVAL Function Module

DATA: lv_date TYPE sy-datum,
lv_newdate TYPE sy-datum.
lv_date = sy-datum.
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
date = lv_date
days = 0
months = 2 " Add 2 months
signum = '+' " Add instead of subtract
IMPORTING
calc_date = lv_newdate.
WRITE: lv_newdate.

Works in older versions of SAP
Supports both months and years adjustments


3. Using DATE_COMPUTE_DAY Function Module (Alternative)

DATA: lv_date TYPE sy-datum,
lv_newdate TYPE sy-datum.
lv_date = sy-datum.
CALL FUNCTION 'DATE_COMPUTE_DAY'
EXPORTING
date = lv_date
months = 2
IMPORTING
result = lv_newdate.
WRITE: lv_newdate.

Simple but limited in functionality
⚠️ May not handle complex month-end cases correctly


Which Method to Use?