每个部门和用户的 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'.
感谢大家的回答。
我有一个来自商家的奇怪请求。他们想要一份报告,其中提供了一个或多个 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'.
感谢大家的回答。