以编程方式检索整个包的对象名称和传输请求

时间:2013-10-29 10:35:24

标签: sap abap netweaver

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

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

EDIT。 (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.

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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上查找。