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

Problem in the BDC program to upload the data from a flat file.

Former Member
0 Likes
510

Hi,

I am required to write a BDC program to upload the data from a flat file. The conditions are as mentioned below:-

1) Selection Screen will be prompted to user and user needs to provide:- File Path on presentation server (with F4 help for this obligatory parameter) and File Separator e.g. @,#,$,%,... etc(fields in the file will be separated by using this special character) or fields may be separated by tab(tab delimited).

2) Finally after the data is uploaded, following messages need to be displayed:-

a) Total Number of records successfully uploaded.

b) Session Name

c) Number of Sessions created.

Problem is when each record is fetched from flat file, the record needs to be split into individual fields separated by delimiter or in case tab separated, then proceeding in usual manner.

It would be great if you provide me either the logic, pseudocode, or sample code for this BDC program.

Thanks,

Hi,

I am required to write a BDC program to upload the data from a flat file. The conditions are as mentioned below:-

1) Selection Screen will be prompted to user and user needs to provide:- File Path on presentation server (with F4 help for this obligatory parameter) and File Separator e.g. @,#,$,%,... etc(fields in the file will be separated by using this special character) or fields may be separated by tab(tab delimited).

2) Finally after the data is uploaded, following messages need to be displayed:-

a) Total Number of records successfully uploaded.

b) Session Name

c) Number of Sessions created.

Problem is when each record is fetched from flat file, the record needs to be split into individual fields separated by delimiter or in case tab separated, then proceeding in usual manner.

It would be great if you provide me either the logic, pseudocode, or sample code for this BDC program.

Thanks,

3 REPLIES 3
Read only

Former Member
0 Likes
475

Hello,

Use this code for GUI_UPLOAD

CONSTANTS : lc_asc TYPE char10 VALUE 'ASC'. "function module filetype

DATA: lv_filenm TYPE string.

CLEAR lv_filenm.

MOVE v_flname TO lv_filenm.

*Call the function to get the file into an internal table.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = lv_filenm

filetype = lc_asc

TABLES

data_tab = i_flatfile

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 0.

*Display Message File not found.

MESSAGE i010 WITH lv_filenm.

LEAVE LIST-PROCESSING.

ENDIF.

FOR SPLIT FILE c_pip means '|'

IF i_flatfile[] IS NOT INITIAL.

LOOP AT i_flatfile INTO wa_flatfile.

SPLIT wa_flatfile-fdata AT c_pip

INTO wa_flupload-ekorg

wa_flupload-ktokk

wa_flupload-anred

wa_flupload-name1

wa_flupload-sortl

wa_flupload-stras

wa_flupload-ort01

wa_flupload-regio

wa_flupload-pstlz

wa_flupload-land1

wa_flupload-spras

wa_flupload-telf1

wa_flupload-telfx

wa_flupload-telf2

wa_flupload-lfurl

wa_flupload-remark

wa_flupload-parvw

wa_flupload-lifn2

wa_flupload-defpa.

APPEND wa_flupload TO i_flupload.

CLEAR : wa_flupload , wa_flatfile.

ENDLOOP.

Pass the delimiter to c_pip

Regards,

Vasanth

Read only

Former Member
0 Likes
475

Please press F1 on the ABAP statement SPLIT.

Rob

Read only

RichHeilman
Developer Advocate
Developer Advocate
0 Likes
475

Here is an example program, if you require the delimitor to be a TAB, then enter TAB on the selection screen, if you require the delimitor to be a comma, slash, pipe, whatever, then simply enter that value. This example is simply the uploading of the file, not the BDC, I assume that you know what to do once you have the data into the internal table.



REPORT zrich_0001.

TYPES: BEGIN OF ttab,
        rec TYPE string,
       END OF ttab.

TYPES: BEGIN OF tdat,
       fld1(10) TYPE c,
       fld2(10) TYPE c,
       fld3(10) TYPE c,
       fld4(10) TYPE c,
       END OF tdat.

DATA: itab TYPE TABLE OF ttab.
data: xtab like line of itab.
DATA: idat TYPE TABLE OF tdat.
data: xdat like line of idat.

DATA: file_str TYPE string.
DATA: delimitor TYPE string.

PARAMETERS: p_file TYPE localfile.
PARAMETERS: p_del(5) TYPE c.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

  DATA: ifiletab TYPE filetable.
  DATA: xfiletab LIKE LINE OF ifiletab.
  DATA: rc TYPE i.

  CALL METHOD cl_gui_frontend_services=>file_open_dialog
    CHANGING
      file_table = ifiletab
      rc         = rc.
  READ TABLE ifiletab INTO xfiletab INDEX 1.
  IF sy-subrc = 0.
    p_file = xfiletab-filename.
  ENDIF.


START-OF-SELECTION.

  TRANSLATE p_del TO UPPER CASE.
  CASE p_del.
    WHEN 'TAB'.
      delimitor = cl_abap_char_utilities=>horizontal_tab.
    WHEN others.
      delimitor = p_del.
  ENDCASE.


  file_str = p_file.

  CALL METHOD cl_gui_frontend_services=>gui_upload
    EXPORTING
      filename = file_str
    CHANGING
      data_tab = itab.



  LOOP AT itab into xtab.
    CLEAR xdat.
    SPLIT xtab-rec AT delimitor INTO xdat-fld1
                                     xdat-fld2
                                     xdat-fld3
                                     xdat-fld4.
    APPEND xdat to idat.
  ENDLOOP.


  LOOP AT idat into xdat.
    WRITE:/ xdat-fld1, xdat-fld2, xdat-fld3, xdat-fld4.
  ENDLOOP.

Regards,

Rich Heilman