Application Development 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: 

BDC code for uploading file from application server.

Former Member
0 Kudos

Hi ,

Can anyone send me BDC code on how to upload file from application server .

Please help me to complete my job.

Thanks.

6 REPLIES 6

Former Member
0 Kudos

Hi,

You can use this FM RZL_READ_FILE_LOCAL

You need to pass the Directory and the file name and the FM will pass you an Internal Table with all the file information -;)

Works almost like using GUI_UPLOAD but with the app server

Please check this links for sample codes.

http://www.sapdevelopment.co.uk/file/file_uploadsap.htm

http://www.sapdevelopment.co.uk/file/file_uptabsap.htm

http://www.sapdevelopment.co.uk/file/file_updown.htm

Thanks,

Reward If Helpful.

Former Member
0 Kudos

Hi,

Go through this blog.

http://allaboutsap.blogspot.com/2007/03/bdc-explained-part-2-sample-program-for.html

Reward if helpful.

Regards,

Harini.S

Former Member
0 Kudos

Hi

<b>Upload Flat file from Presentation Server to SAP R/3</b>

CALL FUNCTION ‘GUI_UPLOAD'

EXPORTING

CODEPAGE = ‘IBM'

FILENAME = P_UFILE

FILETYPE = 'DAT'

TABLES

DATA_TAB = INT_TAB

EXCEPTIONS

CONVERSION_ERROR = 1

FILE_OPEN_ERROR = 2

FILE_READ_ERROR = 3

INVALID_TYPE = 4

NO_BATCH = 5

UNKNOWN_ERROR = 6

INVALID_TABLE_WIDTH = 7

GUI_REFUSE_FILETRANSFER = 8

CUSTOMER_ERROR = 9

OTHERS = 10 .

IF SY-SUBRC NE 0.

MESSAGE E999(FR) WITH 'ERROR IN FILE UPLOAD'.

ENDIF.

<b>Upload file from application server to SAP R/3</b>

Open the the application server file

OPEN DATASET <dsn> FOR INPUT <mode>

Read the data from application server file

READ DATASET <dsn> INTO <wa>

And then close the application server file

CLOSE DATASET <dsn>

<b>Rewar dif usefull</b>

Former Member
0 Kudos

REPORT zrs NO STANDARD PAGE HEADING.

*-- Variable declaratins

DATA: fname LIKE rlgrap-filename.

DATA: wa_string(255) TYPE c.

constants: con_tab type c value cl_abap_char_utilities=>HORIZONTAL_TAB.

TYPES:BEGIN OF t_mat,

matnr(10),

desc(10),

uom(5),

END OF t_mat.

*-- Work area declaration.

DATA : i_mat TYPE TABLE OF t_mat.

DATA: i_mat_temp TYPE TABLE OF t_mat.

DATA : wa_mat TYPE t_mat.

DATA : wa_matstr TYPE t_mat.

INCLUDE bdcrecxx.

START-OF-SELECTION.

CALL FUNCTION 'UPLOAD'

EXPORTING

  • CODEPAGE = ' '

  • FILENAME = ' '

filetype = 'DAT'

  • ITEM = ' '

  • FILEMASK_MASK = ' '

  • FILEMASK_TEXT = ' '

  • FILETYPE_NO_CHANGE = ' '

  • FILETYPE_NO_CHANGE = ' '

  • FILEMASK_ALL = ' '

  • FILETYPE_NO_SHOW = ' '

  • LINE_EXIT = ' '

  • USER_FORM = ' '

  • USER_PROG = ' '

  • SILENT = 'S'

  • IMPORTING

  • FILESIZE =

  • CANCEL =

  • ACT_FILENAME =

  • ACT_FILETYPE =

TABLES

data_tab = i_mat

EXCEPTIONS

conversion_error = 1

invalid_table_width = 2

invalid_type = 3

no_batch = 4

unknown_error = 5

gui_refuse_filetransfer = 6

OTHERS = 7.

IF sy-subrc <> 0.

WRITE:/ 'Internal Table not populated.'.

ENDIF.

**--- Name of file inapplication server

fname = 'bdcdata.txt'.

OPEN DATASET fname FOR OUTPUT IN TEXT MODE encoding default. " encoding default not in 4.0b

IF sy-subrc <> 0.

WRITE: / 'Error opening file'.

ENDIF.

**---Transfering data from internal table to dataset

LOOP AT i_mat INTO wa_mat.

TRANSFER wa_mat TO fname.

ENDLOOP.

CLOSE DATASET fname.

CLEAR i_mat.

CLEAR wa_mat.

PERFORM open_group.

**-----Opening dataset for reading

OPEN DATASET fname FOR INPUT IN TEXT MODE encoding default.

        • Reading the file from application server

DO.

READ DATASET fname INTO wa_string.

IF sy-subrc <> 0.

EXIT.

ENDIF.

  • SPLIT wa_string AT con_tab INTO TABLE i_mat_temp.

SPLIT wa_string AT con_tab into table i_mat_temp.

LOOP AT i_mat_temp INTO wa_mat.

APPEND wa_mat TO i_mat.

ENDLOOP.

ENDDO.

CLOSE DATASET fname.

LOOP AT i_mat INTO wa_mat.

PERFORM bdc_dynpro USING 'SAPLMGMM' '0060'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RMMG1-MTART'.

PERFORM bdc_field USING 'RMMG1-MATNR'

wa_mat-matnr.

PERFORM bdc_field USING 'RMMG1-MBRSH'

'W'.

PERFORM bdc_field USING 'RMMG1-MTART'

'FERT'.

PERFORM bdc_dynpro USING 'SAPLMGMM' '0070'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTR'.

PERFORM bdc_field USING 'BDC_CURSOR'

'MSICHTAUSW-KZSEL(01)'.

PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(01)'

'X'.

PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'BDC_SUBSCR'

'SAPLMGMM'

& ' 2000TABFRA1'.

PERFORM bdc_field USING 'BDC_SUBSCR'

'SAPLMGD1'

& ' 1002SUB1'.

PERFORM bdc_field USING 'MAKT-MAKTX'

wa_mat-desc.

PERFORM bdc_field USING 'BDC_SUBSCR'

'SAPLMGD1'

& ' 2001SUB2'.

PERFORM bdc_field USING 'BDC_CURSOR'

'MARA-MEINS'.

PERFORM bdc_field USING 'MARA-MEINS'

wa_mat-uom.

PERFORM bdc_field USING 'BDC_SUBSCR'

'SAPLMGD1'

& ' 2561SUB3'.

PERFORM bdc_field USING 'BDC_SUBSCR'

'SAPLMGD1'

& ' 2007SUB4'.

PERFORM bdc_field USING 'BDC_SUBSCR'

'SAPLMGD1'

& ' 2005SUB5'.

PERFORM bdc_field USING 'BDC_SUBSCR'

'SAPLMGD1'

& ' 2011SUB6'.

PERFORM bdc_dynpro USING 'SAPLSPO1' '0300'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=YES'.

PERFORM bdc_transaction USING 'MM01'.

REFRESH bdcdata.

ENDLOOP.

PERFORM close_group.

<b>Hope this is helpful, Do reward.</b>

Former Member
0 Kudos

Hi,

Here a short example with both: up/down fro´m Appl/praesen-Server.

TABLES: MARA.

*

DATA: DATEI_A(30) TYPE C VALUE '/tmp/matnr.txt'.

DATA: DATEI_PC TYPE STRING VALUE 'C:MATNR.TXT'.

*

TYPES: BEGIN OF IMARA,

MATNR LIKE MARA-MATNR,

MTART LIKE MARA-MATNR,

END OF IMARA.

*

DATA: ITAB TYPE TABLE OF IMARA WITH HEADER LINE.

DATA: ITAB_READ TYPE TABLE OF IMARA WITH HEADER LINE.

DATA: ITAB_UPLOAD TYPE TABLE OF IMARA WITH HEADER LINE.

*

START-OF-SELECTION.

*

SELECT MATNR MTART INTO TABLE ITAB FROM MARA UP TO 10 ROWS.

*

  • PERFORM DATEI_AUSGEBEN.

  • PERFORM DATEI_EINLESEN.

PERFORM DATEI_DOWNLOAD.

  • PERFORM DATEI_UPLOAD.

*

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

FORM DATEI_AUSGEBEN.

*

OPEN DATASET DATEI_A FOR OUTPUT IN TEXT MODE.

IF SY-SUBRC NE 0. MESSAGE E001. STOP. ENDIF.

*

LOOP AT ITAB.

*

TRANSFER ITAB TO DATEI_A.

*

ENDLOOP.

*

CLOSE DATASET DATEI_A.

IF SY-SUBRC NE 0. MESSAGE E001. STOP. ENDIF.

*

ENDFORM. "DATEI_AUSGEBEN

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

FORM DATEI_EINLESEN.

*

*

OPEN DATASET DATEI_A FOR INPUT IN TEXT MODE.

IF SY-SUBRC NE 0. MESSAGE E001. STOP. ENDIF.

*

DO.

*

READ DATASET DATEI_A INTO ITAB_READ.

*

IF SY-SUBRC <> 0. EXIT. ENDIF.

*

APPEND ITAB_READ.

*

ENDDO.

*

CLOSE DATASET DATEI_A.

*

IF SY-SUBRC NE 0. MESSAGE E001. STOP. ENDIF.

*

WRITE: / 'INPUT:'.

LOOP AT ITAB_READ. WRITE: / ITAB_READ. ENDLOOP.

*

ENDFORM. "DATEI_EINLESEN

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

FORM DATEI_DOWNLOAD.

  • Datei downloaden

CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD

EXPORTING

FILENAME = DATEI_PC

FILETYPE = 'ASC'

CHANGING

DATA_TAB = ITAB[]

EXCEPTIONS

FILE_WRITE_ERROR = 1

NO_BATCH = 2

GUI_REFUSE_FILETRANSFER = 3

INVALID_TYPE = 4

NO_AUTHORITY = 5

UNKNOWN_ERROR = 6

HEADER_NOT_ALLOWED = 7

SEPARATOR_NOT_ALLOWED = 8

FILESIZE_NOT_ALLOWED = 9

HEADER_TOO_LONG = 10

DP_ERROR_CREATE = 11

DP_ERROR_SEND = 12

DP_ERROR_WRITE = 13

UNKNOWN_DP_ERROR = 14

ACCESS_DENIED = 15

DP_OUT_OF_MEMORY = 16

DISK_FULL = 17

DP_TIMEOUT = 18

FILE_NOT_FOUND = 19

DATAPROVIDER_EXCEPTION = 20

CONTROL_FLUSH_ERROR = 21

NOT_SUPPORTED_BY_GUI = 22

ERROR_NO_GUI = 23

OTHERS = 24.

*

IF SY-SUBRC NE 0. MESSAGE E001. STOP. ENDIF.

*

ENDFORM. "DATEI_DOWNLOAD

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

FORM DATEI_UPLOAD.

*

CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD

EXPORTING

FILENAME = DATEI_PC

FILETYPE = 'ASC'

CHANGING

DATA_TAB = ITAB_UPLOAD[]

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

NOT_SUPPORTED_BY_GUI = 17

ERROR_NO_GUI = 18

OTHERS = 19.

*

IF SY-SUBRC NE 0. MESSAGE E001. STOP. ENDIF.

*

WRITE: / 'UPLOAD:'.

LOOP AT ITAB_UPLOAD. WRITE: / ITAB_UPLOAD. ENDLOOP.

*

ENDFORM. "datei_upload

Hope it helps.

Regards, Dieter

Former Member
0 Kudos

This message was moderated.