Skip to Content
author's profile photo Former Member
Former Member

dataset sample code

Hi All!

I am having a .DAT file on the application server.Now i want to download into my internal tables using Datasets.

The format of the data is as below..

000123450987

The first 4 places represent one field

second 3 places represent another field

the last 5 places represent another field.

There is no separator in between.Can any body provide me the sample code for this requirement.

Regards

Pavan

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

3 Answers

  • Best Answer
    author's profile photo Former Member
    Former Member
    Posted on Jun 13, 2006 at 02:46 PM

    DATA: l_car_ret(1) TYPE c, " To store carriage return character

    l_lin_fed(1) TYPE c, " To store Line feed character.

    OPEN DATASET p_file FOR INPUT

    IN TEXT MODE

    ENCODING DEFAULT.

    CLEAR l_car_ret.

    CLEAR l_lin_fed.

    MOVE cl_abap_char_utilities=>cr_lf+0(1) TO l_car_ret.

    MOVE cl_abap_char_utilities=>cr_lf+1(1) TO l_lin_fed.

    DO.

    TRY.

    • Read the current row of the file

    READ DATASET p_file INTO w_filedata.

    IF sy-subrc NE 0.

    EXIT. "End of file entries

    ENDIF.

    CATCH cx_root.

    • 'Invalid input file format :Extraneous column'(048).

    ENDTRY.

    • Remove the trailing carriage return character, if any

    SEARCH w_filedata FOR l_car_ret.

    IF sy-subrc EQ 0.

    CLEAR l_pos.

    MOVE sy-fdpos TO l_pos.

    REPLACE w_filedata+l_pos(1) IN w_filedata WITH space.

    ENDIF.

    • Remove the trailing line feed character, if any

    SEARCH w_filedata FOR l_lin_fed.

    IF sy-subrc EQ 0.

    CLEAR l_pos.

    MOVE sy-fdpos TO l_pos.

    REPLACE w_filedata+l_pos(1) IN w_filedata WITH space.

    ENDIF.

    w_data-field1 = w_filedata+0(4).

    w_data-field2 = w_filedata+4(3).

    w_data-field3 = w_filedata+7(5).

    APPEND w_data TO t_data.

    CLEAR w_data.

    ENDDO.

    CLOSE DATASET p_file.

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jun 13, 2006 at 02:47 PM

    Hi

    Try following:

    data : itab(255) occurs 0 with header line.

    data : begin of itab1 occurs 0,

    f1(4),

    f2(3),

    f3(5),

    end of itab1.

    open data set <name> for input in text mode encoding default.

    do.

    read dataset <name> into itab.

    if sy-subrc <> 0.

    exit.

    endif.

    append itab.

    clear itab.

    endloop.

    close dataset <name>.

    loop at itab.

    itab1-f1 = itab+0(4).

    itab1-f2 = itab+4(3).

    itab1-f3 = itab+7(5).

    append itab1.

    clear itab1.

    endloop.

    Sreedhar

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jun 13, 2006 at 02:47 PM

    FORM read_file.

    data : BEGIN OF IT_LINE ,

    VBELN(10) TYPE C,

    BOLNR(35) TYPE C,

    TRAID(20) TYPE C,

    CARR_CHARGES(20) TYPE C,

    CURR_CODE(3) TYPE C,

    ORD_CNT(4) TYPE C,

    EXP_CNT(4) TYPE C,

    WADAT_IST(10) TYPE C,

    END OF IT_LINE.

    DATA : lv_len TYPE i, " String length

    OPEN DATASET p_filename FOR INPUT IN TEXT MODE

    ENCODING DEFAULT

    MESSAGE v_mess.

    if sy-subrc <> 0.

    exit.

    endif.

    *--file opened.

    DO.

    READ DATASET p_filename INTO it_line.

    IF sy-subrc = 0.

    APPEND it_line.

    CLEAR it_line.

    ELSE.

    EXIT.

    ENDIF.

    ENDDO.

    As your input file is a fixed length file(i mean each field will be of specific length always) you can define an internal table with those fields of specified length & if you use READ dataset, automatically those fields will be populated properly in the IT_LINE table.no need to take another internal table to sort out.

    you can use 1 internal table to read the values from the file & the values will go and fit in the table fields.

    regards

    srikanth

    added comments

    Message was edited by: Srikanth Kidambi

    Add a comment
    10|10000 characters needed characters exceeded

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.