代码之家  ›  专栏  ›  技术社区  ›  ekekakos

t每个部门和用户的代码

  •  1
  • ekekakos  · 技术社区  · 6 年前

    我有一个奇怪的要求。他们需要一份报告,其中提供一个或多个tcode,程序将检查哪个部门有这个/这些以及哪些用户。

    好的,我找到了两个表,如AGR\U TCODES(将角色分配给TCODES)、AGR\U USERS(将角色分配给用户)和USER\U ADDR(按地址数据的用户)来查找我想要的内容。

    我的问题是:如果用户有权访问一个不属于其角色的tcode,我们如何捕获它?

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

    有没有办法抓住这个?

    3 回复  |  直到 3 年前
        1
  •  5
  •   Dirk Trilsbeek    6 年前

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

    这些报告的问题是,检查大量的事务代码可能很困难,也可能很繁琐。您可以查看这些事务的源代码,报告 RSUSR002 并查看是否可以使用报表使用的本地定义类来查询多个事务代码,并根据您的特定需求创建报表。

        2
  •  2
  •   Rene MF    6 年前

    Yoy可以使用AGR\U 1251和AGR\U用户表。

    AGR\U 1251将为您提供具有S\U TCODE对象的角色,值=用户给定的TCODE。

    然后转到表AGR\U USERS,并使用S\U 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.
    

    希望这有帮助

        3
  •  0
  •   ekekakos    6 年前

    最后,在德克·特里尔斯贝克的帮助下,我找到了我所寻找的解决方案。以下是选择:

      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'.
    

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

    推荐文章