我有一个来自该公司的奇怪请求。他们想要一个报告,他们给出一个tcode或tcodes,程序将检查哪个部门有这个/这些以及哪些用户。
好的,我找到了几个表,比如AGR_TCODES(为Tcodes分配角色),AGR_USERS(向用户分配角色)和USER_ADDR(用户按地址数据)找到我想要的东西。
我的问题是:如果用户有权访问不属于他的某个角色的tcode,我们怎样才能抓住这个?
例如:我可以访问VA03,但我的角色都没有连接到此tcode。
有没有办法抓住这个?
答案 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'.
我要感谢你们所有人的答案。