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

Legacy file upload to SAP

Hi Gurus,

I have to upload a legacy file to SAP.

I am not aware of any details about this task yet.

I dont even know about the density of the data and the file type.

These will be provided shortly.

Just wanted to know in advance that, how to determine which one should be an ideal one among the various ways like BAPIs, LSMV, BDCs, etc.

Please give a detailed suggestion with reasons to choose among these ways.

This is my first assignment and it will be really helpful for me in my future tasks.

Regards,

Binay.

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

2 Answers

  • Best Answer
    Posted on Jul 31, 2008 at 04:26 AM

    Binay,

    Lsmw:if you data is less than 20000 than only you can preffred Lsmw.

    BDC:it is always good to use in session method no matter how much data you have and if your data is some 2-3k than you can preffer call transaction for fast processing.

    Bapi:transaction for which you are going to upload data if any BAPI is available for tha than you can use BAPI too.

    there is no specific reason at all what to use but yes you need to keep mind about their reason which i gave you above.

    i would suggest you to use BDC always for better error handling.

    Amit.

    Add a comment
    10|10000 characters needed characters exceeded

  • Posted on Jul 31, 2008 at 04:34 AM

    Hi

    see this code i had defined comments to understand the code

    ABAP code for uploading a TAB delimited file into an internal table. See code below for structures. The

    code is base on uploading a simple txt file.

    &----


    *& Report ZUPLOADTAB *

    *& *

    &----


    *& Example of Uploading tab delimited file *

    *& *

    &----


    REPORT zuploadtab .

    PARAMETERS: p_infile LIKE rlgrap-filename

    OBLIGATORY DEFAULT '/usr/sap/'..

    *DATA: ld_file LIKE rlgrap-filename.

    DATA: gd_file type string.

    *Internal tabe to store upload data

    TYPES: BEGIN OF t_record,

    name1 LIKE pa0002-vorna,

    name2 LIKE pa0002-name2,

    age TYPE i,

    END OF t_record.

    DATA: it_record TYPE STANDARD TABLE OF t_record INITIAL SIZE 0,

    wa_record TYPE t_record.

    *Internal table to upload data into

    DATA: BEGIN OF it_datatab OCCURS 0,

    row(500) TYPE c,

    END OF it_datatab.

    *Text version of data table

    TYPES: BEGIN OF t_uploadtxt,

    name1(10) TYPE c,

    name2(15) TYPE c,

    age(5) TYPE c,

    END OF t_uploadtxt.

    DATA: wa_uploadtxt TYPE t_uploadtxt.

    *String value to data in initially.

    DATA: wa_string(255) TYPE c.

    CONSTANTS: con_tab TYPE x VALUE '09'.

    *If you have Unicode check active in program attributes then you will

    *need to declare constants as follows:

    *class cl_abap_char_utilities definition load.

    *constants:

    • con_tab type c value cl_abap_char_utilities=>HORIZONTAL_TAB.

    ************************************************************************

    *AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_INFILE.

    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_infile.

    CALL FUNCTION 'WS_FILENAME_GET'

    EXPORTING

    def_filename = p_infile

    mask = ',*.txt.'

    mode = 'O'

    title = 'Upload File'(078)

    IMPORTING

    filename = p_infile

    EXCEPTIONS

    inv_winsys = 1

    no_batch = 2

    selection_cancel = 3

    selection_error = 4

    OTHERS = 5.

    ************************************************************************

    *START-OF-SELECTION

    START-OF-SELECTION.

    gd_file = p_infile.

    CALL FUNCTION 'GUI_UPLOAD'

    EXPORTING

    filename = gd_file

    has_field_separator = 'X' "file is TAB delimited

    TABLES

    data_tab = it_record

    EXCEPTIONS

    file_open_error = 1

    file_read_error = 2

    no_batch = 3

    gui_refuse_filetransfer = 4

    invalid_type = 5

    no_authority = 6

    unknown_error = 7

    bad_data_format = 8

    header_not_allowed = 9

    separator_not_allowed = 10

    header_too_long = 11

    unknown_dp_error = 12

    access_denied = 13

    dp_out_of_memory = 14

    disk_full = 15

    dp_timeout = 16

    OTHERS = 17.

    IF sy-subrc NE 0.

    write: 'Error ', sy-subrc, 'returned from GUI_UPLOAD FM'.

    skip.

    endif.

    • Alternative method, where by you split fields at each TAB after you

    • have returned the data. No point unless you dont have access to

    • GUI_UPLOAD but just included for information

    *

    • CALL FUNCTION 'GUI_UPLOAD'

    • EXPORTING

    • filename = gd_file

    • filetype = 'ASC'

    • TABLES

    • data_tab = it_datatab "ITBL_IN_RECORD[]

    • EXCEPTIONS

    • file_open_error = 1

    • OTHERS = 2.

    • IF sy-subrc NE 0.

    • ELSE.

    • LOOP AT it_datatab.

    • CLEAR: wa_string, wa_uploadtxt.

    • wa_string = it_datatab.

    • SPLIT wa_string AT con_tab INTO wa_uploadtxt-name1

    • wa_uploadtxt-name2

    • wa_uploadtxt-age.

    • MOVE-CORRESPONDING wa_uploadtxt TO wa_record.

    • APPEND wa_record TO it_record.

    • ENDLOOP.

    • ENDIF.

    ************************************************************************

    *END-OF-SELECTION

    END-OF-SELECTION.

    *!! Text data is now contained within the internal table IT_RECORD

    • Display report data for illustration purposes

    LOOP AT it_record INTO wa_record.

    WRITE:/ sy-vline,

    (10) wa_record-name1, sy-vline,

    (10) wa_record-name2, sy-vline,

    (10) wa_record-age, sy-vline.

    ENDLOOP.

    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.