ABAP基础知识 传输请求处理(三 传输)
一
前言
传输请求是ABAP开发的一个很重要的工具,主要负责把开发的对象或配置的内容从源系统(开发系统)传输到目标系统(测试/生产系统).
按照传输请求的生命周期,把相应的功能分为以下几组
-
记录(把开发的对象或配置的内容记录在特定的传输请求中)
-
管理(管理传输请求中的相关内容)
-
传输(把传输请求中记录的内容传递到目标系统)
本文主要介绍传输请求传输的相关功能
二
基本概念
讲解传输请求的传输传输之前, 先介绍一下相关的基本概念.
-
资源库对象 : 通过ABAP工作台创建的开发对象(数据字典,程序,函数,类等).资源库对象与集团无关,同一个系统所有集团都能访问资源库对象.
-
集团不相关配置: 配置表没有MANDT关键字. 配置的内容在同一个系统的所有集团都能查看
-
集团相关配置: 配置表有MANDT关键字,配置的内容在同一个系统只有特定的集团能查看.
特例: SMARTFORM 严格来讲,算资源库对象,但是和集团相关. (在200集团创建的,300集团无法访问). 估计还有些特殊的资源库对象类似于SMARTFORM.
三
传输分类
根据系统/集团范围把传输区分为两种
-
同系统跨集团间传输
-
跨系统传输
四
同系统跨集团传输
同系统跨集团传输的本质是把请求中指定的表内容从源集团复制到目标集团
针对集团相关的对象: 集团相关的配置表,SMARTFORM,授权体系的角色等.
资源库对象,集团不想关配置无需同系统跨集团传输,因为同系统的所有集团都能访问.
01
传输方式A
标准功能:事务代码 SCC1
指定源集团, 目标集团是当前登录集团
请务必勾选将任务包含在请求中(释放的请求无需勾选,释放任务后,会建立任务包含对象于请求的关系).
点击立即启动,系统会读取源集团中指定主键的内容同步到当前集团.
02
传输方式B
根据同系统跨集团传输的基本原理,所有可以跨集团复制数据的工具都可以作为配置的传输工具.
比如之前发布的数据同步平台.
详见链接.无峰,公众号:ABAP 技巧与实战SAP工具箱 数据同步平台( 一 简介 )
详见链接无峰,公众号:ABAP 技巧与实战SAP工具箱 数据同步平台( 二 配置 )
增强了源/目标的概念后, 可以用来作为配置表内容的传输工具.
如下图, 可以把指定表的内容从当前系统的指定源集团传到到当前系统的指定目标集团.这个工具也可以跨系统传输配置内容
五
跨系统传输配置
把传输请求中的所有对象从开发系统传输到目标系统.跨系统传输之前需要先配置TMS(传输管理系统).
TMS配置似乎需要在集团000中执行,配置TMS不是很困难的事情, 因为没有环境. 这里只能截取几张已经配置好的图片, 大致了解一下配置过程. 示例的传输系统是标准的三系统体系(开发/测试/生产). 复杂的传输TMS配置,可以把多个系统构成系统组,传输请求会进入这个系统组的每个系统.
01
建立传输域
在一个系统创建传输域,一般在开发系统中配置TMS,创建相应的传输域
02
引入相关系统
在传输域中添加相关的系统
03
配置传输路径
为这些系统指定传输的路径
04
相关参数
双击引入系统中的系统. 可以看到该系统相关的传输参数
参数的搜索帮助可以找到所有可用的参数.
几个有用的参数
-
NO_IMPORT_ALL 1 关闭全部导入功能(该功能可能由于失误点击,导致系统灾难)
-
SP_TRANS_SYNC OFF 关闭组件刷新, 提高STMS加载性能
六
跨集团传输步骤
跨系统传输包含了如下几个步骤. 其中复制文件/添加导入队列 在自动处理时顺序需要调换一下.
-
释放
-
复制文件
-
添加导入队列
-
导入
01
释放
在源系统中把相应的传输请求释放(SE10).先释放任务,再释放请求.
释放的传输请求会在指定的目录下产生两个和传输请求相关的文件
比如传输请求 S4DK936078
/usr/sap/trans/data/R936078.S4D
/usr/sap/trans/cofiles/K936078.S4D
释放的传输请求,根据TMS路径配置, 系统会自动把传输请求添加到目标系统的TMS队列中
02
复制文件
复制文件的动作不是必须的.
根据TMS及文件系统的配置(相关的服务器如果通过共享目录使用同一个/usr/sap/trans目录, 则无需复制文件.
未复制文件的请求, 在STMS中的导入队列中,可以看到下图的图标. 可以手工点击按钮复制, 也能通过导入功能自动触发复制.
03
手工复制
之前曾经介绍过一个工具, 传输请求处理大师(曾经的幼稚,起了这个名字). 这个工具可以方便的导入/导出传输请求到本地.
详见链接无峰,公众号:ABAP开发技巧SAP工具箱之开发代码转移(乾坤大挪移)
标准导入,导出工具,需要指定传输请求的文件名
CG3Y 导出服务器文件
CG3Z 导入服务器文件
04
自动加入导入队列
在TMS管理范畴的系统中. 传输请求会自动按照如下逻辑写入目标系统的导入队列
开发系统释放后, 写入测试系统的导入队列.
测试系统导入后,无论是否报错,写入生产系统的导入队列
05
手工加入导入队列
进入STMS指定的系统的导入队列 附加->其它请求->添加. 可以手工添加传输请求到导入队列中.前提是指定系统的传输目录中存在该请求的相关文件.
06
导入
执行STMS(同一个传输域的任意系统进入)
选择导入概览
双击系统,进入导入队列. 选中请求, 点击导入按钮即可.
07
导入日志
可以在导入日志中查看报错的具体信息. 一般的报错都是传输中漏掉了对象,在新的请求中包含遗漏的对象,传输到目标系统后, 重新导入即可解决问题
08
跨系统执行导入
可以在传输域的任意一台服务器上执行. 如果导入的系统和当前登录的系统不一致, 可能需要二次登录导入的系统. 一个解决方案是在SM59中修改传输请求自动产生的RFC目标, 比如 TMSSUP@S4Q.DOMAIN_S4D ,填上登录用户后, 跨系统执行导入就无需二次登录了.
七
底层处理
SE10释放,STMS添加队列,导入等操作都调用了底层操作系统的命令 TP 和R3TRANS. 新版本的ECC/S4的STMS功能完善了许多. 基本上无需再通过操作系统命令行解决问题了.
但是如果确实碰到什么意外. 也可以尝试使用操作系统的命令行执行TP/R3TRANS 来处理一些极端情况的传输报错问题.
八
总结
系统标准的传输体系已经相当的完善了. 如果非要挑剔, 只能找到如下槽点
-
传输请求文件导出/导入到本地系统很不方便
-
系统没有提供一键处理,在开发系统中快速把请求传到生产系统.
-
SE10/STMS非ALV的清单方式不利于排序,过滤等操作.
-
......
这些槽点将在一个传输请求增强处理工具中解决.
下篇文章会介绍一下这个工具.