‎2007 Jan 08 1:39 PM
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
‎2007 Jan 08 1:44 PM
Use this FM...
RP_CALC_DATE_IN_INTERVAL
You can ADD or SUBTRACT days, months or years -;)
Greetings,
Blag.
‎2007 Jan 08 1:43 PM
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
‎2007 Jan 08 1:46 PM
Hi Andreas,
this option shows me an error message:
CONVT_NO_NUMBER
CX_SY_CONVERSION_NO_NUMBER
other idea?
‎2007 Jan 08 1:44 PM
Use this FM...
RP_CALC_DATE_IN_INTERVAL
You can ADD or SUBTRACT days, months or years -;)
Greetings,
Blag.
‎2007 Jan 08 1:47 PM
‎2007 Jan 08 1:49 PM
Hi Alvaro,
your FM is perfect, I am working in BW 3.5 and thsi FM does not exist. :S
Thanks
‎2007 Jan 08 2:13 PM
> 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.
‎2007 Jan 08 2:14 PM
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.
‎2007 Jan 08 2:19 PM
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
‎2007 Jan 08 1:47 PM
Hi victoria,
1. use this FM
HR_JP_ADD_MONTH_TO_DATE
2. in that give IV_MONTHCOUNT = -1.
regards,
amit m.
‎2007 Jan 08 2:25 PM