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

Convert Date to SAP format while reading.

Former Member
0 Likes
2,433

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.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
2,170

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.

10 REPLIES 10
Read only

suresh_datti
Active Contributor
0 Likes
2,170

try CONVERT_DATE_TO_INTERNAL

Suresh

Read only

Former Member
0 Likes
2,170

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

Read only

Former Member
0 Likes
2,170

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

Read only

Peter_Inotai
Active Contributor
0 Likes
2,170

You can also try offseting:

concatenate old_date6(4) old_date3(2) old_date(2) into

new_date in character mode.

Peter

Read only

Former Member
0 Likes
2,170

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

Read only

Former Member
0 Likes
2,171

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.

Read only

0 Likes
2,170

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

Read only

0 Likes
2,170

Hi,

when ur read data from file :- how many columns are there .

how ur going retrieve date before convertion.

Read only

0 Likes
2,170

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

Read only

0 Likes
2,170

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.