ABAP连接FTP服务器

DATA: BEGIN OF ig_ftp_result OCCURS 0, line(100), END OF ig_ftp_result. DATA: l_path(128) TYPE c. "文件路径,必须以/结尾 DATA: l_filename(128) TYPE c. "文件名 DATA: l_ftpcommand(100) TYPE c. "FTP命令 DATA: l_handle TYPE i. "HAND "源路径,必须以/结尾 DATA: cons_source(128) TYPE c . " VALUE '/usr/sap/SY-SYSID/SYS/src/'. DATA: cons_dens LIKE zftpt-zpath. "目标路径 CONSTANTS cons_key TYPE i VALUE 26101957. *// INITIALIZATION INITIALIZATION. *服务器上下载文件的路径 CONCATENATE '/usr/sap/' sy-sysid '/SYS/src/' INTO cons_source. *// START OF SELECTION START-OF-SELECTION. PERFORM frm_ftp_file. FORM frm_ftp_file . DATA: l_dstlen TYPE i, "DESTINATION LEN l_pw(64) TYPE c. "密码 * 连接FTP服务器 l_pw = 'password'. *-- FTP_CONNECT requires an encrypted password to work * CREATE THE NEW PW BASE ON LOGIN FTP PASS WORD. CALL 'AB_RFC_X_SCRAMBLE_STRING' "PASS WORD BUILD FUNCTION ID 'SOURCE' FIELD l_pw "PASS WORD ID 'KEY' FIELD cons_key "THE KEY TO CREATE NEW PW ID 'SCR' FIELD 'X' ID 'DESTINATION' FIELD l_pw "PASS WORD ID 'DSTLEN' FIELD l_dstlen. "NEW PASS WORD LEN DO 3 TIMES. * OPEN THE FTP SERVER. CALL FUNCTION 'FTP_CONNECT' EXPORTING user = 'username' "USER password = l_pw "PASS WORD host = '192.168.1.10' rfc_destination = 'SAPFTPA' "DEFAULT IMPORTING handle = l_handle EXCEPTIONS not_connected = 1 OTHERS = 2. IF sy-subrc = 0. EXIT. ENDIF. ENDDO. IF sy-subrc <> 0. WRITE :/ sy-datum, sy-uzeit, sy-uname, 'CONNECT FTP FAILED!'. "MESSAGEG STOP. ENDIF. * Change local directory CLEAR l_ftpcommand. CONCATENATE 'lcd' cons_source INTO l_ftpcommand SEPARATED BY space. PERFORM frm_ftp_command USING l_ftpcommand pr_return. IF pr_return = '1'. WRITE:/ sy-datum, sy-uzeit, sy-uname, 'FTP改变本地路径错误!'. STOP. ENDIF. * Change ftp directory IF cons_dens <> ''. CLEAR l_ftpcommand. CONCATENATE 'cd' cons_dens INTO l_ftpcommand SEPARATED BY space. PERFORM frm_ftp_command USING l_ftpcommand pr_return. IF pr_return = '1'. WRITE:/ sy-datum, sy-uzeit, sy-uname, '改变FTP路径出现错误!'. STOP. ENDIF. ENDIF. * Change TRANSFER MODE CLEAR l_ftpcommand. * l_ftpcommand = 'binary'. l_ftpcommand = 'ascii'. PERFORM frm_ftp_command USING l_ftpcommand pr_return. IF pr_return = '1'. WRITE:/ sy-datum, sy-uzeit, sy-uname, '改变FTP传输模式出现错误!'. STOP. ENDIF. * Put File into FTP SERVER CLEAR l_ftpcommand. CONCATENATE 'put' l_filename INTO l_ftpcommand SEPARATED BY space. PERFORM frm_ftp_command USING l_ftpcommand pr_return. IF pr_return = '1'. WRITE:/ sy-datum, sy-uzeit, sy-uname, '文件传输中出现错误!'. STOP. ENDIF. * 断开FTP服务器 CALL FUNCTION 'FTP_DISCONNECT' EXPORTING handle = l_handle. WRITE:/ sy-datum, sy-uzeit, sy-uname, '文件传输成功!'. ENDFORM. " FRM_FTP_FILE ************************************************************************ *& FORM FRM_FTP_COMMAND * ************************************************************************ *& FTP Command * ************************************************************************ FORM frm_ftp_command USING pr_command pr_ret. CALL FUNCTION 'FTP_COMMAND' EXPORTING handle = l_handle command = pr_command * COMPRESS = * RFC_DESTINATION = * VERIFY = * IMPORTING * FILESIZE = * FILEDATE = * FILETIME = TABLES data = ig_ftp_result EXCEPTIONS tcpip_error = 1 command_error = 2 data_error = 3 OTHERS = 4 . * Disconnect IF sy-subrc <> 0. pr_ret = '1'. CALL FUNCTION 'FTP_DISCONNECT' EXPORTING handle = l_handle. EXIT. ENDIF. ENDFORM. "FRM_FTP_COMMAND

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值