‎2006 Jun 08 3:20 PM
Hi Guys,
I have the following task where i am stuck..I am doing an Interface program and reading an input file coming in from legacy system. The format of date coming in is 10 chars and i have to upload this into SAP custom table which has type Dats and it allows only length as 8. So, when i am reading this file into some internal table during that i want to do the conversion and get it into the internal table with length as '8'.
The format of date in legacy system is 06/08/2006, so i want this 'backslashes to be removed while reading. Anyhelp or sample code would be greatly appreciated.
Thanks in advance,
David.
‎2006 Jun 08 3:51 PM
hi guys,
Is this the way to do it or i am doing it wrongly there are 2 date fields coming in my input file Start_date and end_date.
ORM OPEN_DATASET.
OPEN DATASET P_INFILE FOR INPUT IN TEXT MODE ENCODING default message
ERR_MSG.
If SY-SUBRC NE 0.
WRITE: / 'Open input dataset error', p_infile, SY-SUBRC, ERR_MSG.
STOP.
Else.
DO.
READ DATASET P_INFILE INTO I_INP_DATA.
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
date_external = p_val
IMPORTING
date_internal = p_field
EXCEPTIONS
date_external_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MOVE sy-subrc TO p_rc.
EXIT.
ENDIF.
IF SY-SUBRC EQ 0.
*WRITE: / Open input dataset error, p_infile, SY-SUBRC,ERR_MSG.
*ENDIF.
APPEND i_inp_data.
CLEAR i_inp_data.
ENDIF.
ENDDO.
ENDIF.
ENDFORM.
Thanks in advance,
David.
‎2006 Jun 08 3:24 PM
‎2006 Jun 08 3:24 PM
Use the fM: CONVERT_DATE_TO_INTERNAL
Sample Usage:
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
DATE_EXTERNAL = date_ext
IMPORTING
DATE_INTERNAL = date_int
DATE_EXTERNAL_IS_INVALID = 1
OTHERS = 2.
Regards,
Ravi
‎2006 Jun 08 3:26 PM
hi,
data var1(10) type c value '06/08/2006',
var2 type sy-datum,
var3 type sy-datum,
var4 type sy-datum,
var5 type sy-datum.
var2 = var1 + 0(2).
var3 = var1 + 3(2).
var4 = var1 + 6(4).
concatenate var2 var3 var4 into var5.
else use this way
CALL FUNCTION <b>'CONVERT_DATE_TO_INTERNAL'</b>
EXPORTING
date_external = p_val
IMPORTING
date_internal = p_field
EXCEPTIONS
date_external_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MOVE sy-subrc TO p_rc.
EXIT.
ENDIF.
Regards,
Santosh
‎2006 Jun 08 3:26 PM
You can also try offseting:
concatenate old_date6(4) old_date3(2) old_date(2) into
new_date in character mode.
Peter
‎2006 Jun 08 3:38 PM
Hi David,
Use the function module RP_FORMATING_DATE.
This is exactly what you want.
Data : lv_start_date type sy-datum.
* Convert the Date of Sale to internal date format
CALL FUNCTION 'RP_FORMATING_DATE'
EXPORTING
date_i = start_date
IMPORTING
date_o = lv_start_date
EXCEPTIONS
date_invalid = 1
OTHERS = 2.<b>Reward points if it helps.</b>
Message was edited by: Amit Mishra
‎2006 Jun 08 3:51 PM
hi guys,
Is this the way to do it or i am doing it wrongly there are 2 date fields coming in my input file Start_date and end_date.
ORM OPEN_DATASET.
OPEN DATASET P_INFILE FOR INPUT IN TEXT MODE ENCODING default message
ERR_MSG.
If SY-SUBRC NE 0.
WRITE: / 'Open input dataset error', p_infile, SY-SUBRC, ERR_MSG.
STOP.
Else.
DO.
READ DATASET P_INFILE INTO I_INP_DATA.
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
date_external = p_val
IMPORTING
date_internal = p_field
EXCEPTIONS
date_external_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MOVE sy-subrc TO p_rc.
EXIT.
ENDIF.
IF SY-SUBRC EQ 0.
*WRITE: / Open input dataset error, p_infile, SY-SUBRC,ERR_MSG.
*ENDIF.
APPEND i_inp_data.
CLEAR i_inp_data.
ENDIF.
ENDDO.
ENDIF.
ENDFORM.
Thanks in advance,
David.
‎2006 Jun 08 3:57 PM
change as suggested:
READ DATASET P_INFILE INTO I_INP_DATA.
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
date_external = I_INP_DATA-start_date
IMPORTING
date_internal = I_INP_DATA-start_date
EXCEPTIONS
date_external_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MOVE sy-subrc TO p_rc.
EXIT.
ENDIF.
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
date_external = I_INP_DATA-end_date
IMPORTING
date_internal = I_INP_DATA-end_date
EXCEPTIONS
date_external_is_invalid = 1
OTHERS = 2.
Regards,
Ravi
‎2006 Jun 08 3:57 PM
Hi,
when ur read data from file :- how many columns are there .
how ur going retrieve date before convertion.
‎2006 Jun 08 4:02 PM
Hi,
ur also missing sy-subrc check and exit condition form do loop.
DO.
READ DATASET P_INFILE INTO I_INP_DATA.
<b>IF sy-subrc = 0.</b>
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
date_external = I_INP_DATA-start_adte
IMPORTING
date_internal = I_INP_DATA-start_adte
EXCEPTIONS
date_external_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MOVE sy-subrc TO p_rc.
* Error Condition
Endif
<b>ELSE</b>.
EXIT. " for end of file
<b>ENDIF</b>.
Message was edited by: Manoj Gupta
‎2006 Jun 08 4:10 PM
Hi Ravikanth,
If i use ur approach i am getting the following error
"The data object p_infile has no structure and therefore no component called Start_date".
Any other way guys..
Thanks,
David.