ABAP 连接ftp 并且下载某个文件到本地路径下

DATA :  
        p_host   TYPE char64 VALUE '192.168.100.64 21',"  IP
        p_folder TYPE char255 VALUE '/aa/bb/',  "ftp 路径
        p_uname  TYPE char30 VALUE 'sys' , "用户名称
        p_pwd    TYPE char30 VALUE 'psword' . "用户密码

    DATA : dest     LIKE rfcdes-rfcdest  VALUE 'SAPFTP',
           compress TYPE c  VALUE 'N'.

    DATA: hdl     TYPE i,
          key     TYPE i VALUE 26101957,
          slen    TYPE i,
          cmd(80) TYPE c.

    slen = strlen( p_pwd ).

* "获取加密密码 保存到P_PWD
    CALL FUNCTION 'HTTP_SCRAMBLE'
      EXPORTING
        source      = p_pwd
        sourcelen   = slen
        key         = key
      IMPORTING
        destination = p_pwd.

* 连接ftp服务器
    CALL FUNCTION 'FTP_CONNECT'
      EXPORTING
        user            = p_uname
        password        = p_pwd
        host            = p_host
        rfc_destination = dest
      IMPORTING
        handle          = hdl.  "连接的句柄

"下载的操作  start   ...
 "执行FTP命令 CD 打开目标ftp的文件夹
"now open the target ftp folder
DATA :  ftp_url      TYPE char255 .
ftp_url = p_folder  . "拼接ftp url   比如要下载的文件在ftp 路径/aa/bb/ 下,那么 ftp_url = '/aa/bb'

"进入ftp要下载文件的路径
concatenate 'cd' ftp_url into cmd SEPARATED BY space."这个拼接是在cd后面加一个空格
CALL FUNCTION 'FTP_COMMAND'
  EXPORTING
    handle        = hdl
    command       = cmd
    compress      = compress
  TABLES
    data          = result
  EXCEPTIONS
    command_error = 1
    tcpip_error   = 2.
*LOOP AT result.
*  WRITE AT / result-line.
*ENDLOOP.
*REFRESH result.


DATA fname  like rcgiedial-iefile."本地路径
fname = 'C:\temp\'."下载目录  C:\temp  这个是你要下载到本地什么位置 
* 打开本地ftp文件夹
concatenate 'lcd' fname into cmd SEPARATED BY space." 同样拼接加一个空格
CALL FUNCTION 'FTP_COMMAND'
  EXPORTING
    handle        = hdl
    command       = cmd
    compress      = compress
  TABLES
    data          = result
  EXCEPTIONS
    command_error = 1
    tcpip_error   = 2.

*LOOP AT result.
*  WRITE AT / result-line.
*ENDLOOP.
*REFRESH result.

DATA :  ftp_filename      TYPE char255 .ut
ftp_filename = 'aa.DOCX' "这个就是你要下载的文件名称
"将ftp文件夹目标文件中放入本地文件   
CONCATENATE 'get ' ftp_filename INTO cmd SEPARATED BY space."同理不多说了
CALL FUNCTION 'FTP_COMMAND'
  EXPORTING
    handle        = hdl
    command       = cmd
    compress      = compress
  TABLES
    data          = result
  EXCEPTIONS
    command_error = 1
    tcpip_error   = 2.
*LOOP AT result.
*  WRITE AT / result-line.
*ENDLOOP.
*REFRESH result.


IF SY-SUBRC <> 0.
    message '下载失败,失败原因可能是C盘下没有temp路径,请建立再次下载'  TYPE  'I'.
ELSE.
    message '下载成功到C:\temp\路径下'  TYPE  'I'.
ENDIF.
*   断开FTP连接
CALL FUNCTION 'FTP_DISCONNECT'
  EXPORTING
    handle = hdl.
* 断开RFC链接
CALL FUNCTION 'RFC_CONNECTION_CLOSE'
  EXPORTING
    destination = dest
  EXCEPTIONS
    OTHERS      = 1.

根据提供的引用内容,ABAP中可以使用SMW0事务代码来上传文件。具体的实现可以参考以下步骤: 1. 首先,创建一个ABAP报表或者一个函数模块,其中包含一个上传文件的功能。 2. 在报表或者函数模块中,使用FORM语句定义一个名为FRM_EXCEL_SAVE的子程序,该子程序用于将文件保存到指定的路径。\[1\] 3. 同样,在报表或者函数模块中,使用FORM语句定义一个名为FRM_EXCEL_OPEN的子程序,该子程序用于打开指定的文件。\[2\] 4. 如果需要将数据导出到文件中,可以在报表或者函数模块中使用FORM语句定义一个名为FRM_DATA_EXPORT的子程序。\[3\] 5. 在主程序中,调用相应的子程序来实现文件上传功能。具体的步骤包括选择文件、指定文件路径、保存文件等。 总结起来,ABAP中可以通过定义子程序来实现文件上传功能,其中包括保存文件和打开文件的子程序。同时,如果需要将数据导出到文件中,可以定义一个导出数据的子程序。在主程序中,调用相应的子程序来实现文件上传功能。 #### 引用[.reference_title] - *1* *2* *3* [ABAP文件下传上载 用SMW0](https://blog.youkuaiyun.com/Wengyuyu1234/article/details/23356331)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值