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

来源:互联网 发布:java 解析soapenv 编辑:程序博客网 时间:2024/05/22 10:50


方法一: 在目标目录新建文件,然后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.




原创粉丝点击