跨系统传输请求 程序代码

内容: 当某公司有多个平行系统时,比如 多个dev ,但是部署在不同服务器。有时候需要传输请求至其它系统。


PS:传输至同系统中的不同client 用TCODE: SCC1.


*&---------------------------------------------------------------------*
*& Report ZTRANS_TR
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ztrans_tr.

INCLUDE ztrans_tr_top.
INCLUDE ztrans_tr_form.





AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_tr-low.
  PERFORM frm_value_trkorr.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_dfname.
*  PERFORM frm_upload_file.

* call f4-help
  PERFORM frm_valreq_ftfront USING
                            '1000'
                            'Quelldatei auf Frontend'(007).

START-OF-SELECTION.

  PERFORM frm_get_data.
  PERFORM frm_down_file.
*&---------------------------------------------------------------------*
*&      Form  FRM_VALUE_TRKORR
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_value_trkorr .

  DATAlv_trfunctions  LIKE  trpari-w_longstat,
        lv_trstatus     LIKE  trpari-w_longstat,
        lv_trkorr       TYPE  e070-trkorr,
        ls_dynpfield  LIKE dynpread,
        lt_dynpfields LIKE dynpread    OCCURS 0.

  lv_trfunctions sctsc_types_all.
  lv_trstatus    sctsc_states_changeable.

  GET CURSOR FIELD ls_dynpfield-fieldname.
  APPEND ls_dynpfield TO lt_dynpfields.

  CALL FUNCTION 'DYNP_VALUES_READ'
       EXPORTING
            dyname     'ZTRANS_TR'
            dynumb     sy-dynnr
       TABLES
            dynpfields lt_dynpfields.

  READ TABLE lt_dynpfields INTO ls_dynpfield INDEX 1.
  lv_trkorr ls_dynpfield-fieldvalue.

  CALL FUNCTION 'TR_F4_REQUESTS'
       EXPORTING
            iv_username         space
            iv_trkorr_pattern   lv_trkorr
            iv_trfunctions      lv_trfunctions
            iv_trstatus         lv_trstatus
       IMPORTING
            ev_selected_request lv_trkorr.

  ls_dynpfield-fieldvalue lv_trkorr.
  MODIFY lt_dynpfields FROM ls_dynpfield
                       INDEX 1
                       TRANSPORTING fieldvalue.
  CALL FUNCTION 'DYNP_VALUES_UPDATE'
       EXPORTING
            dyname     'ZTRANS_TR'
            dynumb     sy-dynnr
       TABLES
            dynpfields lt_dynpfields.
ENDFORM.
**&---------------------------------------------------------------------*
**&      Form  FRM_UPLOAD_FILE
**&---------------------------------------------------------------------*
**       从本地打开文件并读取数据到内表
**----------------------------------------------------------------------*
**  -->  p1        text
**  <--  p2        text
**----------------------------------------------------------------------*
*FORM frm_upload_file .
*
*   DATA:
*     lw_file_names TYPE file_table,
*     lv_path       TYPE rlgrap-filename,
*     lv_subrc      TYPE i.
*
*   CALL METHOD cl_gui_frontend_services=>file_open_dialog
*     EXPORTING
**      initial_directory       = 'e:study'
*      default_filename = '*.xls'
**      multiselection          = 'X'
*    CHANGING
*       file_table              = gt_file_names[]
*       rc                      = lv_subrc
*     EXCEPTIONS
*       file_open_dialog_failed = 1
*       cntl_error              = 2
*       error_no_gui            = 3
*       not_supported_by_gui    = 4
*       OTHERS                  = 5.
*
*   READ TABLE gt_file_names INTO lw_file_names INDEX 1.
*   p_dfname = lw_file_names-filename.
*
* ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_DOWN_FILE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_down_file .
  DATAl_flg_open_error  TYPE boolean.
  DATAl_os_message(100TYPE c.
  DATAl_ftappl TYPE rcgfiletr-ftappl.
  DATAlv_tr TYPE char30.
  DATAl_overwrite TYPE rcgfiletr-iefow.
  DATAls_tr TYPE ty_tr.
  DATAlv_ERR TYPE char1.

  LOOP AT gt_tr INTO ls_tr.

    CALL FUNCTION 'ARCHIVFILE_SERVER_TO_CLIENT'
     EXPORTING
       path                  ls_tr-server_path
       targetpath            ls_tr-local_path
     EXCEPTIONS
       error_file             1
       no_authorization       2
       OTHERS                 3.

    IF SY-SUBRC <> 0.
      lv_ERR 'X'.
    ENDIF.
  ENDLOOP.
  IF LV_ERR IS INITIAL.
    MESSAGE 'DOWNLOAD SUCCESS' TYPE 'S'.
  ELSE.
    MESSAGE 'DOWNLOAD FAILURE' TYPE 'E' DISPLAY LIKE 'E'.
  ENDIF.

  IF P_E1D 'X'.
    CALL FUNCTION 'ZFM_TR_TRANSPORT' DESTINATION 'E1DCLNT200'
      STARTING NEW TASK 'TRANS2'
      TABLES
        it_tr         gt_tr.
  ENDIF.

  IF P_E2D 'X'.
    CALL FUNCTION 'ZFM_TR_TRANSPORT' DESTINATION 'E2DCLNT200'
      STARTING NEW TASK 'TRANS2'
      TABLES
        it_tr         gt_tr.
  ENDIF.

  IF P_E3D 'X'.
    CALL FUNCTION 'ZFM_TR_TRANSPORT' DESTINATION 'E3DCLNT200'
      STARTING NEW TASK 'TRANS3'
      TABLES
        it_tr         gt_tr.
  ENDIF.

  IF P_E4D 'X'.
    CALL FUNCTION 'ZFM_TR_TRANSPORT' DESTINATION 'E4DCLNT200'
      STARTING NEW TASK 'TRANS4'
      TABLES
        it_tr         gt_tr.
  ENDIF.

  IF P_E5D 'X'.
    CALL FUNCTION 'ZFM_TR_TRANSPORT' DESTINATION 'E5DCLNT200'
      STARTING NEW TASK 'TRANS5'
      TABLES
        it_tr         gt_tr.
  ENDIF.


*  if sy-subrc = 0.
*    MESSAGE 'DOWNLOAD SUCCESS' TYPE 'S'.
*  ELSE.
*    MESSAGE 'DOWNLOAD FAILURE' TYPE 'E' DISPLAY LIKE 'E'.
*  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_VALREQ_FTFRONT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0036   text
*      -->P_0037   text
*----------------------------------------------------------------------*
FORM frm_valreq_ftfront
* Purpose: f4-help for the filename on the front end
  USING
    i_dynpro LIKE d020s-dnum
    i_title  TYPE string.

* Local data ----------------------------------------------------------

  DATAl_strlen    TYPE i.
  DATAl_ftfront   LIKE dynpread-fieldvalue.
  DATAl_filename  TYPE string.
  DATAl_new_filename LIKE rcgfiletr-ftfront.
  DATAl_path      TYPE string.
  DATAl_char      TYPE c.
  DATAl_file_extension_tab TYPE filetable WITH HEADER LINE.

* Function body--------------------------------------------------------

* read value of field from dynpro
  CALL FUNCTION 'C14Z_DYNP_READ_FIELD'
    EXPORTING
      i_program      'ZTRANS_TR'
      i_dynpro       i_dynpro
      i_fieldname    'P_DFNAME'
      i_flg_steploop space
    CHANGING
      e_value        l_ftfront
    EXCEPTIONS
      OTHERS         1.

  IF sy-subrc 0.

*   split filename into path and filename
    l_strlen strlenl_ftfront ).
    CLEARl_filename.
    l_path l_ftfront.
    WHILE l_strlen > 0.
      l_char l_ftfront+l_strlen(1).
* Begin Correction 30.03.2010 1454105 **********************************
      IF l_char '\' OR l_char '/'.
* End Correction 30.03.2010 1454105 ************************************
        l_strlen l_strlen + 1.
        l_path     l_ftfront(l_strlen).
        l_filename l_ftfront+l_strlen.
        EXIT.
      ELSE.
        l_strlen l_strlen 1.
      ENDIF.
    ENDWHILE.

  ENDIF.

* build extension list of file types
  APPEND 'dat' TO l_file_extension_tab.
  APPEND 'doc' TO l_file_extension_tab.
  APPEND 'key' TO l_file_extension_tab.
  APPEND 'txt' TO l_file_extension_tab.
  APPEND '*'   TO l_file_extension_tab.

  l_filename 'FILENAME'.
* call help
  CALL FUNCTION 'C13Z_FRONTEND_FILENAME_GET'
    EXPORTING
      i_window_title       i_title
      i_default_filename   l_filename
      i_initial_directory  l_path
    IMPORTING
      e_filename           l_new_filename
    TABLES
      i_file_extension_tab l_file_extension_tab
    EXCEPTIONS
      internal_error       1
      OTHERS               2.
  IF NOT sy-subrc IS INITIAL.
    " nothing to do

* Begin Correction 30.03.2010 1454105 **********************************
  ELSEIF NOT l_new_filename IS INITIAL.
* End Correction 30.03.2010 1454105 ************************************
    p_dfname l_new_filename.
  ENDIF.


ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_get_data .

  DATAlt_trange TYPE RANGE OF trdyse01sn-tr_trkorr.
  DATA ls_trange LIKE LINE OF lt_trange.
  DATAls_tr TYPE ty_tr,
        lv_filename    TYPE char20,
        lv_dfname      TYPE rlgrap-filename,
        lv_server_path TYPE saepfad.

  lv_dfname p_dfname.
  LOOP AT s_tr INTO ls_trange.

    lv_filename 'R' && s_tr-low+4(6&& '.E1D'.
    lv_server_path '/usr/sap/trans/data/' && lv_filename.
    REPLACE 'FILENAME' WITH lv_filename INTO lv_dfname.
    CONDENSE  lv_dfname  NO-GAPS .
*    CONCATENATE
    ls_tr-local_path  lv_dfname.
    ls_tr-server_path lv_server_path.
    ls_tr-filenam lv_filename.
    ls_tr-TR_CODE     s_tr-low.
    APPEND ls_tr TO gt_tr.
    CLEAR ls_tr.

    lv_dfname p_dfname.
    lv_filename 'K' && s_tr-low+4(6&& '.E1D'.
    lv_server_path '/usr/sap/trans/cofiles/' && lv_filename.
    REPLACE 'FILENAME' WITH lv_filename INTO lv_dfname.
    CONDENSE  lv_dfname  NO-GAPS .
    ls_tr-local_path  lv_dfname.
    ls_tr-server_path lv_server_path.
    ls_tr-filenam lv_filename.
    ls_tr-TR_CODE     s_tr-low.
    APPEND ls_tr TO gt_tr.
    CLEAR ls_tr.

  ENDLOOP.


ENDFORM.


" ”“”“”“”“”“”相关 function :ZFM_TR_TRANSPORT***************************

FUNCTION zfm_tr_transport.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  TABLES
*"      IT_TR STRUCTURE  YTY_TR_FILE
*"      IT_TR2 STRUCTURE  YTY_TR
*"----------------------------------------------------------------------
  DATA ls_tr TYPE yty_tr_file.
  DATAls_log TYPE yty_tr_log,
        lt_log TYPE STANDARD TABLE OF yty_tr_log.

  DATA :
    unixcmd       TYPE string,
    l_status      TYPE extcmdexex-status,
    l_exitcode    TYPE extcmdexex-exitcode,
    lwa_cmdoutput TYPE  btcxpm,
    lit_cmdoutput TYPE TABLE OF btcxpm,
    l_param       TYPE  btcxpgpar.
*



  LOOP AT it_tr INTO ls_tr .
    CALL FUNCTION 'ARCHIVFILE_CLIENT_TO_SERVER'
      EXPORTING
        path             ls_tr-local_path
        targetpath       ls_tr-server_path
      EXCEPTIONS
        error_file       1
        no_authorization 2
        OTHERS           3.

    IF sy-subrc 0.

      ls_log-flag 'X'.
    ELSE.
      ls_log-flag space.
    ENDIF.

    ls_log-tr_code ls_tr-tr_code.
    ls_log-filenam ls_tr-filenam.
    ls_log-dates   sy-datum.
    ls_log-times   sy-uzeit.
    ls_log-transer sy-uname.
    APPEND ls_log TO lt_log.
    CLEAR ls_log.

    CONCATENATE '+'  'ADDTOBUFFER' '+'  ls_tr-tr_code '+'  sy-sysid  '+'  'pf=/usr/sap/trans/bin/TP_DOMAIN_'  sy-sysid  '.PFL'
INTO unixcmd.

    TRANSLATE unixcmd USING '+ '.
    l_param unixcmd.

    CALL FUNCTION 'SXPG_CALL_SYSTEM'
      EXPORTING
        commandname                   'ZTP'
        additional_parameters         l_param
      IMPORTING
        status                        l_status
        exitcode                      l_exitcode
      TABLES
        exec_protocol                 lit_cmdoutput
      EXCEPTIONS
        no_permission                 1
        command_not_found             2
        parameters_too_long           3
        security_risk                 4
        wrong_check_call_interface    5
        program_start_error           6
        program_termination_error     7
        x_error                       8
        parameter_expected            9
        too_many_parameters           10
        illegal_command               11
        wrong_asynchronous_parameters 12
        cant_enq_tbtco_entry          13
        jobcount_generation_error     14
        OTHERS                        15.

    IF sy-subrc EQ 0.
      LOOP AT lit_cmdoutput INTO lwa_cmdoutput.
        WRITE / lwa_cmdoutput.
      ENDLOOP.
    ENDIF.


    CONCATENATE '+'  'import' '+'  ls_tr-tr_code '+'  sy-sysid  '+'  'client=200' '+'  'u0126'  '+' 'pf=/usr/sap/trans/bin/TP_DOMAIN_'  sy-sysid  '.PFL'
INTO unixcmd.

    TRANSLATE unixcmd USING '+ '.
    l_param unixcmd.

    CALL FUNCTION 'SXPG_CALL_SYSTEM'
      EXPORTING
        commandname                   'ZTP'
        additional_parameters         l_param
      IMPORTING
        status                        l_status
        exitcode                      l_exitcode
      TABLES
        exec_protocol                 lit_cmdoutput
      EXCEPTIONS
        no_permission                 1
        command_not_found             2
        parameters_too_long           3
        security_risk                 4
        wrong_check_call_interface    5
        program_start_error           6
        program_termination_error     7
        x_error                       8
        parameter_expected            9
        too_many_parameters           10
        illegal_command               11
        wrong_asynchronous_parameters 12
        cant_enq_tbtco_entry          13
        jobcount_generation_error     14
        OTHERS                        15.

    IF sy-subrc EQ 0.
      LOOP AT lit_cmdoutput INTO lwa_cmdoutput.
        WRITE / lwa_cmdoutput.
      ENDLOOP.
    ENDIF.

  ENDLOOP.

  MODIFY yty_tr_log FROM TABLE lt_log.
  IF sy-subrc 0.
    COMMIT WORK AND WAIT.
  ELSE.
    ROLLBACK WORK.
  ENDIF.




ENDFUNCTION.





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SAP_Damon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值