ABAP基础知识 传输请求处理(四 副本传输)

前言

传输请求是ABAP开发的一个很重要的工具,主要负责把开发的对象或配置的内容从源系统(开发系统)传输到目标系统(测试/生产系统).

本文主要讲解一个特殊的传输请求:副本传输请求

副本传输用的不多,应微信群友的建议,特意详细测试了一下副本传输请求,本文是根据测试得出的一些结论,可能有谬误之处,欢迎指正.

后文中用到的系统编号

  • S4D  开发系统

  • S4Q  测试系统

  • S4P  生产系统

补充的功能介绍

上文中遗漏了一些功能介绍,补充一下.

详见链接

无峰,公众号:ABAP 技巧与实战ABAP基础知识 传输请求处理(三 传输)

01

关闭导入队列

STMS中提供了一个功能, 关闭/打开导入队列

导入队列关闭后. 还是可以传输请求的, 只是新进入的请求放到了导入队列末尾 .

关闭队列功能更像是设置了一个时间节点. 区分该节点之前的请求和之后的请求.

比如可以把系统上线作为这个时间节点,节点后的请求等上线稳定后再传输

重新打开队列后, 导入队列恢复常态.

1e7c73563f31d1f484a8e5f530e7297f.png

eeb0c75e1b3caefe7d0e3ef41a4bdc5a.png

02

导入选项

在执行导入处理时, 可以设置导入的特殊处理选项. 这些选项会影响请求导入是否能够成功

  • 将传输请求保留在队列中用于以后导入:  勾选后, 请求可以多次导入, 否则只能导入一次

  • 再次导入传输请求  : 含义不明

  • 覆盖原件          : 强制覆盖对象,把外部请求导入开发系统,勾选避免报错

  • 覆盖未确认修复中的对象 : 强制覆盖对象,把外部请求导入开发系统,勾选避免报错

  • 忽略无效传输类型 : 忽略传输请求类型检查, 把外部请求导入开发系统,勾选避免报错

  • 忽略无效表类 : 忽略系统标准组件版本检查, 把外部请求导入开发系统,勾选避免报错

  • 跳过前驱关系 : 用处不明.

e8d86e4e53860ce4f482c6b4c2641c8c.png

基本概念

传输请求的相关概念

  • 传输请求: 主传输请求

  • 任务: 挂在主传输请求下的子请求

  • 传输对象: 包含在任务或主传输请求中的配置(集团相关/集团无关),资源库对象

一般情况下, 对象包含在任务下面

e82eecb94152680b7c951b4668d114d6.png

释放后的任务和请求同时包含对象

42287a77791fa27a1e5c3e8190b1cc61.png

通过特殊方式把对象写入请求时,请求包含对象

fb9bbf72b47965040f400c94f7a5df96.png

通过表E071可以更明确的看到这个关系

b470a9842bfbfb161ea25353f0b0d28d.png

副本请求使用场景

副本请求一般在如下场景中使用

正式传输请求中包含多个功能, 这些功能还没有最终开发完成. 但是因为测试的需要(开发系统没有测试所需的数据), 需要先把这个请求中的多个或者部分功能先传输到测试或生产系统测试.

副本请求可以跳过测试系统, 直接传到生产系统.

01

创建

使用SE10创建副本传输请求,创建好的副本请求没有目标系统, 如果在SE10中选中一个副本请求, 点击创建,系统会自动继承选中请求的属性.

ba5ad494b8fb9a479a715deec866062b.png

0f71ab360aa474ef7c27b656d78546d4.png

9b875cf50b1bba8fb11ad1dbe6f4293c.png

02

包含请求内容

把需要测试的程序所在的请求中的对象包含到副本请求中, 更多把对象写入传输请求的方法.

详见链接

无峰,公众号:ABAP 技巧与实战ABAP基础知识 传输请求(一 记录)

3ddd915baeaffa1a0ac6af1ba0ce3ace.png

添加请求或任务 这里需要注意请求/任务和对象的关系, 如果需要添加多个请求或任务,使用第二个单选框

38e18e3cb8e5cc2be55f863dc9afe8db.png

包含了对象的副本请求

88265759007e2a5d09fb46c330d1149f.png

03

设置目标系统

副本请求的特殊之处在于,创建的时候系统不会自动指定传输目标, 需要手工指定传输目标(参考创建例外)

传输目标可以无视传输路径S4D->S4Q->S4P. 直接设置期望的目标系统.

92bd75f6dd86680d6b703a3baed911c2.png

设置好不同目标系统的副本请求

2371ddbd32602219594149c003f54f49.png

04

释放

和正常的传输请求一样释放即可.

bc47881e3cb308e0294f38864c17d733.png

释放时需要忽略对象锁定错误,因为副本请求无法锁定对象(对象所在的原请求锁定了对象)

147ac97249474b8f61f1fe893ebbbe20.png

释放后的副本请求直接出现在指定的系统导入队列中

指定S4Q系统的请求写入了导入队列,

4e4fe979eaf2ec18a7f3a9d9d1f4d38d.png

05

导入

副本请求的默认导入选项不同于正常请求的,系统会自动取消勾选[将传输请求保留到队列中用于以后导入]

不勾选这个选项,导致的结果是,副本请求只能导入一次.

副本请求不受传输链路影响,传入S4Q系统后, 不再进入S4P系统的导入队列.

22453bce8631be383c751e1abec915db.png

副本请求导入后不同于正常请求导入的状态

fe6ce4740af123c989036d9b0d8e450d.png

一个系统BUG及解决

对于直接设置目标系统是S4P的副本请求. 在导入队列中查找不到,但是传输了其它任意正式请求后, 副本请求出现在了S4P的导入队列.

01

BUG发现

测试了5个S4P作为目标的副本请求,前两个成功的写入了目标系统,后面创建的无论如何也无法写入目标系统.(看来这个环节还有些问题: BUG 或者 有些关键条件没达成? )

a2c0e0551ddad576ba967b5dc9f52c35.png

其中有两个进入了S4P系统

0110b30b2982034b4a2e928cb18c6ed9.png

对于写入了S4P系统的副本请求,也不是释放后直接写入的, 而是其它什么条件触发它写入了(日志中可以看到,相比未写入S4P的副本请求, 写入的副本请求多了一行日志,不同于释放的时间

6d1ce8bc102b06aa43d36c7f45191888.png

2d4b7970d11a03a0ef1c01b300463abd.png

当正常请求进入S4P时, 调整导入队列功能生效.点击后,会触发副本请求也被写入生产系统的导入队列

8f4e2674c84204da86b2c8fd192c8c31.png

02

BUG分析

实测副本请求进入S4P系统BUG的结论

副本请求如果指定S4P系统, 无法直接写入S4P系统的导入队列. 并且也不会触发系统能够使用调整导入队列功能.

当正常请求导入QAS系统,触发了生产系统能够使用调整导入队列功能时 , 该功能会把之前目标系统是S4P的副本请求一起写入导入队列并复制传输请求文件到S4P系统.

所以BUG产生的核心原因是释放时没有设置目标系统的导入队列待调整状态. 导致STMS无法显示该按钮.

03

BUG 解决

可以通过调试中断  LTMSU_IQF02  205行左右, 从内表 lt_exclude 中删除FTPQ

646578493e1c2d734a47f4082a06f729.png

强制出现调整按钮

e97dcd064dd9e92327b8addeba2f5083.png

不选择传输请求,进入全量调整,调整后,请求会出现在S4P的导入队列中

4b2612acf1b743e01ddb649294928a71.png

7f4381217eb03cadb4db6fe8e2ad5a8e.png

也可以通过调用函数把副本请求加入S4P的导入队列

 TMS_UI_TRANSMIT_TR_QUEUE

7b63d51a12e1e77d7b65e2e5d3b8771c.png

总结

副本请求可以在功能尚未完全完成的情况下, 先把已开发的部分功能传到测试系统测试.

副本请求不会按传输路径传输(副本请求只进入指定的目标系统). 这样就可以确保最终进入生产系统的传输请求相对比较少,便于管理.

副本请求可以指定目标系统为生产系统. 因此可以在测试系统出现故障时, 使用副本传输请求直接传到生产系统.(有待验证). 

只是标准STMS对于副本请求直接传到生产系统存在一个小BUG. 需要用正常请求触发副本请求进入生产系统队列. 

或者手工调用函数

TMS_UI_TRANSMIT_TR_QUEUE

完成请求加入生产系统队列.

约定

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.       

    (如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.)

28bd40d51dbae72e142d90a8a05e6dea.png

公众号 : syjf1976_abap

          ABAP开发技巧

微信号 : 392077

请微信联系管理员: 

syjf1976 

sharry_xlp  

Yannick_Duan 

申请进入公众号讨论群提问或者参与话题讨论

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值