每个部门和用户的 TCode

TCode per department and user

我有一个来自商家的奇怪请求。他们想要一份报告,其中提供了一个或多个 tcode,程序将检查哪个部门有 this/these 以及哪些用户。

好的,我找到了几个表格,例如 AGR_TCODES(将角色分配给 Tcode)、AGR_USERS(将角色分配给用户)和 USER_ADDR(按地址分配用户)数据)找到我想要的。

我的问题是:如果用户可以访问不属于他角色之一的 tcode,我们如何才能捕捉到它?

例如:我可以访问 VA03,但我的 none 个角色已连接到此 tcode。

有什么办法可以捕捉到这个吗?

尝试交易 S_BCE_68001397(用户 selection 基于权限值),select 权限对象 S_TCODE 和交易作为权限值应该给你列出你需要的。事务 S_BCE_68001398 做同样的事情,但不允许您向用户查询其他权限对象。

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

Yoy 可以使用 tables AGR_1251 和 AGR_USERS.

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

然后您转到 table 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.

希望对您有所帮助

最后,在 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'.

感谢大家的回答。