Skip to Content
author's profile photo Former Member
Former Member

function module to subtract a number of months from a date

I have a field, FISCPER, in the format YYYY/MMM(2007004) and I need to subtract 12 months off of it to get 2006004. I tried to just subtreact 12 but it gave me the actual value when you subtract the 2.

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

3 Answers

  • Best Answer
    Posted on Apr 23, 2007 at 06:25 PM

    Hi,

    I don't think any FM available for your purposes.

    But you can try something like this.

    DATA: BEGIN OF ITAB OCCURS 0,
            SPMON TYPE UMC_Y_VALIDFR,
          END OF ITAB.
                                                                            
    PARAMETERS PSPMON TYPE UMC_Y_VALIDFR DEFAULT '2007004'.
                                                                         
    START-OF-SELECTION.
                                                
      ITAB-SPMON = PSPMON.
      DO 12 TIMES.
        IF ITAB-SPMON+4(3) = '000'.
          ITAB-SPMON+4(3) = '012'.
          ITAB-SPMON(4) = ITAB-SPMON(4) - 1.
        ENDIF.
        APPEND ITAB.
                                                    
        ITAB-SPMON = ITAB-SPMON - 1.
      ENDDO.
    
      READ TABLE ITAB INDEX 12.
      WRITE: / ITAB-SPMON.
    

    Regards,

    Ferry Lianto

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Apr 23, 2007 at 07:27 PM

    Hi,

    Check the following example:

    FM to Get the Day for a Particular Date

    FM or any other means by which we can get the DAY for a particular date?

    Yes, DATE_COMPUTE_DAY

    Sample code:

    clear: hold_day_of_week.

    CALL FUNCTION 'DATE_COMPUTE_DAY'

    EXPORTING

    DATE = workdate

    IMPORTING

    DAY = day_of_week_num

    EXCEPTIONS

    OTHERS = 8.

    CASE day_of_week_num.

    WHEN 1.

    hold_day_of_week = 'Monday'.

    WHEN 2.

    hold_day_of_week = 'Tuesday'.

    WHEN 3.

    hold_day_of_week = 'Wednesday'.

    WHEN 4.

    hold_day_of_week = 'Thursday'.

    WHEN 5.

    hold_day_of_week = 'Friday'.

    WHEN 6.

    hold_day_of_week = 'Saturday'.

    WHEN 7.

    hold_day_of_week = 'Sunday'.

    WHEN OTHERS.

    hold_day_of_week = 'invalid'.

    ENDCASE.

    or

    You can use DATE_COMPUTE_DAY to get the day number of the week (for example, today gives 5)

    then use WEEKDAY_GET which returns an itab with seven entries (one for each day of the week.)

    You enter in this itab and get the field langt to get the day name.

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Apr 24, 2007 at 04:17 AM

    Hi ,

    Check out these function modules which may help you out.

    1. RP_CALC_DATE_IN_INTERVAL - Add/subtract years/months/days from a date

    2. MONTH_PLUS_DETERMINE - Add or subtract months from a date to subtract a month, enter a negative value for the 'months' parameter.

    If you think this helped you in anyway, reward me.

    Regards,

    Sravanthi.

    Add a comment
    10|10000 characters needed characters exceeded

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.