SAP 数据存到FTP服务器

FORM frm_save2ftp .
  DATA: mi_key TYPE i VALUE 26101957,
      mi_handle TYPE i,
      slen TYPE i .
  DATA: csvtab TYPE truxs_t_text_data  .
  DATA: csvheader(4096).
  DATA: csvtab2 TYPE truxs_t_text_data  .
    
  slen = STRLEN( p_ftppwd ).

  CALL FUNCTION 'SAP_CONVERT_TO_CSV_FORMAT'
    EXPORTING
     i_field_seperator          = ';'
      i_filename                 = p_file "文件将要存储在FTP中的文件名
    TABLES
      i_tab_sap_data       = itab ”内表 Material;Plant
    CHANGING
      i_tab_converted_data = csvtab "内表转成csv格式表
    EXCEPTIONS
      conversion_failed    = 1
      OTHERS               = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
           WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  csvheader = 'Material;Plant'.
  INSERT csvheader INTO csvtab   INDEX 1. "第一行插入表头

  SET EXTENDED CHECK OFF.
  CALL FUNCTION 'HTTP_SCRAMBLE'
    EXPORTING
      SOURCE      = p_ftppwd    "FTP服务器密码
      sourcelen   = slen
      key         = mi_key
    IMPORTING
      destination = p_ftppwd.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
           WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
  CALL FUNCTION 'FTP_CONNECT'
    EXPORTING
      user            = p_ftpusr    ”FTP用户名
      password        = p_ftppwd
      host            = p_ftphst    “FTP IP地址
      rfc_destination = 'SAPFTPA' "SAPFTPA A OR NOA A可以后台,没A只能前台
    IMPORTING
      handle          = mi_handle
    EXCEPTIONS
      not_connected   = 1
      OTHERS          = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
           WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  "------------------------
  DATA: result   TYPE TABLE OF text WITH HEADER LINE,
         commands TYPE TABLE OF text WITH HEADER LINE.
  CALL FUNCTION 'FTP_COMMAND'
    EXPORTING
      handle        = mi_handle
      command       = 'set passive on'    "在FTP服务器中运行的命令
    TABLES
      data          = result
    EXCEPTIONS
      command_error = 1
      tcpip_error   = 2.

  IF p_path IS NOT INITIAL.
    CONDENSE p_path. "FTP服务器中将要进行存储的文件夹
    CONCATENATE 'cd' p_path INTO commands SEPARATED BY space.
    CALL FUNCTION 'FTP_COMMAND'
      EXPORTING
        handle        = mi_handle
        command       = commands  "'cd SAP'
      TABLES
        data          = result
      EXCEPTIONS
        command_error = 1
        tcpip_error   = 2.
  ENDIF.


  CALL FUNCTION 'FTP_R3_TO_SERVER'
    EXPORTING
      handle         = mi_handle
      fname          = p_file "filename
      character_mode = 'X'
    TABLES
      text           = csvtab.


  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
           WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  CALL FUNCTION 'FTP_DISCONNECT'
    EXPORTING
      handle = mi_handle
    EXCEPTIONS
      OTHERS = 1.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
           WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.                    " FRM_SAVE2FTP
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值