每个部门和用户的TCode

时间:2018-01-22 09:13:26

标签: sap abap

我有一个来自该公司的奇怪请求。他们想要一个报告,他们给出一个tcode或tcodes,程序将检查哪个部门有这个/这些以及哪些用户。

好的,我找到了几个表,比如AGR_TCODES(为Tcodes分配角色),AGR_USERS(向用户分配角色)和USER_ADDR(用户按地址数据)找到我想要的东西。

我的问题是:如果用户有权访问不属于他的某个角色的tcode,我们怎样才能抓住这个?

例如:我可以访问VA03,但我的角色都没有连接到此tcode。

有没有办法抓住这个?

3 个答案:

答案 0 :(得分:5)

尝试事务S_BCE_68001397(基于权限值的用户选择),选择权限对象S_TCODE,作为权限值的事务应该为您提供所需的列表。事务S_BCE_68001398执行相同操作,但不允许您向用户查询其他权限对象。

这些报告的问题在于检查大量交易代码可能既困难又乏味。您可以查看这些事务的源代码,报告RSUSR002并查看您是否可以使用报告用于查询多个事务代码的本地定义的类,并根据您的特定要求创建报告。

答案 1 :(得分:2)

Yoy可以使用表格AGR_1251和AGR_USERS。

AGR_1251将为您提供带有S_TCODE对象的角色和用户提供的Value = tcode。

然后你转到AGR_USERS表并获得角色的用户使用S_TCODE = tcode。

SELECT adr_users~UNAME
FROM AGR_USERS JOIN AGR_1251 ON AGR_USERS~MANDT = AGR_1251~MANDT 
                            and AGR_USERS~AGR_NAME = AGR_1251~AGR_NAME
WHERE AGR_1251~OBJECT = 'S_TCODE'
AND AGR_1251~LOW = param_tcode.

希望这有帮助

答案 2 :(得分:0)

最后在Dirk Trilsbeek的帮助下,我找到了我想要的解决方案。以下是选择:

  SELECT DISTINCT a~von e~ttext d~department d~bname d~name_first
                  d~name_last d~name_textc c~profile
      INTO CORRESPONDING FIELDS OF TABLE gt_tcode_per_dprtm_usr
    FROM ust12 AS a
      INNER JOIN ust10s AS b
        ON  a~auth = b~auth AND
            a~objct = b~objct AND
            a~aktps = b~aktps
      INNER JOIN ust04 AS c
        ON b~profn = c~profile
      INNER JOIN user_addr AS d
        ON c~bname = d~bname
      INNER JOIN tstct AS e
        ON e~tcode = a~von
    WHERE a~objct = 'S_TCODE' AND
          a~von   IN so_tcode AND
          e~sprsl = 'G'.

我要感谢你们所有人的答案。