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

function to a month

Former Member
0 Likes
1,155

hi,

I have the following code.

DATA: FECHA LIKE SY-DATUM(6),

FECHA1 LIKE SY-DATUM.

fecha1 = sy-datum.

fecha = FECHA1(6) - 1.

The result is 200700.

This result not exist like year.month, this result is not the expected for me. What i need is 200612.

There are some functions or some idea to obtain what I need?

I would appreciate your help.

Regards,

Victoria

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,094

Use this FM...


RP_CALC_DATE_IN_INTERVAL

You can ADD or SUBTRACT days, months or years -;)

Greetings,

Blag.

10 REPLIES 10
Read only

andreas_mann3
Active Contributor
0 Likes
1,094

hi,

try CALCULATE_DATE

with month = -1

REPORT zforum117 .

PARAMETERS: date LIKE sy-datum DEFAULT sy-datum,

mth(4) default -1.

DATA: fecha LIKE sy-datum(6),

fecha1 LIKE sy-datum.

CALL FUNCTION 'CALCULATE_DATE'

EXPORTING

  • days = '0'

months = mth

start_date = date

IMPORTING

result_date = fecha1.

.

fecha = fecha1(6).

write: fecha.

A.

Message was edited by:

Andreas Mann

Read only

0 Likes
1,094

Hi Andreas,

this option shows me an error message:

CONVT_NO_NUMBER

CX_SY_CONVERSION_NO_NUMBER

other idea?

Read only

Former Member
0 Likes
1,095

Use this FM...


RP_CALC_DATE_IN_INTERVAL

You can ADD or SUBTRACT days, months or years -;)

Greetings,

Blag.

Read only

0 Likes
1,094

FM CALCULATE_DATE will useful.

Read only

0 Likes
1,094

Hi Alvaro,

your FM is perfect, I am working in BW 3.5 and thsi FM does not exist. :S

Thanks

Read only

0 Likes
1,094

> Hi Alvaro,

>

> your FM is perfect, I am working in BW 3.5 and thsi

> FM does not exist. :S

>

> Thanks

Sorry to hear that Victoria -:( I'm working on R/3 4.7 and I don't have any access to BW, so I can help you -:(

Greetings,

Blag.

Read only

0 Likes
1,094

Here's the FM source code if needed -:D


FUNCTION RP_CALC_DATE_IN_INTERVAL.
*"----------------------------------------------------------------------
*
* 3.0E
*QXOP30K085926 13071996 Routine zur Bestimmung eines gueltigen Datums
*                       muss auch Intervalle beruecksichtigen, die in
*                       der Zukunft liegen
*                       (Hinweis: 44936)
*
* 2.1C
*QXOK067676 20011994 Berechnung des Datums nur innerhalb
*                    definierter Grenzen (LOW-DATE und HIGH-DATE)
*
*"----------------------------------------------------------------------
*"Lokale Schnittstelle:
*"       IMPORTING
*"             DATE LIKE P0001-BEGDA
*"             DAYS LIKE T5A4A-DLYDY
*"             MONTHS LIKE T5A4A-DLYMO
*"             SIGNUM LIKE T5A4A-SPLIT DEFAULT '+'
*"             YEARS LIKE T5A4A-DLYYR
*"       EXPORTING
*"             CALC_DATE LIKE P0001-BEGDA
*"----------------------------------------------------------------------
  DATA: ACT_DATE   TYPE D,             "Tagesdatum
        DYS        TYPE P,             "Frist in Tagen
        MON        TYPE P,             "Frist in Monaten
        YRS        TYPE P,             "Frist in Jahren
        TTL_YRS    TYPE P              "Jahre (insgesamt)
                   VALUE 0,
        ROUND      TYPE P              "Rundungsfaktor (wg. Ganz-
                   DECIMALS 2          "zahlendarstellung), um kommerz.
                   VALUE '0.50'.       "Rundung zu umgehen


  ACT_DATE = DATE.                     "Datum uebernehmen   QXOK067676
* Datums-Berechnung darf nur innerhalb definierter Grenzen
* (LOW-DATE,HIGH-DATE) erfolgen
  IF ( DATE <> HIGH-DATE OR            "kleiner Obergrenze  QXOK067676
       SIGNUM = '-' ) AND              "in Vergangenheit    QXOK067676
     ( DATE <> LOW-DATE OR             "groesser Obergrenze QXOK067676
       SIGNUM <> '-' ).                "in Zukunft          QXOK067676
    IF SIGNUM = '-'.                   "Berechnung in Vergangenheit?
      DYS = - DAYS.                    "Werte mit negativem Vor-
      MON = - MONTHS.                  "zeichen versehen
      YRS = - YEARS.
      ROUND = - ROUND.                 "Rundungskonstante
    ELSE.
      DYS = DAYS.                      "Werte mit positivem Vor-
      MON = MONTHS.                    "zeichen belassen
      YRS = YEARS.
    ENDIF.

*   Frist in Tagen
    ACT_DATE = ACT_DATE + DYS.         "Frist in Tagen
*   Frist in Monaten
*   es koennte auch vorkommen, dass mehr als 12 Monate vorgesehen sind,
*   darum muessen diese angepasst werden
*---------------------------------------------------------------------
    IF MON <> 0.                       "ueberhaupt Monate angegeben?
      PERFORM ADJUST_MONTHS USING ACT_DATE+4(2)  "Monate untersuchen
                                  MON TTL_YRS ROUND.
      UNPACK MON TO ACT_DATE+4(2).     "Monate uebernehmen
    ENDIF.

*   Frist in Jahren
    TTL_YRS = YRS + TTL_YRS.           "Gesamtzahl an Jahren
    ACT_DATE(4) = ACT_DATE(4) + TTL_YRS.    "Frist in Jahren

*   nun muss noch geprueft werden, ob es sich beim ermittelten Datum
*   um eine gueltige Datumsangabe (lt. Kalender) handelt; ungueltige
*   waere z.Bsp. 29.02.1991
*--------------------------
    PERFORM VALID_DATE USING ACT_DATE  "Vorzeichen          QXOK085926
                             SIGNUM.   "beachten            QXOK085926
  ENDIF.                               "                    QXOK067676

  CALC_DATE = ACT_DATE.
ENDFUNCTION.

Greetings,

Blag.

Read only

0 Likes
1,094

just check this..

DATA: FECHA like sy-datum(6),
FECHA1 LIKE SY-DATUM.
data: mon(2) type c,
      year(4) type c.

fecha1 = sy-datum.
mon = FECHA1+4(2) .
year = FECHA1+0(4).

if mon = '01'.       "need to use this 
year = year - 1.     "----> 
mon = '12'.
endif.

concatenate year mon into fecha.
write:/ fecha.

regards,

vijay

Read only

Former Member
0 Likes
1,094

Hi victoria,

1. use this FM

HR_JP_ADD_MONTH_TO_DATE

2. in that give IV_MONTHCOUNT = -1.

regards,

amit m.

Read only

RaymondGiuseppi
Active Contributor
0 Likes
1,094

Use CCM_GO_BACK_MONTHS

*" IMPORTING

*" VALUE(CURRDATE) LIKE SY-DATUM

*" VALUE(BACKMONTHS) TYPE NUMC3

*" EXPORTING

*" VALUE(NEWDATE) LIKE SY-DATUM

regards