11-23-2005 8:27 AM
Hi,
I had a requirement to check date format of a date field..i need to convert that into standard format.
ex: 11/11/2005(MM/DD/YYYY) to 20051111 (yyyymmdd).
i got a FM DATE_CONV_EXT_TO_INT.
It's working fine with MM/DD/YYYY.
But if i change user format to MM-DD-YYYY ..it's not working.
Can any body suggest me the right FM to use which works for all Instances of formats.
Thanks in adv.
11-23-2005 8:36 AM
INSTEAD OF FM..USE THIS PERFORM..
REPORT zanid_test4 MESSAGE-ID zz.
*
DATA INPUT1_DATE(10) TYPE C VALUE '10-05-2005'.
DATA INPUT2_DATE(10) TYPE C VALUE '10/05/2005'.
DATA OUTPUT1_DATE LIKE SY-DATUM.
DATA OUTPUT2_DATE LIKE SY-DATUM.
start-of-selection.
PERFORM CHANGE_FORMAT USING INPUT1_DATE
CHANGING OUTPUT1_DATE.
PERFORM CHANGE_FORMAT USING INPUT2_DATE
CHANGING OUTPUT2_DATE.
&----
*& Form CHANGE_FORMAT
&----
text
----
-->P_INPUT_DATE text
<--P_OUTPUT_DATE text
----
form CHANGE_FORMAT using p_input_date
changing p_output_date.
CONCATENATE p_input_date6(4) p_input_date(2) p_input_date3(2)
INTO p_output_date.
endform. " CHANGE_FORMAT
IT WILL WORK IN BOTH THE CASES.
plz reward points if it helps you.
11-23-2005 8:47 AM
Hi Use the folowing FM's
CONVERT_DATE_TO_EXTERNAL
CONVERT_DATE_TO_INTERNAL
regards
vijay
11-23-2005 8:56 AM
Anid ..
I need for any format i have given for sample purpose only.
I need for dd.mm.yyyy..etc.
Vijay..
this FMs not working
11-23-2005 9:04 AM
Hi Raja,
thats really not possible by any means..
for example: if user gives 30052005..its ofcourse 30th may 2005..
but if user enters 12112005..how would you say its
12 nov 2005, or 11 dec 2005..
why dont you force the user to give a valid date??
just declare the field as : p_date like sy_datum.
11-23-2005 9:13 AM
Hi Raja,
I hope there is no need of FM to convert it into system
format.
Use the WRITE TO statement.
Check the syntax of WRITE TO statement.
Regards,
Gopi.
11-23-2005 9:39 AM
Hi guys,
I had gone for the following logic.
select single datfm into usr01-datfm from usr01 where
bname eq sy-uname .
if sy-subrc eq 0 .
move: usr01-datfm to wf_datfm .
endif .
*
if wf_datfm eq '1' .
l_date0(4) = l_dtmp6(4).
l_date4(2) = l_dtmp3(2).
l_date6(2) = l_dtmp0(2).
elseif wf_datfm eq '2' or wf_datfm eq '3' .
l_date0(4) = l_dtmp6(4).
l_date4(2) = l_dtmp0(2).
l_date6(2) = l_dtmp3(2).
elseif wf_datfm eq '4' or wf_datfm eq '5' or wf_datfm eq '6' .
l_date0(4) = l_dtmp0(4).
l_date4(2) = l_dtmp5(2).
l_date6(2) = l_dtmp8(2).
endif .
Is this OK?