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.*// INITIALIZATIONINITIALIZATION.*服务器上下载文件的路径CONCATENATE '/usr/sap/' sy-sysid '/SYS/src/' INTO cons_source.*// START OF SELECTIONSTART-OF-SELECTION.PERFORM frm_ftp_file.FORM frm_ftp_file .DATA:l_dstlen TYPE i, "DESTINATION LENl_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 FUNCTIONID 'SOURCE' FIELD l_pw "PASS WORDID 'KEY' FIELD cons_key "THE KEY TO CREATE NEW PWID 'SCR' FIELD 'X'ID 'DESTINATION' FIELD l_pw "PASS WORDID 'DSTLEN' FIELD l_dstlen. "NEW PASS WORD LENDO 3 TIMES.* OPEN THE FTP SERVER.CALL FUNCTION 'FTP_CONNECT'EXPORTINGuser = 'username' "USERpassword = l_pw "PASS WORDhost = '192.168.1.10' rfc_destination = 'SAPFTPA' "DEFAULTIMPORTINGhandle = l_handleEXCEPTIONSnot_connected = 1OTHERS = 2.IF sy-subrc = 0.EXIT.ENDIF.ENDDO.IF sy-subrc <> 0.WRITE :/ sy-datum, sy-uzeit, sy-uname, 'CONNECT FTP FAILED!'. "MESSAGEGSTOP.ENDIF.* Change local directoryCLEAR 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 directoryIF 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 MODECLEAR 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 SERVERCLEAR 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'EXPORTINGhandle = 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'EXPORTINGhandle = l_handlecommand = pr_command* COMPRESS =* RFC_DESTINATION =* VERIFY =* IMPORTING* FILESIZE =* FILEDATE =* FILETIME =TABLESdata = ig_ftp_resultEXCEPTIONStcpip_error = 1command_error = 2data_error = 3OTHERS = 4.* DisconnectIF sy-subrc <> 0.pr_ret = '1'.CALL FUNCTION 'FTP_DISCONNECT'EXPORTINGhandle = l_handle.EXIT.ENDIF.ENDFORM. "FRM_FTP_COMMAND