首页 > 编程语言 >TR上传下载程序

TR上传下载程序

时间:2024-01-22 15:56:29浏览次数:25  
标签:sy TR 上传下载 程序 request iv file ENDIF TYPE

*&---------------------------------------------------------------------*
*& Report ZMIGRATEREQUEST
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zmigraterequest NO STANDARD PAGE HEADING .

TYPE-POOLS: trwbo, stms.
TABLES: sscrfields.
DATA: retcode ,
      len       TYPE i,
      tra_dir   TYPE text255,
      request   LIKE e070-trkorr,
      system    LIKE tmscsys-sysnam,
      req_infos TYPE stms_wbo_requests WITH HEADER LINE.
DATA: filename  LIKE sdbah-actid,
      extension LIKE sdbad-funct.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t1.
PARAMETERS: p_down RADIOBUTTON GROUP typ USER-COMMAND sele DEFAULT 'X'.
PARAMETERS: p_upld RADIOBUTTON GROUP typ.
SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE t2.
PARAMETERS: p_file TYPE char255 LOWER CASE MODIF ID m2,
            p_clnt TYPE mandt DEFAULT sy-mandt MATCHCODE OBJECT h_t000 MODIF ID m2,
            p_view AS CHECKBOX DEFAULT 'X' 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 TYPE char128 DEFAULT 'C:\' LOWER CASE MODIF ID m3.
SELECTION-SCREEN END OF BLOCK b3.

INITIALIZATION.
  system = sy-sysid.
  CALL FUNCTION 'RSPO_R_SAPGPARAM'
    EXPORTING
      name   = 'DIR_TRANS'
    IMPORTING
      value  = tra_dir
    EXCEPTIONS
      error  = 1
      OTHERS = 0.
  IF tra_dir IS INITIAL.
    MESSAGE e000(oo) WITH 'DIR_TRANS目录未找到'.
  ENDIF.

AT SELECTION-SCREEN OUTPUT.
  t1 = '选择功能'.
  t2 = '上传参数'.
  t3 = '下载参数'.
  %_p_down_%_app_%-text = '下载请求到本机'.
  %_p_upld_%_app_%-text = '上传请求'.
  %_p_file_%_app_%-text = '文件'.
  %_p_clnt_%_app_%-text = '上传到Client'.
  %_p_view_%_app_%-text = '传输前查看请求内容'.
  %_p_reqnum_%_app_%-text = '请求号'.
  %_p_folder_%_app_%-text = '下载到文件夹'.

  LOOP AT SCREEN.
    CASE screen-group1.
      WHEN 'M2'.
        IF p_down = 'X'.
          screen-active = '0'.
        ELSE.
          screen-active = '1'.
        ENDIF.
      WHEN 'M3'.
        IF p_down = 'X'.
          screen-active = '1'.
        ELSE.
          screen-active = '0'.
        ENDIF.
    ENDCASE.
    MODIFY SCREEN.
  ENDLOOP.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_reqnum.
  DATA: request_header TYPE trwbo_request_header,
        is_selection   TYPE trwbo_selection.
  is_selection-reqstatus = 'R'.
  CALL FUNCTION 'TR_PRESENT_REQUESTS_SEL_POPUP'
    EXPORTING
      iv_organizer_type   = ''
      is_selection        = is_selection
    IMPORTING
      es_selected_request = request_header.
  p_reqnum = request_header-trkorr.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_folder.
  DATA: folder  TYPE string.
  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.
  CALL FUNCTION 'WS_FILENAME_GET'
    EXPORTING
      def_path         = 'C:\'
      mask             = ',请求控制文件(K*.*),K*.*,ALL File(*.*),*.*.'
      mode             = 'O'
    IMPORTING
      filename         = p_file
    EXCEPTIONS
      inv_winsys       = 1
      no_batch         = 2
      selection_cancel = 3
      selection_error  = 4
      OTHERS           = 5.

START-OF-SELECTION.
  PERFORM check_input .
  CASE 'X'.
    WHEN p_down.
      PERFORM downrequest .
    WHEN p_upld.
      PERFORM read_req.
      PERFORM uprequest.
      IF p_view = 'X'.
        PERFORM viewrequest.
      ELSE.
        PERFORM import_request.
      ENDIF.
  ENDCASE.

*&--------------------------------------------------------------------*
*&      Form  check_input
*&--------------------------------------------------------------------*
FORM check_input.
  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 'E' NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  IF p_down = 'X'.
    IF p_reqnum = '' OR p_folder = ''.
      MESSAGE s000(oo) WITH '必须输入请求号和本机文件夹'.
      STOP.
    ENDIF.
  ELSE.
    IF p_clnt = '' OR p_file = '' .
      MESSAGE s000(oo) WITH '必须输入文件名和Client'.
      STOP.
    ELSE.
      CALL FUNCTION 'SPLIT_FILENAME'
        EXPORTING
          long_filename  = p_file
        IMPORTING
          pure_filename  = filename
          pure_extension = extension.
      CONCATENATE extension filename INTO request.
    ENDIF.
  ENDIF.
ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  downrequest
*&---------------------------------------------------------------------*
FORM downrequest .
  DATA: lappfile LIKE rcgfiletr-ftappl,
        lguifile LIKE rcgfiletr-ftfront.

  len = strlen( p_folder ) - 1.
  IF p_folder+len CA '/\'.
    p_folder+len = ''.
  ENDIF.

  CONCATENATE tra_dir '/data/R ' p_reqnum+4(6) '.' p_reqnum(3) INTO lappfile.
  CONCATENATE p_folder  '\R' p_reqnum+4(6) '.' p_reqnum(3) INTO lguifile.
  PERFORM down_file USING lappfile lguifile.

  CONCATENATE tra_dir '/cofiles/K ' p_reqnum+4(6) '.' p_reqnum(3) INTO lappfile.
  CONCATENATE p_folder  '\K' p_reqnum+4(6) '.' p_reqnum(3) INTO lguifile.
  PERFORM down_file USING lappfile lguifile.

  MESSAGE s000(oo) WITH '成功下载到' lguifile.
ENDFORM.                    " downrequest

*&--------------------------------------------------------------------*
*&      Form  DOWN_FILE
*&--------------------------------------------------------------------*
FORM down_file USING applfile frontfile .
  DATA: lappfile     LIKE rcgfiletr-ftappl,
        lguifile     LIKE rcgfiletr-ftfront,
        err_flg      LIKE boole-boole,
        err_txt(100) TYPE c.

  lappfile = applfile .
  lguifile = frontfile .
  sy-cprog = 'RC1TCG3Y'.
  CALL FUNCTION 'C13Z_FILE_DOWNLOAD_BINARY'
    EXPORTING
      i_file_front_end    = lguifile
      i_file_appl         = lappfile
      i_file_overwrite    = 'X'
    IMPORTING
      e_flg_open_error    = err_flg
      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.
    MESSAGE ID sy-msgid TYPE 'E' NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
  IF err_flg = 'X'.
    MESSAGE e000(oo) WITH err_txt.
  ENDIF.
ENDFORM.                               " DOWN_FILE

*&--------------------------------------------------------------------*
*&      Form  read_req
*&--------------------------------------------------------------------*
FORM read_req.
  CALL FUNCTION 'TMS_MGR_READ_TRANSPORT_REQUEST'
    EXPORTING
      iv_request                 = request
      iv_target_system           = system
    IMPORTING
      et_request_infos           = req_infos[]
    EXCEPTIONS
      read_config_failed         = 1
      table_of_requests_is_empty = 2
      system_not_available       = 3
      OTHERS                     = 4.
  READ TABLE req_infos INDEX 1.
  IF req_infos-e070 IS NOT INITIAL .
    CALL FUNCTION 'POPUP_TO_CONFIRM'
      EXPORTING
        titlebar       = '确认'
        text_question  = '请求文件已存在,是否覆盖?'
        default_button = '1'
      IMPORTING
        answer         = retcode.
    IF retcode <> '1'.
      MESSAGE s000(oo) WITH '用户终止'.
      STOP.
    ENDIF.
  ENDIF.
ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  UPLOADREQUEST
*&---------------------------------------------------------------------*
FORM uprequest .
  DATA: lappfile LIKE rcgfiletr-ftappl.

  CONCATENATE tra_dir '/cofiles/' filename '.' extension INTO lappfile .
  PERFORM up_file USING lappfile p_file .

  len = strlen( p_file ) - 11.
  p_file+len(1) = 'R'.
  CONCATENATE tra_dir '/data/R' filename+1 '.' extension INTO lappfile .
  PERFORM up_file USING lappfile p_file .

  CALL FUNCTION 'TMS_MGR_FORWARD_TR_REQUEST'
    EXPORTING
      iv_request      = request
      iv_target       = system
      iv_tardom       = ''
      iv_tarcli       = ''
      iv_source       = system
      iv_srcdom       = ''
      iv_import_again = 'X'
      iv_monitor      = 'X'
      iv_verbose      = ''
    EXCEPTIONS
      OTHERS          = 99.
  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.

*&--------------------------------------------------------------------*
*&      Form  UP_FILE
*&--------------------------------------------------------------------*
FORM up_file USING applfile frontfile .
  DATA: lappfile     LIKE rcgfiletr-ftappl,
        lguifile     LIKE rcgfiletr-ftfront,
        err_flg      LIKE boole-boole,
        err_txt(100) TYPE c.

  lappfile = applfile .
  lguifile = frontfile .
  sy-cprog = 'RC1TCG3Y'.
  CALL FUNCTION 'C13Z_FILE_UPLOAD_BINARY'
    EXPORTING
      i_file_front_end   = lguifile
      i_file_appl        = lappfile
      i_file_overwrite   = 'X'
    IMPORTING
      e_flg_open_error   = err_flg
      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.
    MESSAGE ID sy-msgid TYPE 'E' NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
  IF err_flg = 'X'.
    MESSAGE e000(oo) WITH err_txt.
  ENDIF.
ENDFORM.                    "UP_FILE

*&--------------------------------------------------------------------*
*&
*&--------------------------------------------------------------------*
FORM import_request.
  DATA: it_clients TYPE  stms_clients.

  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 'E' NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  APPEND p_clnt TO it_clients.
  CALL FUNCTION 'TMS_UI_IMPORT_TR_REQUEST'
    EXPORTING
      iv_system             = system
      iv_request            = request
      iv_tarcli             = p_clnt
      iv_some_active        = space
      it_clients            = it_clients
    EXCEPTIONS
      cancelled_by_user     = 1
      import_request_denied = 2
      import_request_failed = 3
      OTHERS                = 4.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE 'E' NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4  .
  ENDIF.

  CALL FUNCTION 'TMS_UIQ_IMPORT_QUEUE_DISPLAY'
    EXPORTING
      iv_system = system
    EXCEPTIONS
      OTHERS    = 99.
ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  viewrequest
*&---------------------------------------------------------------------*
FORM viewrequest.
  DATA queue TYPE tmscsys.

  SELECT SINGLE * INTO queue FROM tmscsys WHERE sysnam = system.
  CALL FUNCTION 'TMS_UI_SHOW_TRANSPORT_REQUEST'
    EXPORTING
      iv_request                    = request
      iv_target_system              = ''
      is_queue                      = queue
    EXCEPTIONS
      show_transport_request_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.

  CALL FUNCTION 'POPUP_TO_CONFIRM'
    EXPORTING
      titlebar              = '确认'
      text_question         = '是否继续传输?'
      text_button_1         = '传输'
      text_button_2         = '退出,不传输'
      icon_button_1         = 'ICON_IMPORT_TRANSPORT_REQUEST'
      default_button        = '2'
      display_cancel_button = 'X'
    IMPORTING
      answer                = retcode.
  IF retcode = '1'.
    PERFORM import_request.
  ELSE.
    IF req_infos-e070 IS INITIAL.
      CALL FUNCTION 'TMS_MGR_MAINTAIN_TR_QUEUE'
        EXPORTING
          iv_command = 'DELFROMBUFFER'
          iv_system  = system
          iv_domain  = ''
          iv_request = request
          iv_tarcli  = ''
          iv_monitor = 'X'
          iv_verbose = ''
        EXCEPTIONS
          OTHERS     = 99.
    ENDIF.
  ENDIF.
ENDFORM.                    "viewrequest

 

标签:sy,TR,上传下载,程序,request,iv,file,ENDIF,TYPE
From: https://www.cnblogs.com/Anyohh233/p/17980239

相关文章

  • FICO清账程序
    *&---------------------------------------------------------------------**&ReportZFIP001*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------......
  • CodeForces 1609G A Stroll Around the Matrix
    洛谷传送门CF传送门我独立做出一道*3000?考虑对于单次询问,除了\(O(nm)\)的dp,有没有什么方法能快速算出答案。发现若\(a_{i+1}-a_i<b_{j+1}-b_j\)则\(i\getsi+1\),否则\(j\getsj+1\)是最优的。这个贪心的证明不难,考虑当前新走到某一行或某一列的贡献......
  • 【问题解决】Kafka报错 Bootstrap broker x.x.x.x:9092 (id: -1 rack: null) disconne
    【问题解决】Kafka报错Bootstrapbrokerx.x.x.x:9092(id:-1rack:null)disconnected和服务器连接已经断开。可能kafka服务器停止问题复现近日针对某一客户需求开发了一个需要使用Kafka的功能,功能是什么暂且不论,在本地虚机的Kafka连接一切正常遂放到测试服务器上验证功......
  • Kafka【问题 02】KafkaTemplate 报错 Bootstrap broker localhost:9092 (id: -1 rack:
    Kafka【问题02】KafkaTemplate报错Bootstrapbrokerlocalhost:9092(id:-1rack:null)disconnected问题解决1.报错信息主要的报错信息:Connectiontonode-1(localhost/127.0.0.1:9092)couldnotbeestablished.Brokermaynotbeavailable.和Bootstrapbrok......
  • springboot升级到2.6.x和2.7.x 兼容hystrix
    一、pom.xml需要引入的依赖二、项目开启熔断器开关2.1注解方式2.2xml方式三、依赖类缺失问题四、版本匹配安全检查问题五、测试验证六、结论一、pom.xml需要引入的依赖1<!--springboot升级到2.6.7,同样适用于2.7.0,2.7.18等-->2<parent>3......
  • go tool trace 跟踪执行过程,程序优化过程
    Go并发优化的9大技巧,效果立竿见影原创 Go先锋 Go先锋 2023-11-1008:02 发表于广东 听全文Go先锋读完需要8分钟速读仅需3分钟  概述Go语言以其在并发编程方面的优势而闻名,但合理利用各种优化技巧可以进一步提升Go程序的并发性能。本文将介绍在CP......
  • string 函数
    在C++中,string类型是处理字符串的一种方便的方式,它包含了许多有用的成员函数来进行字符串操作。以下是一些常用的string函数的示例说明:构造函数和赋值:创建空字符串:stringstr;使用字符串常量初始化:stringstr="Hello";使用字符数组初始化:charcharArray[]="World";......
  • exe安装程序的的执行过程
     执行一个.exe安装程序的过程涉及多个步骤,旨在将新软件或更新安装到Windows操作系统上。以下是这个过程的例子,说明了当用户运行一个名为Setup.exe的安装程序时发生的步骤:例子:安装名为“ExampleApp”的软件用户操作:用户双击Setup.exe文件或在命令行中执行该文件......
  • NCC Mocha v0.10 发布,.NET 开发的基于 OpenTelemetry 的 APM 系统
    目录项目简介项目进度v0.10发布内容项目背景平台功能技术架构v0.10快速体验启动项目Trace数据的发送配置Jaeger数据源Trace数据的查询项目简介Mocha是一个基于.NET开发的APM系统,同时提供可伸缩的可观测性数据分析和存储平台。项目地址:https://github.com/dotnetcore......
  • 基于taro搭建小程序多项目框架
    前言为什么需要这样一个框架,以及这个框架带来的好处是什么?从字面意思上理解:该框架可以用来同时管理多个小程序,并且可以抽离公用组件或业务逻辑供各个小程序使用。当你工作中面临这种同时维护多个小程序的业务场景时,可以考虑使用这种模式。灵感来自最近webpack的多项目打包构建......