在 SAP 中移动文件的处理方法

4 篇文章 0 订阅


方法一: 在目标目录新建文件,然后Copy 来源文件的内容,最后删除来源文件,变相达到移动的目的:

FORM MOVE_FILE_TO_FOLDER USING P_FROM_PATH
                               P_TO_PATH
                               P_FILE_NAME
                               P_ZTYPE.
  data: lv_str type string.

  data:p_file_n_f like rlgrap-filename,
       p_file_f like rlgrap-filename,
       p_file_n_t like rlgrap-filename,
       p_file_t like rlgrap-filename.

  if st01 eq 'X'.

   clear: p_file_n_f, p_file_f, p_file_n_t, p_file_t.

   "To file
*   concatenate P_ZTYPE p_file_n_t
*     into p_file_n_t separated by '_'.
   p_file_n_t = p_file_name.
   concatenate p_to_path p_file_n_t
     into p_file_t separated by '\'.

   "From file
   concatenate p_from_path p_file_name
     into p_file_f separated by '\'.

   "open to file, and trans data to it
   open dataset p_file_t for output in text mode encoding UTF-8.
     if sy-subrc eq 0.
       close dataset p_file_f.
       open dataset p_file_f for input in text mode encoding UTF-8.
       if sy-subrc eq 0.
         do.
           clear lv_str.
           read dataset p_file_f into lv_str.
           if sy-subrc ne 0.
             exit.
           endif.
           transfer lv_str to p_file_t.
         enddo.
       endif.
       close dataset p_file_f.

*"     Delete original file
       if sy-subrc eq 0.
         delete dataset p_file_f.
       endif.

     endif.
   close dataset p_file_t.
  endif.
ENDFORM.                    " MOVE_FILE_TO_ERR_FOLDER


方法二:调用外部命令处理


FORM MOVE_FILE tables p_table
               using p_delete_file
                     p_flag.

  data: IN_FILE(255TYPE C,
        OUT_FILE(255TYPE C.

  DATA: CMND LIKE SXPGCOLIST-NAME,
        PARM LIKE SXPGCOLIST-PARAMETERS .
  DATABEGIN OF OUT_DATA OCCURS 50.
          INCLUDE STRUCTURE BTCXPM.
  DATAEND   OF OUT_DATA .
  DATA: RTN_CH.

*< 1 >* Call LHA Command

* create system command
  CMND =   'ZMOVE'.  "<-- system command name. Refer "SM69"
********************************************************
* Configuration                                        *
* operating system command : "cmd"                     *
* parameters for operating system command : "/c move"  *
********************************************************

* MOVE need parameter "<source file> _ <target file>"



  move p_delete_file TO OUT_FILE.
  if move_succ = 'X'.
    concatenate i_path '\COMPLETE\' into IN_FILE.
  endif.
  if move_err = 'X'.
    concatenate i_path '\NONCOMPLETE\' into IN_FILE.
  endif.

  CONCATENATE OUT_FILE IN_FILE INTO PARM SEPARATED BY SPACE.




*call system command
  CLEAR RTN_CH.
  CALL FUNCTION 'SXPG_CALL_SYSTEM'
       EXPORTING
            COMMANDNAME                = CMND
            ADDITIONAL_PARAMETERS      = PARM
*       IMPORTING
*            STATUS                     = RTN_CH
       TABLES
            EXEC_PROTOCOL              = OUT_DATA
       EXCEPTIONS
            NO_PERMISSION              = 01
            COMMAND_NOT_FOUND          = 02
            PARAMETERS_TOO_LONG        = 03
            SECURITY_RISK              = 04
            WRONG_CHECK_CALL_INTERFACE = 05
            PROGRAM_START_ERROR        = 06
            PROGRAM_TERMINATION_ERROR  = 07
            X_ERROR                    = 08
            PARAMETER_EXPECTED         = 09
            TOO_MANY_PARAMETERS        = 10
            ILLEGAL_COMMAND            = 11.



ENDFORM.




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值