Skip to Content

File upload

Hi, kindly help me out the following. suppose when i am uploading the test file to Internal table the data is not in proper way at that time i need to throw an error message data is corrupted. how can i identify the data is not in proper way. For reference i am giving the code belo

PARAMETERS: p_file TYPE rlgrap-filename.

CONCATENATE p_file text-007 sy-datum '.txt' INTO file.

OPEN DATASET file FOR INPUT IN TEXT MODE ENCODING DEFAULT.

IF sy-subrc = 0.

DO.

READ DATASET file INTO gs_file.

IF sy-subrc = 0.

APPEND gs_file TO gt_file.

CLEAR gs_file.

ELSE.

EXIT.

ENDIF.

ENDDO.

ELSE.

MESSAGE e010(Zmsg).

ENDIF.

ENDFORM.

Thanks In Advance

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

1 Answer

  • Posted on Dec 16, 2011 at 06:05 AM

    try this out

    
    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.