FTP服务器文件重命名

*程序逻辑结构

*1. 查询FTP链接配置信息表获取源FTP及目标FTP登陆信息

*2. 建立源系统FTP链接

*3. 将源FTP服务器传输编码方式转换为ASCII

*4. 建立目标系统FTP链接

*5. 将目标FTP服务器传输编码方式转换为ASCII

*6. 将传输文件列表中源FTP目录下的源文件名重命名

*7. 关闭源FTP链接

*8. 关闭目标FTP链接

*9. 关闭RFC远程链接

配置表

1f07a5ee4efd4991af19e372255c33a0.jpeg

5b1aec3f465df1730973fc903982aa90.png

6e9709064c7d6714e94e89cdc993de8f.jpeg

545f35798601c696470456bad5c0f39f.jpeg

参数

57962967dba5d9ab06cf15a5fd2429da.jpeg

定义

0d46d1b3176e00eb442c5566e2b291f1.jpeg

查询获取登录信息

e8da231ec36ba1af0c7edeec02dd962f.jpeg

建立链接

079975338a7bc41bf2156c6228cb0620.jpeg

转码

fef34325a74a5d88e8c00c53339a8153.jpeg

将传输文件列表中源FTP目录下的源文件名重命名

a59071c57560602d6e7d9f1e543aaf3d.jpeg

5d2dabb50570cd73eb3b30f5b8173093.jpeg

关闭源 链接

e2f16e497ce8852e31f7ed46981727fd.png

afc57273fa7c9355e69ba5aa04b733e7.png

ff50ec29e5c3d3f00f6367660a0aeb02.jpeg

代码:

function zlm_frpmt_ftp_rename.

*"----------------------------------------------------------------------

*"*"Local Interface:

*"  IMPORTING

*"     REFERENCE(I_SOURCE_NAME) TYPE  CHAR50

*"     REFERENCE(I_NEW_NAME) TYPE  CHAR40

*"     REFERENCE(I_DES_NAME) TYPE  CHAR100

*"     REFERENCE(I_DEST) TYPE  CHAR10 OPTIONAL

*"  EXCEPTIONS

*"      FILE_IS_NOT_FOUND

*"      FTP_CONNECT_FAILD

*"      FTP_CHANGE_CODE_FAILD

*"      FTP_CLOSE_FAILD

*"      CAN_NOT_GET_CONNECTION_INFOR

*"      FTP_RUN_RENAME_COMMAND_FAILD

*"----------------------------------------------------------------------

*程序逻辑结构

*1. 查询FTP链接配置信息表获取源FTP及目标FTP登陆信息

*2. 建立源系统FTP链接

*3. 将源FTP服务器传输编码方式转换为ASCII

*4. 建立目标系统FTP链接

*5. 将目标FTP服务器传输编码方式转换为ASCII

*6. 将传输文件列表中源FTP目录下的源文件名重命名

*7. 关闭源FTP链接

*8. 关闭目标FTP链接

*9. 关闭RFC远程链接

*-----------------------------------------------------------------------

**************************工作区声明区域********************************

  types: begin of text,

         line(120) type c,

         end of text.

  data:

        l_wa_login        type zlm_login_detail.                        "FTP登陆信息配置结构

*        l_wa_file_list    TYPE zlm_file_list.                           "传输文件结构

***************************内表声明区域*********************************

  data:

        l_tab_result       type table of text with header line.         "返回文本

***************************变量声明区域*********************************

  data:

       l_handle_s         type i,                                       "源FTP连接句柄

       l_handle_d         type i,                                       "目标FTP连接句柄

       l_dest             type zlm_dest,

       l_str_length       type i,                                       "密码长度

       l_key              type i value 26101957,                        "关键字

       l_password(30)     type c.                                       "密码

  data:

       l_ftp_command(500) type c,                                      "ftp命令

       l_file_dir         type string,

       l_source_name      type string,                                 "源文件名

       l_new_name         type string.                                 "新文件名

***************************常量声明区域*********************************

  constants:

        con_ftp_command_rename(6) type c value 'rename',

        con_ascii(5)      type c value 'ascii'.

******************************程序逻辑区域******************************

*"---------------------------------------------------------------------*

*" 1. 查询FTP链接配置信息表获取源FTP及目标FTP登陆信息

*"---------------------------------------------------------------------*

  if i_dest is initial.                                             "如果输入参数不为空值

    l_dest = 'SAPFTPA'.

  else.

    l_dest = i_dest.

  endif.

  select single * from zlm_login_detail into l_wa_login

            where dest = l_dest.

  if sy-subrc <> 0.

    raise can_not_get_connection_infor.

  endif.

*"---------------------------------------------------------------------*

*" 2. 建立源系统FTP链接

*"---------------------------------------------------------------------*

  l_str_length = strlen( l_wa_login-s_password ).

  call function 'HTTP_SCRAMBLE'

    exporting

      source      = l_wa_login-s_password                               "密码

      sourcelen   = l_str_length                                        "长度

      key         = l_key                                               "关键字

    importing

      destination = l_password.                                         "密码

  call function 'FTP_CONNECT'

    exporting

      user            = l_wa_login-s_username                           "用户名

      password        = l_password                                      "密码

      host            = l_wa_login-s_hostip                             "IP地址

      rfc_destination = l_wa_login-dest                                 "RFC逻辑目标

    importing

      handle          = l_handle_s                                      "源FTP连接句柄

    exceptions

      not_connected   = 1.

  if sy-subrc <> 0.

    raise ftp_connect_faild.

  endif.

*"---------------------------------------------------------------------*

*" 3. 将源FTP服务器传输编码方式转换为ASCII

*"---------------------------------------------------------------------*

  call function 'FTP_COMMAND'

    exporting

      handle  = l_handle_s                                              "源FTP连接句柄

      command = con_ascii                                               "编码方式

    tables

      data    = l_tab_result                                            "返回文本

    exceptions

      others  = 1.

  if sy-subrc <> 0.

    raise ftp_change_code_faild.

  endif.

*"---------------------------------------------------------------------*

*" 4. 建立目标系统FTP链接

*"---------------------------------------------------------------------*

  l_str_length = strlen( l_wa_login-p_password ).

  call function 'HTTP_SCRAMBLE'

    exporting

      source      = l_wa_login-p_password                               "密码

      sourcelen   = l_str_length                                        "长度

      key         = l_key                                               "关键字

    importing

      destination = l_password.                                         "密码

  call function 'FTP_CONNECT'

    exporting

      user            = l_wa_login-p_username                           "用户名

      password        = l_password                                      "密码

      host            = l_wa_login-p_hostip                             "IP地址

      rfc_destination = l_wa_login-dest                                 "RFC逻辑目标

    importing

      handle          = l_handle_d                                      "目标FTP连接句柄

    exceptions

      not_connected   = 1.

  if sy-subrc <> 0.

    raise ftp_connect_faild.

  endif.

*"---------------------------------------------------------------------*

*" 5. 将目标FTP服务器传输编码方式转换为ASCII

*"---------------------------------------------------------------------*

  call function 'FTP_COMMAND'

    exporting

      handle  = l_handle_d                                              "目标FTP连接句柄

      command = con_ascii                                               "编码方式

    tables

      data    = l_tab_result                                            "返回文本

    exceptions

      others  = 1.

  if sy-subrc <> 0.

    raise ftp_change_code_faild.

  endif.

*"---------------------------------------------------------------------*

*" 6. 将传输文件列表中源FTP目录下的源文件名重命名

*"---------------------------------------------------------------------*

*   读取FTP上文件路径

  select single des_addr into l_file_dir

    from zftp_config

    where des_name = i_des_name.

  if sy-subrc <> 0.

    raise file_is_not_found.

  endif.

*   拼接源文件全路径

  concatenate l_file_dir

              i_source_name into l_source_name.

*   拼接新文件全路径

  concatenate l_file_dir

              i_new_name    into l_new_name.

*   拼接ftp_command文件重命名命令

  concatenate con_ftp_command_rename

              l_source_name

              l_new_name

              into l_ftp_command

              separated by space.

*   启动FTP命令

  call function 'FTP_COMMAND'

    exporting

      handle  = l_handle_d                                              "目标FTP连接句柄

      command = l_ftp_command                                               "编码方式

    tables

      data    = l_tab_result                                            "返回文本

    exceptions

      others  = 1.

  if sy-subrc <> 0.

    raise ftp_run_rename_command_faild.

  endif.

*"---------------------------------------------------------------------*

*" 7. 关闭源FTP链接

*"---------------------------------------------------------------------*

  call function 'FTP_DISCONNECT'

    exporting

      handle = l_handle_s.                                              "源FTP连接句柄

*"---------------------------------------------------------------------*

*" 8. 关闭目标FTP链接

*"---------------------------------------------------------------------*

  call function 'FTP_DISCONNECT'

    exporting

      handle = l_handle_d.                                              "目标FTP连接句柄

*"---------------------------------------------------------------------*

*" 9. 关闭RFC远程链接

*"---------------------------------------------------------------------*

  call function 'RFC_CONNECTION_CLOSE'

    exporting

      destination = l_dest                                              "RFC远程连接

    exceptions

      others      = 1.

  if sy-subrc <> 0.

    raise ftp_close_faild.

  endif.

endfunction.

66ff1c268ad144ae0e4611429f13548e.png

142671289f1b7438c901355b333df7c4.jpeg

73d6a0b3494c35728fad69b8b2893bd1.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FTP(文件传输协议)是一种用于在网络上传输文件的标准协议。FTP 服务器允许用户上传和下载文件,并对文件进行各种操作。以下是一些常见的 FTP 服务器文件操作: 1. 下载文件:使用 FTP 客户端从 FTP 服务器下载文件。可以使用“get”命令下载单个文件,或者使用“mget”命令下载多个文件。 2. 上传文件:使用 FTP 客户端将本地计算机上的文件上传到 FTP 服务器。可以使用“put”命令上传单个文件,或者使用“mput”命令上传多个文件。 3. 删除文件:使用 FTP 客户端从 FTP 服务器删除文件。可以使用“delete”命令删除单个文件,或者使用“mdelete”命令删除多个文件。 4. 创建目录:使用 FTP 客户端在 FTP 服务器上创建新的目录。可以使用“mkdir”命令创建单个目录,或者使用“md”命令创建多个目录。 5. 切换目录:使用 FTP 客户端在 FTP 服务器上切换到不同的目录。可以使用“cd”命令切换到单个目录,或者使用“lcd”命令切换到本地计算机上的目录。 6. 列出文件和目录:使用 FTP 客户端列出 FTP 服务器上的文件和目录。可以使用“ls”命令列出当前目录中的文件和目录,或者使用“dir”命令列出当前目录中的详细信息。 7. 重命名文件:使用 FTP 客户端从 FTP 服务器重命名文件。可以使用“rename”命令将文件重命名为新名称。 这些是使用 FTP 服务器时最常见的文件操作。可以通过 FTP 客户端执行这些操作,或者使用 FTP 服务器的 Web 界面进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值