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: 

problem writing file to FTP

former_member799868
Participant
0 Kudos

whan i am writing the file to FTP in foreground it is working fine.but in backgruond it is failing .what would be the problem...

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

How are you creating the file?

Darren

5 REPLIES 5

Former Member
0 Kudos

Hi,

How are you creating the file?

Darren

0 Kudos

i using the below code..

FORM ftpfinanceaccess_download USING p_host

p_user

p_password.

DATA :

dest LIKE rfcdes-rfcdest VALUE 'SAPFTP',

compress TYPE c VALUE 'N',

host(64) TYPE c.

DATA: hdl TYPE i.

DATA: BEGIN OF result OCCURS 0,

line(100) TYPE c,

END OF result.

DATA : key TYPE i VALUE 26101957,

dstlen TYPE i,

blob_length TYPE i.

host = p_host .

DESCRIBE FIELD p_password LENGTH dstlen IN CHARACTER MODE.

CALL 'AB_RFC_X_SCRAMBLE_STRING'

ID 'SOURCE' FIELD p_password ID 'KEY' FIELD key

ID 'SCR' FIELD 'X' ID 'DESTINATION' FIELD p_password

ID 'DSTLEN' FIELD dstlen.

CALL FUNCTION 'FTP_CONNECT'

EXPORTING

user = p_user

password = p_password

host = host

rfc_destination = dest

IMPORTING

handle = hdl

EXCEPTIONS

not_connected = 1

OTHERS = 2.

IF sy-subrc = 0.

CONCATENATE 'cd' ftppath INTO ftppath SEPARATED BY space .

CALL FUNCTION 'FTP_COMMAND'

EXPORTING

handle = hdl

command = ftppath

TABLES

data = result

EXCEPTIONS

command_error = 1

tcpip_error = 2.

IF sy-subrc = 0 .

CLEAR result .

REFRESH result .

CALL FUNCTION 'FTP_COMMAND'

EXPORTING

handle = hdl

command = 'ascii'

TABLES

data = result

EXCEPTIONS

command_error = 1

tcpip_error = 2.

IF sy-subrc = 0 .

DESCRIBE TABLE iresult LINES lines.

blob_length = lines * width .

clear : lines.

  • Delete the existing file

CONCATENATE 'del' ftpfile INTO delfile SEPARATED BY SPACE.

CALL FUNCTION 'FTP_COMMAND'

EXPORTING

handle = hdl

command = delfile

TABLES

data = result

EXCEPTIONS

command_error = 1

tcpip_error = 2.

*End of deleting the existing file

CALL FUNCTION 'FTP_R3_TO_SERVER'

EXPORTING

handle = hdl

fname = ftpfile

blob_length = blob_length

CHARACTER_MODE = 'X'

TABLES

TEXT = iresult

EXCEPTIONS

TCPIP_ERROR = 1

COMMAND_ERROR = 2

DATA_ERROR = 3

OTHERS = 4.

IF sy-subrc <> 0 .

WRITE 'Error in writing file to ftp' .

ELSE.

WRITE 'File downloaded on the ftp server successfully'.

ENDIF.

ENDIF.

ELSE.

WRITE : 'Path on ftp not found : ' , ftppath .

ENDIF.

CALL FUNCTION 'FTP_DISCONNECT'

EXPORTING

handle = hdl.

CALL FUNCTION 'RFC_CONNECTION_CLOSE'

EXPORTING

destination = 'SAPFTP'

EXCEPTIONS

OTHERS = 1.

ELSE.

WRITE 'Could not connect to ftp' .

ENDIF.

0 Kudos

Hi,

Try using destination SAPFTPA as this runs on the application server rather than the local client.

Regards,

Darren

0 Kudos

Hi Kranthi,

The code you provided is very useful for me.Do you mean ftppath is workpath in zout1 table based on interface id and ftpfile is the file that is to be sent to FTP server. Can you tell me about the statement CALL 'AB_RFC_X_SCRAMBLE_STRING'.What do you mean by KEY there.

Thanks,

venkatesh.

0 Kudos

Hi Darren,

The code provide by kranthi is very useful for me to write file to FTP server.Do you mean ftppath is workpath in zout1 table based on interface id and ftpfile is the file that is to be sent to FTP server. Can you tell me about the statement CALL 'AB_RFC_X_SCRAMBLE_STRING'.What do you mean by KEY in this subroutine..

the code is:

FORM ftpfinanceaccess_download USING p_host

p_user

p_password.

DATA :

dest LIKE rfcdes-rfcdest VALUE 'SAPFTP',

compress TYPE c VALUE 'N',

host(64) TYPE c.

DATA: hdl TYPE i.

DATA: BEGIN OF result OCCURS 0,

line(100) TYPE c,

END OF result.

DATA : key TYPE i VALUE 26101957,

dstlen TYPE i,

blob_length TYPE i.

host = p_host .

DESCRIBE FIELD p_password LENGTH dstlen IN CHARACTER MODE.

CALL 'AB_RFC_X_SCRAMBLE_STRING'

ID 'SOURCE' FIELD p_password ID 'KEY' FIELD key

ID 'SCR' FIELD 'X' ID 'DESTINATION' FIELD p_password

ID 'DSTLEN' FIELD dstlen.

CALL FUNCTION 'FTP_CONNECT'

EXPORTING

user = p_user

password = p_password

host = host

rfc_destination = dest

IMPORTING

handle = hdl

EXCEPTIONS

not_connected = 1

OTHERS = 2.

IF sy-subrc = 0.

CONCATENATE 'cd' ftppath INTO ftppath SEPARATED BY space .

CALL FUNCTION 'FTP_COMMAND'

EXPORTING

handle = hdl

command = ftppath

TABLES

data = result

EXCEPTIONS

command_error = 1

tcpip_error = 2.

IF sy-subrc = 0 .

CLEAR result .

REFRESH result .

CALL FUNCTION 'FTP_COMMAND'

EXPORTING

handle = hdl

command = 'ascii'

TABLES

data = result

EXCEPTIONS

command_error = 1

tcpip_error = 2.

IF sy-subrc = 0 .

DESCRIBE TABLE iresult LINES lines.

blob_length = lines * width .

clear : lines.

Delete the existing file

CONCATENATE 'del' ftpfile INTO delfile SEPARATED BY SPACE.

CALL FUNCTION 'FTP_COMMAND'

EXPORTING

handle = hdl

command = delfile

TABLES

data = result

EXCEPTIONS

command_error = 1

tcpip_error = 2.

*End of deleting the existing file

CALL FUNCTION 'FTP_R3_TO_SERVER'

EXPORTING

handle = hdl

fname = ftpfile

blob_length = blob_length

CHARACTER_MODE = 'X'

TABLES

TEXT = iresult

EXCEPTIONS

TCPIP_ERROR = 1

COMMAND_ERROR = 2

DATA_ERROR = 3

OTHERS = 4.

IF sy-subrc 0 .

WRITE 'Error in writing file to ftp' .

ELSE.

WRITE 'File downloaded on the ftp server successfully'.

ENDIF.

ENDIF.

ELSE.

WRITE : 'Path on ftp not found : ' , ftppath .

ENDIF.

CALL FUNCTION 'FTP_DISCONNECT'

EXPORTING

handle = hdl.

CALL FUNCTION 'RFC_CONNECTION_CLOSE'

EXPORTING

destination = 'SAPFTP'

EXCEPTIONS

OTHERS = 1.

ELSE.

WRITE 'Could not connect to ftp' .

ENDIF.

Thanks,

venkatesh.