ABAP:FTP Using SAP Functions
生活随笔
收集整理的這篇文章主要介紹了
ABAP:FTP Using SAP Functions
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
本文示例如何使用SAP FTP Function將文件從應用服務器傳輸?shù)搅硗庖粋€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路徑出現(xiàn)錯誤!'.
????? 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傳輸模式出現(xiàn)錯誤!'.
??? 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,? '文件傳輸中出現(xiàn)錯誤!'.
??? 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
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路徑出現(xiàn)錯誤!'.
????? 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傳輸模式出現(xiàn)錯誤!'.
??? 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,? '文件傳輸中出現(xiàn)錯誤!'.
??? 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
轉載于:https://www.cnblogs.com/zhumk/archive/2006/02/27/338987.html
總結
以上是生活随笔為你收集整理的ABAP:FTP Using SAP Functions的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Oracle] 数据排重
- 下一篇: “示范性高中”害死人呐!