背景介绍
做S4升级项目的时候,在项目初期按照项目需求需要评估系统内开发对象的数量、升级范围和影响大小,主要评估对象就是增强和接口,目的是控制影响的范围保证系统升级完成以后业务流程可以顺利的流转。事务码SE80可以看到开发包中具体的开发对象,但是每次只能一个包一个包的点击展开,开发对象是树形层级展开,得一层一层的点击并且树状结构展示的可用信息太少,不支持导出功能也就无法进行汇总统计。

标准程序SNIF也可以查找开发对象,但是查找的对象类型太少,其中数据字典仅包含append附加结构和include包含结构,程序对象仅有各类增强(缺少User Exit和隐式增强)和BAPI调用程序,最终查询结果展示的信息太少也不符合需求。其选择界面和展示界面如下图所示

SNIF查询界面

SNIF显示界面

针对上述缺陷,结合SE80和SNIF报表程序各自的优缺点进行优化改进自开发了一个开发对象管理平台,方便项目管理人员,运维人员,和甲方客户多维度管理查看开发对象全部信息。
平台介绍
初始界面如下,一次可以输入多个开发包,根据需求勾选需要查看的开发对象。

结果展示界面如下,左边是勾选的开发对象类型,右边是查询结果。点击左边的具体对象类型,右边切换到对应的结果报表展示。

点击数据字典对象查看结果

红框1中的信息表明该附加结构对象是由sproxy代理产生的ESR结构对象。
红框2中的信息表明这两个结构对象分别是append附加结构和include包含结构

上图有透明表和数据元素两种字典对象,红框内是数据元素的子对象(数据域)。
下图中列出了搜索对象、表类型、视图各自的子对象,方便直接查找数据的来源

点击程序对象查看结果,包含程序名,事务码还有文本描述

点击事务码对象查看结果。一个程序可能产生多个事务码,所以在这里依然展示程序名。如果是表维护的事物码,会将SM30维护列打勾并显示对应的维护表(视图),如下图红框中的内容

点击函数对象查看结果。RFC函数和更新函数如红框展示的已经打勾标记。函数组和其对应的运行程序,函数对应的include 程序如下面所示已经罗列出来,可以通过SE38查看

点击类/接口对象查看结果。对象名、描述、创建时间创建人如下所示。红框内的勾选标记表明当前类对象是ESR代理类、BADI实施类还是HTTP api 实施类。

点击企业服务对象查看结果。服务定义,服务提供者,服务消费者,ESR代理类型增强均会显示在结果中。由于系统中和外围系统交互主要采用RFC的方式,企业服务较少。

点击BADI对象查看结果。BADI分为两类,classic BADI和new BADI。其中一部分BAD迁移到了new BADI当中所以在红框内可以看到有对应的增强点。根据增强实施,短描述还有实施类就可以找到想要查看的增强代码并梳理逻辑。

点击源代码增强(隐式增强)对象查看结果。源代码增强(隐式增强)非常隐蔽对系统不熟悉的人员很难找到系统做了哪些增强在什么位置做的。它不像其他增强有系统预留好的出口供用户使用,那么有迹可循。如下图所以,增强实施对应的增强点和增强修改对象已经列出,修改对象有些是类方法、有些是函数、有些是程序。

点击客户出口查看结果。增强项目,增强出口,增强组件信息已经全部列出。其中功能增强,屏幕增强,表增强各自对应的增强对象如下图红框内容所示。

点击BTE对象查看结果。BTE 事件ID 和对应的实现函数如下红框所示。

点击文本增强对象查看系统中所有的修改文本描述的数据元素。

点击权限对象查看系统中自定义的权限对象。

点击BAPI 使用清单查看结果。下图列出了系统中使用BAPI的所有自开发对象,其中有程序、有函数、有类方法如下图红框中的区域。

总结
平台中包含了基本的常用开发对象类型,以列表的扁平化数据结构展现所有开发对象的主要信息,不用再单独点开某个对象查看。项目经理和开发组长可以将列表展示结果导出Excel,方便分类汇总统计评估项目范围工作量等量化指标;运维人员可根据列表结果快速定位修改对象;内部人员可参考交接文档配合该平台顺利接收系统完成平稳交接。
这个平台的实现逻辑不复杂,难点在于这些对象信息涉及的表或者视图的查找和关联逻辑的梳理比较费时间。目前该平台只是第一版,功能不是很完善有很多需要升级迭代的地方,比如对象穿透跳转、代码字符查找等功能。大家有什么好的想法或者宝贵的建议请留言,我们一起将该平台的功能完善优化。

