*&---------------------------------------------------------------------* *& Report ZPRUEBA_2 *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZPRUEBA_2. PARAMETERS: p_infile LIKE rlgrap-filename OBLIGATORY DEFAULT ''. DATA: gv_file type string. TYPES: BEGIN OF ty_tab, campo1(300), campo2(30), campo3(30), END OF ty_tab. DATA: it_datos TYPE STANDARD TABLE OF ty_tab INITIAL SIZE 0, wa_datos TYPE ty_tab, itab like it_datos. *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. gv_file = p_infile. CALL FUNCTION 'GUI_UPLOAD' EXPORTING filename = gv_file * has_field_separator = ';' TABLES data_tab = it_datos 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 = gv_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_datos. * APPEND wa_datos TO it_datos. * ENDLOOP. * ENDIF. *LOOP AT it_datos INTO wa_datos. * * split wa_datos-campo1 at ';' into itab. * *ENDLOOP. ************************************************************************ *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_datos INTO wa_datos. WRITE:/ sy-vline, wa_datos-campo1, sy-vline, wa_datos-campo2, sy-vline, wa_datos-campo3, sy-vline. ENDLOOP.