matinal:SAP ABAP 如何读取FTP文件

文章详细描述了如何在SAP环境中添加权限对象S_ADMI_FCD,涉及FTP服务器地址配置、密码加密、FTP连接、CMD命令执行以及文件读取和上传的过程。

SAP账号添加权限对象S_ADMI_FCD

在表SAPFTP_SERVERS维护ftp服务器地址,建议直接输入*

 

TYPES: BEGIN OF ty_ftp,
         line(255) TYPE c,
       END OF ty_ftp,
       BEGIN OF ty_blob,
         line(255) TYPE x,
       END OF ty_blob.

DATA: lt_ftp  TYPE TABLE OF ty_ftp,
      ls_ftp  TYPE ty_ftp,
      lt_blob TYPE TABLE OF ty_blob.

DATA: lv_server(255) TYPE c VALUE '192.168.xx.xx', "服务器地址
      lv_user(255)   TYPE c VALUE 'user',          "账号
      lv_pwd(255)    TYPE c VALUE 'xxxx',          "密码
      lv_dest        TYPE rfcdest VALUE 'SAPFTP',  "操作标识
      lv_handle      TYPE i,
      lv_len         TYPE i,
      lv_key         TYPE i VALUE 26101957,
      lv_cmd(255)    TYPE c,
      lv_dir(255)    TYPE c VALUE 'IQC/10000568057', "指定目录
      lv_blob_len    TYPE i,
      lv_xstr        TYPE xstring.

DATA: lv_msg TYPE string.

lv_len = strlen( lv_pwd ).

"密码加密
CALL FUNCTION 'HTTP_SCRAMBLE'
  EXPORTING
    source      = lv_pwd "原始密码
    sourcelen   = lv_len "密码长度
    key         = lv_key "加密方式
  IMPORTING
    destination = lv_pwd. "加密密码

"连接ftp服务器
CALL FUNCTION 'FTP_CONNECT'
  EXPORTING
    host            = lv_server
    user            = lv_user
    password        = lv_pwd
    rfc_destination = lv_dest
  IMPORTING
    handle          = lv_handle
  EXCEPTIONS
    OTHERS          = 1.

IF sy-subrc <> 0.
  "获取错误
  CALL FUNCTION 'MESSAGE_TEXT_BUILD'
    EXPORTING
      msgid               = sy-msgid
      msgnr               = sy-msgno
      msgv1               = sy-msgv1
      msgv2               = sy-msgv2
      msgv3               = sy-msgv3
      msgv4               = sy-msgv4
    IMPORTING
      message_text_output = lv_msg.

ELSE.

  "执行CMD命令(列出指定文件夹下所有的文件)
  CONCATENATE 'nlist' lv_dir INTO lv_cmd SEPARATED BY space.

  CALL FUNCTION 'FTP_COMMAND'
    EXPORTING
      handle  = lv_handle
      command = lv_cmd
    TABLES
      data    = lt_ftp
    EXCEPTIONS
      OTHERS  = 2.

  LOOP AT lt_ftp INTO ls_ftp WHERE line CS lv_dir.

    "读取文件
    CALL FUNCTION 'FTP_SERVER_TO_R3'
      EXPORTING
        handle        = lv_handle
        fname         = ls_ftp-line
      IMPORTING
        blob_length   = lv_blob_len
      TABLES
        blob          = lt_blob
      EXCEPTIONS
        tcpip_error   = 1
        command_error = 2
        data_error    = 3
        OTHERS        = 4.

    "二进制转XString
    CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
      EXPORTING
        input_length = lv_blob_len
      IMPORTING
        buffer       = lv_xstr
      TABLES
        binary_tab   = lt_blob
      EXCEPTIONS
        failed       = 1
        OTHERS       = 2.

    "将xstring内容调用外部系统文件上传http接口

  ENDLOOP.

  "关闭连接
  CALL FUNCTION 'FTP_DISCONNECT'
    EXPORTING
      handle = lv_handle
    EXCEPTIONS
      OTHERS = 4.

ENDIF.

cl_demo_output=>write( lv_msg ).
cl_demo_output=>write( lt_ftp ).
cl_demo_output=>display(  ).

 

SAP连接FTP标准示例程序

RSFTP001                       SAPFTP 版本
RSFTP002                       执行 FTP 命令
RSFTP003                       测试
RSFTP004                       FTP 复制
RSFTP005                       SAPFTP 检查
RSFTP006                       FTP 命令清单
RSFTP007                       测试 FB:FTP_SERVER_TO_R3 / FTP_R3_TO_SERVER
RSFTP008                       测试 FB:FTP_CLIENT_TO_R3 / FTP_R3_TO_CLIENT
RSFTP009                       Test FTP put with Verify
RSFTP011                       FTP Copy

### 设置 `.vimrc` 配置文件的示例及参数说明 `.vimrc` 是 Vim 编辑器的核心配置文件,用于定义用户的个性化设置和增强编辑体验。以下是常见的 `.vimrc` 参数及其解释: #### 基础设置 ```vim set number " 显示行号 [^2] set tabstop=4 " 设置 Tab 键宽度为 4 个空格 set shiftwidth=4 " 设置自动缩进时使用的空格数为 4 set expandtab " 将 Tab 替换为空格 set autoindent " 自动继承上一行的缩进方式 set smartindent " 智能缩进支持编程语言特定规则 ``` #### 外观与界面 ```vim syntax on " 启用语法高亮 [^1] colorscheme desert " 设置颜色方案 (desert 只是一个例子) set cursorline " 突出显示当前行 set showcmd " 在状态栏显示输入中的命令 set ruler " 显示光标的当前位置 (行列号) ``` #### 文件操作与保存 ```vim set backup " 创建备份文件 set undofile " 启用撤销历史记录持久化 set directory=~/.vim/swap// " 定义交换文件存储路径 set writebackup " 在覆盖文件前创建临时副本 ``` #### 提升效率的功能 ```vim map <C-s> :w<CR> " 使用 Ctrl+s 快捷键保存文件 [^2] nnoremap <leader>w :w<CR> " 定义快捷键 leader+w 来保存文件 inoremap jj <Esc> " 插入模式下按两次 'j' 返回正常模式 ``` #### 插件管理(可选) 虽然基础版本的 `.vimrc` 不涉及插件管理工具,但如果使用 `Vundle` 或 `Plug`,可以通过以下方式进行扩展: ```vim call plug#begin('~/.vim/plugged') Plug 'scrooloose/nerdtree' Plug 'tpope/vim-fugitive' call plug#end() ``` 以上代码片段展示了如何通过 `.vimrc` 实现基本到高级的配置。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值