10-10-2007 11:41 AM
Hi ,
Can anyone send me BDC code on how to upload file from application server .
Please help me to complete my job.
Thanks.
10-10-2007 11:47 AM
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.
10-10-2007 12:06 PM
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
10-10-2007 12:10 PM
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>
10-10-2007 12:19 PM
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>
10-10-2007 12:37 PM
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
06-02-2011 4:51 PM