现在的位置: 首页 > 综合 > 正文

abap-下载和上传请求包

2013年09月21日 ⁄ 综合 ⁄ 共 11422字 ⁄ 字号 评论关闭

*&---------------------------------------------------------------------*

*& Report  Z_XL_UP_DOWN_REQUEST

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT
  Z_XL_UP_DOWN_REQUEST.

TYPE
-POOLS: trwbo, stms.
DATA
:
    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.
DATA
: folder TYPE
 string ,
      flag TYPE
 c
        ,
      dir_trans TYPE
 text255  ,
      path2 TYPE
 text255 ,
      localfolder(128
TYPE
 c
 ,
      upfilename(11
TYPE
 c
.
DATA
:
  lt_request TYPE
 stms_tr_requests,
  lt_tp_maintain TYPE
 stms_tp_maintains.
DATA
:
  et_request_infos TYPE
 stms_wbo_requests,
  request_info TYPE
 stms_wbo_request,
  request LIKE
 e070-trkorr.
DATA
BEGIN
 OF
 it_memo OCCURS
 0
 ,
        line
(255
TYPE
 c
,
      END
 OF
 it_memo.
DATA
: error LIKE
 boole-boole ,
      err_txt(100
TYPE
 c
 .

SELECTION-SCREEN
 BEGIN
 OF
 BLOCK
 b1 WITH
 FRAME
 TITLE
 t1.
PARAMETERS
: download RADIOBUTTON
 GROUP
 typ USER-COMMAND sele DEFAULT
 'X'
.
PARAMETERS
: upload RADIOBUTTON
 GROUP
 typ.
SELECTION-SCREEN
 END
 OF
 BLOCK
 b1.
SELECTION-SCREEN
 BEGIN
 OF
 BLOCK
 b2 WITH
 FRAME
 TITLE
 t2.
PARAMETERS
:  p_file(255
TYPE
 c
 LOWER
 CASE
 MODIF ID
 m2,
             p_client LIKE
 tmsbuffer-tarcli DEFAULT
 sy-mandt
                           MATCHCODE
 OBJECT h_t000 MODIF ID
 m2.
SELECTION-SCREEN
 END
 OF
 BLOCK
 b2.
SELECTION-SCREEN
 BEGIN
 OF
 BLOCK
 b3 WITH
 FRAME
 TITLE
 t3.
PARAMETERS
:p_reqnum TYPE
 trkorr MODIF ID
 m3,
           p_folder LIKE
 rlgrap-filename DEFAULT
 'C:/'
 LOWER
 CASE
 MODIF ID
 m3 ,
           p_memo(255
TYPE
 c
 MODIF ID
 m3.
SELECTION-SCREEN
 END
 OF
 BLOCK
 b3.
INITIALIZATION
.
  t1 = '选择功能'
.
  t2 = '上传参数'
.
  t3 = '下载参数'
.
  IF
 sy-opsys = 'Windows NT'
.
    flag = '/'
.
  ELSE
.
    flag = '/'
.
  ENDIF
.
AT
 SELECTION-SCREEN
 ON
 VALUE
-REQUEST FOR
 p_reqnum.
  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_reqnum = es_selected_request-trkorr.
AT
 SELECTION-SCREEN
 ON
 VALUE
-REQUEST FOR
 p_folder.
  CALL
 METHOD
 cl_gui_frontend_services=>directory_browse
    CHANGING

      selected_folder = folder
    EXCEPTIONS

      cntl_error      = 1

      error_no_gui    = 2

      OTHERS
          = 3
.
  p_folder = folder.
AT
 SELECTION-SCREEN
 ON
 VALUE
-REQUEST FOR
 p_file.
  DATA
:
    file TYPE
 file_table,
    rc TYPE
 i
,
    file_table TYPE
 filetable,
    file_filter TYPE
 string VALUE
 '(K*.*)|K*.*||'
.
  CALL
 METHOD
 cl_gui_frontend_services=>file_open_dialog
    EXPORTING

      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_file = file.
AT
 SELECTION-SCREEN
 OUTPUT
.
  LOOP
 AT
 SCREEN
.
    CASE
 screen
-group1.
      WHEN
 'M2'
.
        IF
 download = 'X'
.
          screen
-active = '0'
.
        ELSE
.
          screen
-active = '1'
.
        ENDIF
.
      WHEN
 'M3'
.
        IF
 download = 'X'
.
          screen
-active = '1'
.
        ELSE
.
          screen
-active = '0'
.
        ENDIF
.
    ENDCASE
.
    MODIFY
 SCREEN
.
  ENDLOOP
.
START-OF
-SELECTION.
  CALL
 FUNCTION
 'RSPO_R_SAPGPARAM'

    EXPORTING

      name   = 'DIR_TRANS'

    IMPORTING

      value
  = dir_trans
    EXCEPTIONS

      error  = 0

      OTHERS
 = 0
.
  IF
 download = 'X'
.
    IF
 p_reqnum = ''
 OR
 p_folder = ''
.
      MESSAGE
 '必须输入请求号和地址'
 TYPE
 'I'
.
      EXIT
.
    ENDIF
.
    PERFORM
 downloadrequest.
  ELSE
.
    IF
 p_client = ''
 OR
 p_file = ''
 .
      MESSAGE
 '必须输入文件名和Client'
 TYPE
 'I'
.
      EXIT
.
    ENDIF
.
    PERFORM
 uploadrequest.
    PERFORM
 addrequest.
  ENDIF
.
*&---------------------------------------------------------------------*

*&      Form  DOWNLOADREQUEST

*&---------------------------------------------------------------------*

FORM
 downloadrequest .
  CONCATENATE
 p_reqnum+3
(7
'.'
 p_reqnum(3
INTO
 p_reqnum.
  CONCATENATE
 dir_trans 'cofiles'
 p_reqnum INTO
 path2 SEPARATED
 BY
 flag.
  CONCATENATE
 p_folder '/'
 p_reqnum INTO
 localfolder.
  PERFORM
 down_file USING
 path2
                          localfolder .
  p_reqnum(1
) = 'R'
.
  CONCATENATE
 dir_trans 'data'
 p_reqnum INTO
 path2 SEPARATED
 BY
 flag.
  CONCATENATE
 p_folder '/'
 p_reqnum INTO
 localfolder.
  PERFORM
 down_file USING
 path2
                          localfolder .
  IF
 p_memo <> ''
.
    DATA
 str TYPE
 string.
    it_memo-line
 = p_memo.
    APPEND
 it_memo.
    p_reqnum(1
) = 'K'
.
    p_reqnum+8
(3
) = 'TXT'
.
    CONCATENATE
 p_folder '/'
 p_reqnum INTO
 localfolder.
    str = localfolder .
    CALL
 FUNCTION
 'GUI_DOWNLOAD'

      EXPORTING

        filename = str
      TABLES

        data_tab = it_memo.
  ENDIF
.
  MESSAGE
 '成功下载!'
 TYPE
 'I'
.
ENDFORM
.                    " DOWNLOADREQUEST

*&--------------------------------------------------------------------*

*&      Form  DOWN_FILE

*&--------------------------------------------------------------------*

FORM
 down_file USING
    p_path
                        file_name .
  DATA
: path LIKE
 rcgfiletr-ftappl .
  DATA
: localfile LIKE
 rcgfiletr-ftfront.
  path = p_path .
  localfile = file_name .
  CLEAR
:error,err_txt.
  CALL
 FUNCTION
 'C13Z_FILE_DOWNLOAD_BINARY'

    EXPORTING

      i_file_front_end    = localfile
      i_file_appl         = path
      i_file_overwrite    = 'X'

    IMPORTING

      e_flg_open_error    = error
      e_os_message        = err_txt
    EXCEPTIONS

      fe_file_open_error  = 1

      fe_file_exists      = 2

      fe_file_write_error = 3

      ap_no_authority     = 4

      ap_file_open_error  = 5

      ap_file_empty       = 6

      OTHERS
              = 7
.
  IF
 sy-subrc <> 0
.
    IF
 sy-msgty = ''
 .
      sy-msgty = 'E'
 .
    ENDIF
 .
    MESSAGE
 ID
 sy-msgid TYPE
 sy-msgty NUMBER
 sy-msgno
            WITH
 sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF
.
  IF
 error = 'X'
.
    MESSAGE
 err_txt TYPE
 'I'
.
    STOP
.
  ENDIF
.
ENDFORM
.                               " DOWN_FILE

*&--------------------------------------------------------------------*

*&      Form  UP_FILE

*&--------------------------------------------------------------------*

FORM
 up_file USING
      p_path
                        file_name .
  DATA
: path LIKE
 rcgfiletr-ftappl .
  DATA
: localfile LIKE
 rcgfiletr-ftfront.
  path = p_path .
  localfile = file_name .
  CLEAR
:error,err_txt.
  CALL
 FUNCTION
 'C13Z_FILE_UPLOAD_BINARY'

    EXPORTING

      i_file_front_end   = localfile
      i_file_appl        = path
      i_file_overwrite   = 'X'

    IMPORTING

      e_flg_open_error   = error
      e_os_message       = err_txt
    EXCEPTIONS

      fe_file_not_exists = 1

      fe_file_read_error = 2

      ap_no_authority    = 3

      ap_file_open_error = 4

      ap_file_exists     = 5

      OTHERS
             = 6
.
  IF
 sy-subrc <> 0
.
    IF
 sy-msgty = ''
 .
      sy-msgty = 'E'
 .
    ENDIF
 .
    MESSAGE
 ID
 sy-msgid TYPE
 sy-msgty NUMBER
 sy-msgno
            WITH
 sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF
.
  IF
 error = 'X'
.
    MESSAGE
 err_txt TYPE
 'I'
.
    STOP
.
  ENDIF
.
*  IF sy-subrc <> 0.

*    CASE sy-subrc  .

*      WHEN 1 .

*        MESSAGE '本地文件不存在!' TYPE 'I' .

*      WHEN 2 .

*        MESSAGE '读取本地文件出错!' TYPE 'I' .

*      WHEN 3 .

*        MESSAGE '服务器权限错误!' TYPE 'I' .

*      WHEN 4 .

*        MESSAGE '服务器文件打开错误!' TYPE 'I' .

*      WHEN 5 .

*        MESSAGE '服务器文件已经存在!' TYPE 'I' .

*      WHEN 6 .

*        MESSAGE '其他错误!' TYPE 'I' .

*    ENDCASE .

*  ENDIF.

ENDFORM
.                    "UP_FILE

*&---------------------------------------------------------------------*

*&      Form  UPLOADREQUEST

*&---------------------------------------------------------------------*

FORM
 uploadrequest .
  DATA
:
      filename LIKE
 sdbah-actid ,
      extension LIKE
 sdbad-funct,
      n TYPE
 i
 ,
      m
 TYPE
 i
 .
  CALL
 FUNCTION
 'SPLIT_FILENAME'

    EXPORTING

      long_filename  = p_file
    IMPORTING

      pure_filename  = filename
      pure_extension = extension.
  CONCATENATE
 filename '.'
 extension INTO
 upfilename .
  CONCATENATE
 extension filename INTO
 request.
  CONCATENATE
 dir_trans 'cofiles'
 upfilename INTO
 path2 SEPARATED
 BY
 flag.
  PERFORM
 up_file USING
 path2
                        p_file .
  upfilename(1
) = 'R'
.
  CONCATENATE
 dir_trans 'data'
 upfilename INTO
 path2 SEPARATED
 BY
 flag.
  n = STRLEN
( p_file ).
  m
 = n - 11
 .
  p_file+m
(1
) = 'R'
.
  PERFORM
 up_file USING
 path2
                        p_file .
ENDFORM
.                    " UPLOADREQUEST

*&---------------------------------------------------------------------*

*&      Form  addrequest

*&---------------------------------------------------------------------*

FORM
 addrequest .
  DATA
 system LIKE
 tmscsys-sysnam .
  system = sy-sysid.
  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_client IS
 INITIAL
.
    CALL
 FUNCTION
 'TMS_MGR_MAINTAIN_TR_QUEUE'

      EXPORTING

        iv_command                 = 'FILLCLIENT'

        iv_system                  = system
        iv_request                 = request
        iv_tarcli                  = p_client
        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
.
  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_client
      iv_some_active        = space
    EXCEPTIONS

      cancelled_by_user     = 1

      import_request_denied = 2

      import_request_failed = 3

      OTHERS
                = 4
.
ENDFORM
.                    " addrequest

 

 

转自老白 的blog

抱歉!评论已关闭.