gaofeng0210 发表于 2015-11-6 11:11:46

ABAP连接FTP服务器

  DATA: BEGIN OF ig_ftp_result OCCURS 0,line(100),END OF ig_ftp_result.DATA: l_path(128)       TYPE c.&quot;文件路径,必须以/结尾DATA: l_filename(128)   TYPE c.&quot;文件名DATA: l_ftpcommand(100) TYPE c.&quot;FTP命令DATA: l_handle          TYPE i.               &quot;HAND&quot;源路径,必须以/结尾DATA: cons_source(128) TYPE c . &quot; VALUE '/usr/sap/SY-SYSID/SYS/src/'.DATA:cons_dens LIKE zftpt-zpath.                      &quot;目标路径CONSTANTS cons_key TYPE iVALUE 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,               &quot;DESTINATION LENl_pw(64)          TYPE c.               &quot;密码* 连接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'         &quot;PASS WORD BUILD FUNCTIONID 'SOURCE'      FIELD l_pw         &quot;PASS WORDID 'KEY'         FIELD cons_key      &quot;THE KEY TO CREATE NEW PWID 'SCR'         FIELD 'X'ID 'DESTINATION' FIELD l_pw         &quot;PASS WORDID 'DSTLEN'      FIELD l_dstlen.      &quot;NEW PASS WORD LENDO 3 TIMES.*   OPEN THE FTP SERVER.CALL FUNCTION 'FTP_CONNECT'EXPORTINGuser            = 'username'   &quot;USERpassword      = l_pw             &quot;PASS WORDhost            = '192.168.1.10'   rfc_destination = 'SAPFTPA'      &quot;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!'.            &quot;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.                  &quot; 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.                  &quot;FRM_FTP_COMMAND
页: [1]
查看完整版本: ABAP连接FTP服务器