sap 传输请求号下载及上传程序

下载请求号:
*======================================================================*
* Initial idea and first release by Igor Yaskevitch (IBS), 2003        *
* Enhancements by Sergey Korolev, 2005 (Added F4 value                 *
* requests, authority checks, TMS function usage)                      *
*----------------------------------------------------------------------*
* Function : This is a utility tool for downloading binary             *
* files of transport request to a Client PC                            *
*======================================================================*
REPORT YRS_DOWNLOAD_TRANSPORT_REQUEST.
PARAMETERS:
  P_REQEST TYPE TRKORR OBLIGATORY,
  P_FOLDER(255) TYPE C LOWER CASE, P_SEPR OBLIGATORY.

DATA:
  FOLDER TYPE STRING,
  RETVAL LIKE TABLE OF DDSHRETVAL WITH HEADER LINE,
  FLDVALUE LIKE HELP_INFO-FLDVALUE,
  TRANSDIR TYPE TEXT255,
  FILENAME(255),
  TRFILE(20) TYPE C,
*  datatab TYPE TABLE OF text8192 WITH HEADER LINE,
  BEGIN OF DATATAB OCCURS 0,
    TEXT(8192) TYPE X,
  END OF DATATAB,
  LEN TYPE I,
  FLEN TYPE I.

TYPE-POOLS: SABC, STMS, TRWBO.

INITIALIZATION.
  CONCATENATE SY-SYSID 'K*' INTO P_REQEST.

  IF SY-OPSYS = 'Windows NT'.
    P_SEPR = '\'.
  ELSE.
    P_SEPR = '/'.
  ENDIF.

*  CALL FUNCTION 'WSAF_BUILD_SEPARATOR'
*       IMPORTING
*            separator                  = p_sepr
*       EXCEPTIONS
*            separator_not_maintained   = 1
*            wrong_call                 = 2
*            wsaf_config_not_maintained = 3
*            OTHERS                     = 4.
*
*  IF sy-subrc NE 0.
*    MESSAGE s001(00)
*      WITH
*      'Unable to find out the separator symbol for the system.'(011).
*  ENDIF.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_REQEST.
  DATA:
    TT_SYSTEM TYPE TABLE OF TMSCSYS WITH HEADER LINE,
    ES_SELECTED_REQUEST TYPE TRWBO_REQUEST_HEADER,
    ES_SELECTED_TASK TYPE TRWBO_REQUEST_HEADER,
    IV_ORGANIZER_TYPE TYPE TRWBO_CALLING_ORGANIZER,
    IS_SELECTION TYPE TRWBO_SELECTION.

  IV_ORGANIZER_TYPE = 'W'. IS_SELECTION-REQSTATUS = 'R'.
  CALL FUNCTION 'TR_PRESENT_REQUESTS_SEL_POPUP'
    EXPORTING
      IV_ORGANIZER_TYPE   = IV_ORGANIZER_TYPE
      IS_SELECTION        = IS_SELECTION
    IMPORTING
      ES_SELECTED_REQUEST = ES_SELECTED_REQUEST
      ES_SELECTED_TASK    = ES_SELECTED_TASK.
  P_REQEST = ES_SELECTED_REQUEST-TRKORR.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FOLDER.
  DATA: TITLE TYPE STRING.

  TITLE = 'Select target folder'(005).
  CALL METHOD CL_GUI_FRONTEND_SERVICES=>DIRECTORY_BROWSE
    EXPORTING
      WINDOW_TITLE    = TITLE
    CHANGING
      SELECTED_FOLDER = FOLDER
    EXCEPTIONS
      CNTL_ERROR      = 1
      ERROR_NO_GUI    = 2
      OTHERS          = 3.

  CALL FUNCTION 'CONTROL_FLUSH'
    EXCEPTIONS
      CNTL_SYSTEM_ERROR = 1
      CNTL_ERROR        = 2
      OTHERS            = 3.

  P_FOLDER = FOLDER.

AT SELECTION-SCREEN ON P_REQEST.
  DATA: REQUEST_INFO TYPE STMS_WBO_REQUEST,
        REQUEST_INFOS TYPE STMS_WBO_REQUESTS.

  REFRESH REQUEST_INFOS.
  CALL FUNCTION 'TMS_MGR_READ_TRANSPORT_REQUEST'
    EXPORTING
      IV_REQUEST                 = P_REQEST
      IV_HEADER_ONLY             = 'X'
    IMPORTING
      ET_REQUEST_INFOS           = REQUEST_INFOS
    EXCEPTIONS
      READ_CONFIG_FAILED         = 1
      TABLE_OF_REQUESTS_IS_EMPTY = 2
      SYSTEM_NOT_AVAILABLE       = 3
      OTHERS                     = 4.

  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
  CLEAR REQUEST_INFO.
  READ TABLE REQUEST_INFOS INTO REQUEST_INFO INDEX 1.
  IF SY-SUBRC NE 0
  OR REQUEST_INFO-E070-TRKORR IS INITIAL.
    MESSAGE E398(00) WITH 'Request'(006) P_REQEST 'not found'(007).
  ELSEIF REQUEST_INFO-E070-TRSTATUS NE 'R'.
    MESSAGE E398(00)
    WITH 'You must release request'(008)
         REQUEST_INFO-E070-TRKORR
         'before downloading'(009).
  ENDIF.

START-OF-SELECTION.
  FOLDER = P_FOLDER.
  CONCATENATE P_REQEST+3(7) '.' P_REQEST(3) INTO TRFILE.

  CALL FUNCTION 'RSPO_R_SAPGPARAM'
    EXPORTING
      NAME   = 'DIR_TRANS'
    IMPORTING
      VALUE  = TRANSDIR
    EXCEPTIONS
      ERROR  = 0
      THERS = 0.

  PERFORM. COPY_FILE USING 'cofiles' TRFILE.
  TRFILE(1) = 'R'.
  PERFORM. COPY_FILE USING 'data' TRFILE.
  TRFILE(1) = 'D'.
  PERFORM. COPY_FILE USING 'data' TRFILE.
*---------------------------------------------------------------------*
* FORM. copy_file *
*---------------------------------------------------------------------*
* --&gt SUBDIR * * --&gt FNAME *
*---------------------------------------------------------------------*
FORM. COPY_FILE USING SUBDIR FNAME.
  DATA:
    AUTH_FILENAME TYPE AUTHB-FILENAME,
    GUI_FILENAME TYPE STRING.

  CONCATENATE TRANSDIR SUBDIR FNAME
    INTO FILENAME
    SEPARATED BY P_SEPR.

  REFRESH DATATAB.
  CLEAR FLEN.

  AUTH_FILENAME = FILENAME.
  CALL FUNCTION 'AUTHORITY_CHECK_DATASET'
    EXPORTING
      ACTIVITY         = SABC_ACT_READ
      FILENAME         = AUTH_FILENAME
    EXCEPTIONS
      NO_AUTHORITY     = 1
      ACTIVITY_UNKNOWN = 2
      OTHERS           = 3.

  IF SY-SUBRC <> 0.
    FORMAT COLOR COL_NEGATIVE.
    WRITE: / 'Read access denied. File'(001),
              FILENAME.
    FORMAT COLOR OFF. EXIT.
  ENDIF.

  OPEN DATASET FILENAME FOR INPUT IN BINARY MODE.

  IF SY-SUBRC NE 0.
    FORMAT COLOR COL_TOTAL.
    WRITE: / 'File open error'(010), FILENAME.
    FORMAT COLOR OFF. EXIT.
  ENDIF.

  CLEAR FLEN.
  DATA: MLEN TYPE I.
  MLEN = 8192.
  DO.
    CLEAR LEN.
    READ DATASET FILENAME INTO DATATAB MAXIMUM LENGTH MLEN LENGTH LEN.
    FLEN = FLEN + LEN.
    IF LEN > 0. APPEND DATATAB. ENDIF.
    IF SY-SUBRC NE 0.
      EXIT.
    ENDIF.
  ENDDO.
  CLOSE DATASET FILENAME.
  CONCATENATE P_FOLDER '\' FNAME INTO GUI_FILENAME.

  CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
    EXPORTING
      BIN_FILESIZE            = FLEN
      FILENAME                = GUI_FILENAME
      FILETYPE                = 'BIN'
    CHANGING
      DATA_TAB                = DATATAB[]
    EXCEPTIONS
      FILE_WRITE_ERROR        = 1
      NO_BATCH                = 2
      GUI_REFUSE_FILETRANSFER = 3
      INVALID_TYPE            = 4
      NO_AUTHORITY            = 5
      UNKNOWN_ERROR           = 6
      HEADER_NOT_ALLOWED      = 7
      SEPARATOR_NOT_ALLOWED   = 8
      FILESIZE_NOT_ALLOWED    = 9
      HEADER_TOO_LONG         = 10
      DP_ERROR_CREATE         = 11
      DP_ERROR_SEND           = 12
      DP_ERROR_WRITE          = 13
      UNKNOWN_DP_ERROR        = 14
      ACCESS_DENIED           = 15
      DP_OUT_OF_MEMORY        = 16
      DISK_FULL               = 17
      DP_TIMEOUT              = 18
      FILE_NOT_FOUND          = 19
      DATAPROVIDER_EXCEPTION  = 20
      CONTROL_FLUSH_ERROR     = 21
      OTHERS                  = 24.

  IF SY-SUBRC = 0.
    WRITE: / 'File'(002), FILENAME, 'downloaded. Length'(003), FLEN.
  ELSE.
    FORMAT COLOR COL_NEGATIVE.
    WRITE: / 'File download error. Filename:'(004), FILENAME.
    FORMAT COLOR OFF.
  ENDIF.
ENDFORM. "copy_file

 

 

 

 


上传传输号:

*======================================================================*
* Initial idea and first release by Igor Yaskevitch (IBS), 2003        *
* Enhancements by Sergei Korolev, 2005 (added import queue             *
* manipulations, authority checking, minor interface improvements)     *
*----------------------------------------------------------------------*
* Function : This is a utility tool for uploading binary               *
* files of a transport request from a Client PC,                       *
* adding to an import queue and importing into the                     *
* system.                                                              *
*======================================================================*
REPORT YRS_UPLOAD_TRANSPORT_REQUEST.

TYPE-POOLS: ABAP, SABC, STMS.

CONSTANTS: GC_TP_FILLCLIENT LIKE STPA-COMMAND VALUE 'FILLCLIENT'.
DATA:
  LT_REQUEST TYPE STMS_TR_REQUESTS,
  LT_TP_MAINTAIN TYPE STMS_TP_MAINTAINS.


DATA:
  SL TYPE I,
  L_DATAFILE(255) TYPE C,
  DATAFILES TYPE I,
  RET TYPE I,
  ANS TYPE C.

DATA:
  ET_REQUEST_INFOS TYPE STMS_WBO_REQUESTS,
  REQUEST_INFO TYPE STMS_WBO_REQUEST,
  SYSTEM TYPE TMSCSYS-SYSNAM,
  REQUEST LIKE E070-TRKORR.

DATA:
  FOLDER TYPE STRING,
  RETVAL LIKE TABLE OF DDSHRETVAL WITH HEADER LINE,
  FLDVALUE LIKE HELP_INFO-FLDVALUE,
  TRANSDIR TYPE TEXT255,
  FILENAME LIKE AUTHB-FILENAME,
  TRFILE(20) TYPE C.

DATA:
  BEGIN OF DATATAB OCCURS 0,
    BUF(8192) TYPE X,
  END OF DATATAB.

DATA: LEN TYPE I,
      FLEN TYPE I.

SELECTION-SCREEN COMMENT /1(79) COMM_SEL.

PARAMETERS:
P_COFILE(255) TYPE C LOWER CASE OBLIGATORY.

SELECTION-SCREEN SKIP.

SELECTION-SCREEN BEGIN OF BLOCK B01 WITH FRAME. TITLE BL_TITLE.

PARAMETERS:
  P_ADDQUE AS CHECKBOX DEFAULT 'X',
  P_TARCLI LIKE TMSBUFFER-TARCLI
           DEFAULT SY-MANDT
           MATCHCODE OBJECT H_T000,

   P_SEPR OBLIGATORY.

SELECTION-SCREEN END OF BLOCK B01.

INITIALIZATION.
  BL_TITLE = '导入队列参数'(B01).
  COMM_SEL = '请选择co-file. 文件名必须以字母''K''开始.'(001).
  IF SY-OPSYS = 'Windows NT'.
    P_SEPR = '\'.
  ELSE.
    P_SEPR = '/'.
  ENDIF.
**  CALL FUNCTION 'WSAF_BUILD_SEPARATOR'
**    IMPORTING
**      separator                  = p_sepr
**    EXCEPTIONS
**      separator_not_maintained   = 1
**      wrong_call                 = 2
**      wsaf_config_not_maintained = 3
**      OTHERS                     = 4.
*  IF sy-subrc NE 0.
*    MESSAGE s001(00) WITH 'Unable to find out the separator symbol for the system.'(008).
*  ENDIF.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_COFILE.
  DATA:
    FILE TYPE FILE_TABLE,
    RC TYPE I,
    TITLE TYPE STRING,
    FILE_TABLE TYPE FILETABLE,
    FILE_FILTER TYPE STRING VALUE 'CO-files (K*.*)|K*.*||'.

  TITLE = 'Select CO-file'(006).
  CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
    EXPORTING
      WINDOW_TITLE            = TITLE
      FILE_FILTER             = FILE_FILTER
    CHANGING
      FILE_TABLE              = FILE_TABLE
      RC                      = RC
    EXCEPTIONS
      FILE_OPEN_DIALOG_FAILED = 1
      CNTL_ERROR              = 2
      ERROR_NO_GUI            = 3
      NOT_SUPPORTED_BY_GUI    = 4
      OTHERS                  = 5.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
  READ TABLE FILE_TABLE INTO FILE INDEX 1.
  P_COFILE = FILE.

AT SELECTION-SCREEN.
  DATA:
  FILE TYPE STRING.
  SL = STRLEN( P_COFILE ).
  IF SL < 11.
    MESSAGE E001(00)
    WITH 'Invalid co-file name format. File name format must be KNNNNNNN.SSS'(009).
  ENDIF.
  SL = SL - 11.
  IF P_COFILE+SL(1) NE 'K'.
    MESSAGE E001(00)
    WITH 'Invalid co-file name format. File name format must be KNNNNNNN.SSS'(009).
  ENDIF.
  SL = SL + 1.
  IF NOT P_COFILE+SL(6) CO '0123456789'.
    MESSAGE E001(00)
    WITH 'Invalid co-file name format. File name format must be KNNNNNNN.SSS'(009).
  ENDIF.
  SL = SL + 6.
  IF P_COFILE+SL(1) NE '.'.
    MESSAGE E001(00)
    WITH 'Invalid co-file name format. File name format must be KNNNNNNN.SSS'(009).
  ENDIF.
  SL = SL - 7.
  CLEAR DATAFILES.
  L_DATAFILE = P_COFILE.
  L_DATAFILE+SL(1) = 'R'.
  FILE = L_DATAFILE.
  IF CL_GUI_FRONTEND_SERVICES=>FILE_EXIST( FILE = FILE ) = 'X'.
    ADD 1 TO DATAFILES.
  ENDIF.
  L_DATAFILE+SL(1) = 'D'.
  FILE = L_DATAFILE.
  IF CL_GUI_FRONTEND_SERVICES=>FILE_EXIST( FILE = FILE ) = 'X'.
    ADD 1 TO DATAFILES.
  ENDIF.
  SL = SL + 8.
  REQUEST = P_COFILE+SL(3).
  SL = SL - 8.
  CONCATENATE REQUEST P_COFILE+SL(7) INTO REQUEST.
  TRANSLATE REQUEST TO UPPER CASE.
  IF DATAFILES = 0.
    MESSAGE E398(00)
    WITH 'Corresponding data-files of transport request'(010)
    REQUEST
    'not found.'(011).
  ELSE.
    MESSAGE S398(00)
    WITH DATAFILES
    'data-files have been found for transport request'(012)
    REQUEST.
  ENDIF.

START-OF-SELECTION.
  DATA:
  PARAMETER TYPE SPAR,
  PARAMETERS TYPE TABLE OF SPAR.
  CALL FUNCTION 'RSPO_R_SAPGPARAM'
    EXPORTING
      NAME   = 'DIR_TRANS'
    IMPORTING
      VALUE  = TRANSDIR
    EXCEPTIONS
      ERROR  = 1
      THERS = 2.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE 'E' NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
  FILENAME = P_COFILE+SL(11).
  TRANSLATE FILENAME TO UPPER CASE.
  CONCATENATE TRANSDIR 'cofiles' FILENAME
  INTO FILENAME
  SEPARATED BY P_SEPR.
  OPEN DATASET FILENAME FOR INPUT IN BINARY MODE.
  RET = SY-SUBRC.
  CLOSE DATASET FILENAME.
  IF NOT RET = 0.
    CALL FUNCTION 'POPUP_TO_CONFIRM'
      EXPORTING
        TEXT_QUESTION  = 'Copy all files?'(A03)
      IMPORTING
        ANSWER         = ANS
      EXCEPTIONS
        TEXT_NOT_FOUND = 1
        OTHERS         = 2.
  ELSE.
    PARAMETER-PARAM = 'FILE'.
    PARAMETER-VALUE = FILENAME.
    APPEND PARAMETER TO PARAMETERS.
    CALL FUNCTION 'POPUP_TO_CONFIRM'
      EXPORTING
        TEXT_QUESTION  = 'File ''&FILE&'' already exists. Rewrite?'(A04)
      IMPORTING
        ANSWER         = ANS
      TABLES
        PARAMETER      = PARAMETERS
      EXCEPTIONS
        TEXT_NOT_FOUND = 1
        OTHERS         = 2.
  ENDIF.
  CHECK ANS = '1'.
  TRFILE = P_COFILE+SL(11).
  TRANSLATE TRFILE TO UPPER CASE.
  PERFORM. COPY_FILE USING 'cofiles' TRFILE P_COFILE.
  TRFILE(1) = 'R'.
  L_DATAFILE+SL(1) = 'R'.
  PERFORM. COPY_FILE USING 'data' TRFILE L_DATAFILE.
  IF DATAFILES > 1.
    TRFILE(1) = 'D'.
    L_DATAFILE+SL(1) = 'D'.
    PERFORM. COPY_FILE USING 'data' TRFILE L_DATAFILE.
  ENDIF.
  IF P_ADDQUE = 'X'.
    SYSTEM = SY-SYSID.
    DO 1 TIMES.
* Check authority to add request to the import queue
      CALL FUNCTION 'TR_AUTHORITY_CHECK_ADMIN'
        EXPORTING
          IV_ADMINFUNCTION = 'TADD'
        EXCEPTIONS
          E_NO_AUTHORITY   = 1
          E_INVALID_USER   = 2
          OTHERS           = 3.
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        EXIT.
      ENDIF.
      CALL FUNCTION 'TMS_UI_APPEND_TR_REQUEST'
        EXPORTING
          IV_SYSTEM             = SYSTEM
          IV_REQUEST            = REQUEST
          IV_EXPERT_MODE        = 'X'
          IV_CTC_ACTIVE         = 'X'
        EXCEPTIONS
          CANCELLED_BY_USER     = 1
          APPEND_REQUEST_FAILED = 2
          OTHERS                = 3.
      CHECK SY-SUBRC = 0.
      CALL FUNCTION 'TMS_MGR_READ_TRANSPORT_REQUEST'
        EXPORTING
          IV_REQUEST                 = REQUEST
          IV_TARGET_SYSTEM           = SYSTEM
        IMPORTING
          ET_REQUEST_INFOS           = ET_REQUEST_INFOS
        EXCEPTIONS
          READ_CONFIG_FAILED         = 1
          TABLE_OF_REQUESTS_IS_EMPTY = 2
          SYSTEM_NOT_AVAILABLE       = 3
          OTHERS                     = 4.
      CLEAR REQUEST_INFO.
      READ TABLE ET_REQUEST_INFOS INTO REQUEST_INFO INDEX 1.
      IF REQUEST_INFO-E070-KORRDEV = 'CUST'
      AND NOT P_TARCLI IS INITIAL.
        CALL FUNCTION 'TMS_MGR_MAINTAIN_TR_QUEUE'
          EXPORTING
            IV_COMMAND                 = GC_TP_FILLCLIENT
            IV_SYSTEM                  = SYSTEM
            IV_REQUEST                 = REQUEST
            IV_TARCLI                  = P_TARCLI
            IV_MONITOR                 = 'X'
            IV_VERBOSE                 = 'X'
          IMPORTING
            ET_TP_MAINTAINS            = LT_TP_MAINTAIN
          EXCEPTIONS
            READ_CONFIG_FAILED         = 1
            TABLE_OF_REQUESTS_IS_EMPTY = 2
            OTHERS                     = 3.
        IF SY-SUBRC <> 0.
          MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
          EXIT.
        ENDIF.
      ENDIF.
* Check authority to start request import
      CALL FUNCTION 'TR_AUTHORITY_CHECK_ADMIN'
        EXPORTING
          IV_ADMINFUNCTION = 'IMPS'
        EXCEPTIONS
          E_NO_AUTHORITY   = 1
          E_INVALID_USER   = 2
          OTHERS           = 3.
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        EXIT.
      ENDIF.
      CALL FUNCTION 'TMS_UI_IMPORT_TR_REQUEST'
        EXPORTING
          IV_SYSTEM             = SYSTEM
          IV_REQUEST            = REQUEST
          IV_TARCLI             = P_TARCLI
          IV_SOME_ACTIVE        = SPACE
        EXCEPTIONS
          CANCELLED_BY_USER     = 1
          IMPORT_REQUEST_DENIED = 2
          IMPORT_REQUEST_FAILED = 3
          OTHERS                = 4.
    ENDDO.
  ENDIF.
*&--------------------------------------------------------------------*
*& Form. copy_file
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* --&gtSUBDIR text
* --&gtFNAME text
* --&gtSOURCE_FILEtext
*---------------------------------------------------------------------*
FORM. COPY_FILE USING SUBDIR FNAME SOURCE_FILE.
  DATA: L_FILENAME TYPE STRING.
  L_FILENAME = SOURCE_FILE.
  CONCATENATE TRANSDIR SUBDIR FNAME
  INTO FILENAME
  SEPARATED BY P_SEPR.
  REFRESH DATATAB.
  CLEAR FLEN.
  CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD
    EXPORTING
      FILENAME                = L_FILENAME
      FILETYPE                = 'BIN'
    IMPORTING
      FILELENGTH              = FLEN
    CHANGING
      DATA_TAB                = DATATAB[]
    EXCEPTIONS
      FILE_OPEN_ERROR         = 1
      FILE_READ_ERROR         = 2
      NO_BATCH                = 3
      GUI_REFUSE_FILETRANSFER = 4
      INVALID_TYPE            = 5
      NO_AUTHORITY            = 6
      UNKNOWN_ERROR           = 7
      BAD_DATA_FORMAT         = 8
      HEADER_NOT_ALLOWED      = 9
      SEPARATOR_NOT_ALLOWED   = 10
      HEADER_TOO_LONG         = 11
      UNKNOWN_DP_ERROR        = 12
      ACCESS_DENIED           = 13
      DP_OUT_OF_MEMORY        = 14
      DISK_FULL               = 15
      DP_TIMEOUT              = 16
      NOT_SUPPORTED_BY_GUI    = 17
      ERROR_NO_GUI            = 18
      OTHERS                  = 19.
  IF SY-SUBRC NE 0.
    WRITE: / 'Error uploading file'(003), L_FILENAME.
    EXIT.
  ENDIF.
  CALL FUNCTION 'AUTHORITY_CHECK_DATASET'
    EXPORTING
      ACTIVITY         = SABC_ACT_WRITE
      FILENAME         = FILENAME
    EXCEPTIONS
      NO_AUTHORITY     = 1
      ACTIVITY_UNKNOWN = 2
      OTHERS           = 3.
  IF SY-SUBRC <> 0.
    FORMAT COLOR COL_NEGATIVE.
    WRITE: / 'Write access denied. File'(013), FILENAME.
    FORMAT COLOR OFF.
    EXIT.
  ENDIF.
  OPEN DATASET FILENAME FOR OUTPUT IN BINARY MODE.
  IF SY-SUBRC NE 0.
    WRITE: / 'File open error'(004), TRFILE.
    EXIT.
  ENDIF.
  LOOP AT DATATAB.
    IF FLEN <= 8192.
      LEN = FLEN.
    ELSE.
      LEN = 8192.
    ENDIF.
    TRANSFER DATATAB-BUF TO FILENAME LENGTH LEN.
    FLEN = FLEN - LEN.
  ENDLOOP.
  CLOSE DATASET FILENAME.
  WRITE: / 'File'(005), TRFILE, 'uploaded'(007).
ENDFORM. "copy_file

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10339719/viewspace-622404/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10339719/viewspace-622404/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值