ABAP 自动传输副本请求
1.SE37在开发机和目标系统建立函数:Z_TR_IMPORT
函数入参:(参数名称可以到函数代码中复制)
函数出参:
源代码:
1 FUNCTION z_tr_import. 2 *"---------------------------------------------------------------------- 3 *"*"本地接口: 4 *" IMPORTING 5 *" VALUE(IV_SYSTEM) TYPE TMSCSYS-SYSNAM 6 *" VALUE(IV_DOMAIN) TYPE TMSCSYS-DOMNAM OPTIONAL 7 *" VALUE(IV_REQUEST) TYPE TMSBUFFER-TRKORR 8 *" VALUE(IV_CLIENT) TYPE STPA-CLIENT OPTIONAL 9 *" EXPORTING 10 *" VALUE(SUCESS) TYPE CHAR1 11 *" VALUE(MESSAGE) TYPE CHAR100 12 *"---------------------------------------------------------------------- 13 DATA: et_requests TYPE tmsiqreqs, 14 es_requests LIKE LINE OF et_requests. 15 16 "刷新请求号 17 CALL FUNCTION 'TMS_UIQ_IQD_READ_QUEUE' 18 EXPORTING 19 iv_system = iv_system 20 iv_domain = iv_domain 21 iv_collect = 'X' 22 iv_read_shadow = 'X' 23 iv_max_exp = '010' 24 iv_monitor = 'X' 25 IMPORTING 26 * EV_COLLECT_DATE = 27 * EV_COLLECT_TIME = 28 * EV_NR_OF_GRPS = 29 * EV_IS_A_QA_SYS = 30 * EV_NO_IMP_ALL = 31 * EV_IMP_SINGLE = 32 * EV_FTP_INCOMPLETE = 33 * ES_SYSTEM = 34 * ES_BUFCNT = 35 et_requests = et_requests 36 * ET_CLIENTS = 37 * ET_PROJECTS = 38 * TABLES 39 * TT_SYSTEM = 40 EXCEPTIONS 41 read_queue_failed = 1 42 OTHERS = 2. 43 IF sy-subrc <> 0. 44 * Implement suitable error handling here 45 ENDIF. 46 47 "开始传输 48 SORT et_requests BY trkorr. 49 50 DATA: ls_request TYPE stms_tr_request, 51 it_requests TYPE stms_tr_requests. 52 53 READ TABLE et_requests INTO es_requests WITH KEY trkorr = iv_request BINARY SEARCH. 54 IF sy-subrc = 0. 55 56 MOVE-CORRESPONDING es_requests TO ls_request. 57 APPEND ls_request TO it_requests. 58 ELSE. 59 sucess = 'E'. 60 message = '刷新后未获取到该请求'. 61 RETURN. 62 ENDIF. 63 64 FREE et_requests. 65 66 DATA: lv_nr_of_inactive TYPE i, 67 lv_nr_of_suspend TYPE i, 68 lv_nr_of_finished TYPE i, 69 lv_nr_of_missing TYPE i. 70 71 * check finished, denied or not approved requests or missing files 72 CLEAR lv_nr_of_inactive. 73 CLEAR lv_nr_of_suspend. 74 CLEAR lv_nr_of_finished. 75 CLEAR lv_nr_of_missing. 76 77 DATA: 78 gc_tp_actflg_inactive LIKE tpbuffer-actflg VALUE 'I', 79 gc_tp_actflg_suspend LIKE tpbuffer-actflg VALUE 'D', 80 gc_tp_impflg_2 LIKE tpbuffer-impflg VALUE '2'. 81 82 LOOP AT it_requests INTO ls_request. 83 IF ls_request-actflg = gc_tp_actflg_inactive. 84 ADD 1 TO lv_nr_of_inactive. 85 ELSEIF ls_request-actflg = gc_tp_actflg_suspend. 86 ADD 1 TO lv_nr_of_suspend. 87 ELSEIF ls_request-impflg = gc_tp_impflg_2. 88 ADD 1 TO lv_nr_of_finished. 89 ELSEIF ls_request-nodataflg = 'X' AND 90 ls_request-actflg <> gc_tp_actflg_suspend. 91 ADD 1 TO lv_nr_of_missing. 92 ENDIF. 93 ENDLOOP. 94 IF lv_nr_of_inactive > 0. " not approved 95 READ TABLE it_requests INTO ls_request 96 WITH KEY actflg = gc_tp_actflg_inactive. 97 MESSAGE s657(xt) WITH ls_request-trkorr lv_nr_of_inactive INTO message. 98 sucess = 'E'. 99 RETURN. 100 ENDIF. 101 IF lv_nr_of_suspend > 0. " denied (deleted) 102 READ TABLE it_requests INTO ls_request 103 WITH KEY actflg = gc_tp_actflg_suspend. 104 MESSAGE s649(xt) WITH ls_request-trkorr lv_nr_of_suspend INTO message. 105 sucess = 'E'. 106 RETURN. 107 ENDIF. 108 IF lv_nr_of_finished > 0. " already imported 109 READ TABLE it_requests INTO ls_request 110 WITH KEY impflg = gc_tp_impflg_2. 111 MESSAGE s658(xt) WITH ls_request-trkorr lv_nr_of_finished INTO message. 112 sucess = 'E'. 113 RETURN. 114 ENDIF. 115 116 * start 117 118 DATA ls_tp_trque TYPE stms_tp_trque. 119 120 * transfer missing data- and cofiles 121 IF lv_nr_of_missing > 0. 122 CALL FUNCTION 'TMS_MGR_TRANSMIT_TR_QUEUE' 123 EXPORTING 124 iv_tar_sys = iv_system 125 iv_tar_dom = iv_domain 126 iv_read_only = space 127 iv_use_list = space 128 iv_without_ftp = space 129 iv_monitor = 'X' 130 it_requests = it_requests 131 CHANGING 132 cs_tp_trque = ls_tp_trque 133 EXCEPTIONS 134 OTHERS = 99. 135 IF sy-subrc <> 0. 136 MESSAGE ID sy-msgid 137 TYPE 'I' 138 NUMBER sy-msgno 139 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO message. 140 sucess = 'E'. 141 RETURN. 142 ENDIF. 143 * analyse alert 144 IF ls_tp_trque-alert-id <> space. 145 message = '导入失败,请使用STMS重新导入'. 146 sucess = 'E'. 147 RETURN. 148 ENDIF. 149 ENDIF. 150 151 152 DATA: ev_tp_ret_code TYPE stpa-retcode, 153 ev_tp_alog TYPE stpa-file, 154 ev_tp_slog TYPE stpa-file, 155 ev_tp_pid TYPE stpa-pid, 156 ev_tpstat_key TYPE tmstpkey, 157 es_exception TYPE stmscalert, 158 et_tp_imports TYPE stms_tp_imports. 159 160 CALL FUNCTION 'TMS_MGR_IMPORT_TR_REQUEST' 161 EXPORTING 162 iv_system = iv_system 163 iv_domain = iv_domain 164 iv_request = iv_request 165 iv_client = iv_client 166 * IV_CTC_ACTIVE = 167 iv_overtake = 'X' 168 iv_import_again = 'X' 169 iv_ignore_originality = 'X' 170 iv_ignore_repairs = 'X' 171 iv_subset = 'X' 172 iv_offline = 'X' 173 it_requests = it_requests 174 IMPORTING 175 ev_tp_ret_code = ev_tp_ret_code 176 ev_tp_alog = ev_tp_alog 177 ev_tp_slog = ev_tp_slog 178 ev_tp_pid = ev_tp_pid 179 ev_tpstat_key = ev_tpstat_key 180 es_exception = es_exception 181 et_tp_imports = et_tp_imports 182 EXCEPTIONS 183 read_config_failed = 1 184 table_of_requests_is_empty = 2 185 OTHERS = 3. 186 IF sy-subrc <> 0. 187 MESSAGE ID sy-msgid 188 TYPE 'I' 189 NUMBER sy-msgno 190 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO message. 191 sucess = 'E'. 192 RETURN. 193 ELSE. 194 sucess = 'S'. 195 message = '已开始传输'. 196 ENDIF. 197 198 ENDFUNCTION.
2.在开发机使用事务码:SALE/SM59 配置好到目标机的远程连接,选择ABAP连接
3.打开事务码SE38,新建任意一个程序,拷贝如下代码,保存激活后点击执行
1 FUNCTION z_tr_import. 2 *"---------------------------------------------------------------------- 3 *"*"本地接口: 4 *" IMPORTING 5 *" VALUE(IV_SYSTEM) TYPE TMSCSYS-SYSNAM 6 *" VALUE(IV_DOMAIN) TYPE TMSCSYS-DOMNAM OPTIONAL 7 *" VALUE(IV_REQUEST) TYPE TMSBUFFER-TRKORR 8 *" VALUE(IV_CLIENT) TYPE STPA-CLIENT OPTIONAL 9 *" EXPORTING 10 *" VALUE(SUCESS) TYPE CHAR1 11 *" VALUE(MESSAGE) TYPE CHAR100 12 *"---------------------------------------------------------------------- 13 DATA: et_requests TYPE tmsiqreqs, 14 es_requests LIKE LINE OF et_requests. 15 16 "刷新请求号 17 CALL FUNCTION 'TMS_UIQ_IQD_READ_QUEUE' 18 EXPORTING 19 iv_system = iv_system 20 iv_domain = iv_domain 21 iv_collect = 'X' 22 iv_read_shadow = 'X' 23 iv_max_exp = '010' 24 iv_monitor = 'X' 25 IMPORTING 26 * EV_COLLECT_DATE = 27 * EV_COLLECT_TIME = 28 * EV_NR_OF_GRPS = 29 * EV_IS_A_QA_SYS = 30 * EV_NO_IMP_ALL = 31 * EV_IMP_SINGLE = 32 * EV_FTP_INCOMPLETE = 33 * ES_SYSTEM = 34 * ES_BUFCNT = 35 et_requests = et_requests 36 * ET_CLIENTS = 37 * ET_PROJECTS = 38 * TABLES 39 * TT_SYSTEM = 40 EXCEPTIONS 41 read_queue_failed = 1 42 OTHERS = 2. 43 IF sy-subrc <> 0. 44 * Implement suitable error handling here 45 ENDIF. 46 47 "开始传输 48 SORT et_requests BY trkorr. 49 50 DATA: ls_request TYPE stms_tr_request, 51 it_requests TYPE stms_tr_requests. 52 53 READ TABLE et_requests INTO es_requests WITH KEY trkorr = iv_request BINARY SEARCH. 54 IF sy-subrc = 0. 55 56 MOVE-CORRESPONDING es_requests TO ls_request. 57 APPEND ls_request TO it_requests. 58 ELSE. 59 sucess = 'E'. 60 message = '刷新后未获取到该请求'. 61 RETURN. 62 ENDIF. 63 64 FREE et_requests. 65 66 DATA: lv_nr_of_inactive TYPE i, 67 lv_nr_of_suspend TYPE i, 68 lv_nr_of_finished TYPE i, 69 lv_nr_of_missing TYPE i. 70 71 * check finished, denied or not approved requests or missing files 72 CLEAR lv_nr_of_inactive. 73 CLEAR lv_nr_of_suspend. 74 CLEAR lv_nr_of_finished. 75 CLEAR lv_nr_of_missing. 76 77 DATA: 78 gc_tp_actflg_inactive LIKE tpbuffer-actflg VALUE 'I', 79 gc_tp_actflg_suspend LIKE tpbuffer-actflg VALUE 'D', 80 gc_tp_impflg_2 LIKE tpbuffer-impflg VALUE '2'. 81 82 LOOP AT it_requests INTO ls_request. 83 IF ls_request-actflg = gc_tp_actflg_inactive. 84 ADD 1 TO lv_nr_of_inactive. 85 ELSEIF ls_request-actflg = gc_tp_actflg_suspend. 86 ADD 1 TO lv_nr_of_suspend. 87 ELSEIF ls_request-impflg = gc_tp_impflg_2. 88 ADD 1 TO lv_nr_of_finished. 89 ELSEIF ls_request-nodataflg = 'X' AND 90 ls_request-actflg <> gc_tp_actflg_suspend. 91 ADD 1 TO lv_nr_of_missing. 92 ENDIF. 93 ENDLOOP. 94 IF lv_nr_of_inactive > 0. " not approved 95 READ TABLE it_requests INTO ls_request 96 WITH KEY actflg = gc_tp_actflg_inactive. 97 MESSAGE s657(xt) WITH ls_request-trkorr lv_nr_of_inactive INTO message. 98 sucess = 'E'. 99 RETURN. 100 ENDIF. 101 IF lv_nr_of_suspend > 0. " denied (deleted) 102 READ TABLE it_requests INTO ls_request 103 WITH KEY actflg = gc_tp_actflg_suspend. 104 MESSAGE s649(xt) WITH ls_request-trkorr lv_nr_of_suspend INTO message. 105 sucess = 'E'. 106 RETURN. 107 ENDIF. 108 IF lv_nr_of_finished > 0. " already imported 109 READ TABLE it_requests INTO ls_request 110 WITH KEY impflg = gc_tp_impflg_2. 111 MESSAGE s658(xt) WITH ls_request-trkorr lv_nr_of_finished INTO message. 112 sucess = 'E'. 113 RETURN. 114 ENDIF. 115 116 * start 117 118 DATA ls_tp_trque TYPE stms_tp_trque. 119 120 * transfer missing data- and cofiles 121 IF lv_nr_of_missing > 0. 122 CALL FUNCTION 'TMS_MGR_TRANSMIT_TR_QUEUE' 123 EXPORTING 124 iv_tar_sys = iv_system 125 iv_tar_dom = iv_domain 126 iv_read_only = space 127 iv_use_list = space 128 iv_without_ftp = space 129 iv_monitor = 'X' 130 it_requests = it_requests 131 CHANGING 132 cs_tp_trque = ls_tp_trque 133 EXCEPTIONS 134 OTHERS = 99. 135 IF sy-subrc <> 0. 136 MESSAGE ID sy-msgid 137 TYPE 'I' 138 NUMBER sy-msgno 139 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO message. 140 sucess = 'E'. 141 RETURN. 142 ENDIF. 143 * analyse alert 144 IF ls_tp_trque-alert-id <> space. 145 message = '导入失败,请使用STMS重新导入'. 146 sucess = 'E'. 147 RETURN. 148 ENDIF. 149 ENDIF. 150 151 152 DATA: ev_tp_ret_code TYPE stpa-retcode, 153 ev_tp_alog TYPE stpa-file, 154 ev_tp_slog TYPE stpa-file, 155 ev_tp_pid TYPE stpa-pid, 156 ev_tpstat_key TYPE tmstpkey, 157 es_exception TYPE stmscalert, 158 et_tp_imports TYPE stms_tp_imports. 159 160 CALL FUNCTION 'TMS_MGR_IMPORT_TR_REQUEST' 161 EXPORTING 162 iv_system = iv_system 163 iv_domain = iv_domain 164 iv_request = iv_request 165 iv_client = iv_client 166 * IV_CTC_ACTIVE = 167 iv_overtake = 'X' 168 iv_import_again = 'X' 169 iv_ignore_originality = 'X' 170 iv_ignore_repairs = 'X' 171 iv_subset = 'X' 172 iv_offline = 'X' 173 it_requests = it_requests 174 IMPORTING 175 ev_tp_ret_code = ev_tp_ret_code 176 ev_tp_alog = ev_tp_alog 177 ev_tp_slog = ev_tp_slog 178 ev_tp_pid = ev_tp_pid 179 ev_tpstat_key = ev_tpstat_key 180 es_exception = es_exception 181 et_tp_imports = et_tp_imports 182 EXCEPTIONS 183 read_config_failed = 1 184 table_of_requests_is_empty = 2 185 OTHERS = 3. 186 IF sy-subrc <> 0. 187 MESSAGE ID sy-msgid 188 TYPE 'I' 189 NUMBER sy-msgno 190 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO message. 191 sucess = 'E'. 192 RETURN. 193 ELSE. 194 sucess = 'S'. 195 message = '已开始传输'. 196 ENDIF. 197 198 ENDFUNCTION.
4.大请求号:输入你开发机未释放的请求,
目标系统:需要传输到目标系统的SYSID
传输域:BASIS在STMS配置的传输路径,或者SE09建立请求时选择的目标系统:可参考下图
RFC目标:选择你SM59配置的远程连接名称(可在代码修改默认值),
执行完毕后,可以在目标系统检查请求是否已经传递过去,开发系统会在请求下新建副本请求