1

我有两个独立的系统(开发和测试),我需要检查我的所有对象(程序和所有包含)开发中的版本是否与开发中的版本匹配。我可以通过转到 SE80 -> 实用程序 -> 每个对象的版本管理来手动执行此操作,但是对于成百上千的对象,这非常耗时。

有没有办法以编程方式检索对象名称和 TR,以便将它们输出到表格或电子表格?

编辑。(Vwgert 在我看来这很有效——如果不能,你能解释一下为什么它不会吗?谢谢)

所以使用下面的 JOIN 我相信我能够检索系统中的所有对象、类型和最新的 TR。

SELECT a~obj_name b~korrnum c~object b~datum b~zeit
  FROM tadir AS a
  INNER JOIN vrsd AS b
  ON a~obj_name = b~objname
  INNER JOIN e071 AS c
  ON a~obj_name = c~obj_name
  AND a~pgmid = c~pgmid
  AND a~object = c~object
  INTO TABLE gt_obj_tr
  WHERE a~devclass IN s_pkg.

SORT gt_obj_tr BY object ASCENDING obj_name ASCENDING korrnum DESCENDING datum DESCENDING zeit DESCENDING.
DELETE ADJACENT DUPLICATES FROM gt_obj_tr COMPARING object obj_name.
4

2 回答 2

1

可能最简单的(虽然不是很漂亮)是使用表 REPOSRC 并将其链接到 VSRD。REPOSRC 是包含系统中所有源代码(方法、程序、函数)的表,因此您可以确保不会遗漏任何内容。你可能会做类似的事情(粗略的伪代码):

SELECT name FROM reposrc
       WHERE name LIKE 'Z%'
          OR name LIKE 'SAPLZ%'  
          OR name LIKE 'SAPMZ%'

SELECT objtype objname FROM vrsd
       WHERE objname = reposrc-name
         AND objtype IN ('CINC', 'REPS')  "Class include & reports

这当然只是源代码,但听起来这就是你所需要的。如果您需要从报告名称获取真正的abap 对象(方法、类、功能模块),请使用功能模块SEO_CLASS_GET_NAME_BY_INCLUDE 并在表TFDIR 上查找功能。

于 2013-10-30T19:26:58.153 回答
1

您可以在表中找到大部分对象标题TADIR。请求和任务标头存储在 中E070,条目位于E071- 只需查看内容,如果您知道传输是什么样子,这将是不言自明的。请注意,某些对象类型可以部分传输(R3TR CLAS是整个类,LIMU METH只是一个方法) - 这使得直接连接成为不可能。

于 2013-10-29T11:28:52.757 回答