matinal:SAP 如何查询某个用户下的全部角色

分类: o365邮箱登录 时间: 2025-10-26 11:47:42 作者: admin 阅读: 8546
matinal:SAP 如何查询某个用户下的全部角色

🚀欢迎来到本文🚀 🍉个人简介:matinal,目前职业是IT行业,一个正在慢慢前行的普通人。 🏀系列专栏:涵盖SAP各模块,Python,Excel,人工智能等 💡 其他专栏:一些平时学习的技术,感兴趣的小伙伴可以看看。

🍔公众号:matinal 🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝 ​ ⛱️万物从心起,心动则万物动🏄‍♂️

前言:SAP 如何查询某个用户下的全部角色

🦙(工作遇到傻逼,千万要远离。道路千万条,远离傻逼第一条)

TYPE-POOLS: SLIS,KCDE.

*-----------内表定义--------------

DATA:BEGIN OF itab OCCURS 0,

UNAME type AGR_USERS-UNAME, "用户名

NAME_TEXT type V_USERNAME-NAME_TEXT, "完整用户名称

DEPARTMENT type ADCP-DEPARTMENT, "部门信息

AGR_NAME type AGR_USERS-AGR_NAME, "角色名

TEXT type AGR_TEXTS-TEXT, "角色中文说明

TCODE type AGR_TCODES-TCODE, "事务代码

TTEXT type TSTCT-TTEXT, "代码说明

END of itab.

DATA: username TYPE V_USERNAME-NAME_TEXT,

tcodes TYPE AGR_TCODES-TCODE,

* DEPARTMENT type ADCP~DEPARTMENT,"部门信息

G_REPID TYPE SY-REPID,

IT_EVENTS TYPE SLIS_T_EVENT,

IT_FIELD TYPE SLIS_T_FIELDCAT_ALV,

WA_FIELD TYPE SLIS_FIELDCAT_ALV,

IT_SORT TYPE SLIS_T_SORTINFO_ALV.

INITIALIZATION.

G_REPID = SY-REPID.

*--------选择字段-----------------------

start-of-selection.

SELECT-OPTIONS name FOR USERNAME NO INTERVALS.

SELECT-OPTIONS codes FOR tcodes NO INTERVALS.

end-of-selection.

*------执行-----------

perform tosql.

perform listshow.

*--------------------------------

* 用户名,完整用户名称,部门名称,角色名,角色中文说明,事务代码,事务代码说明

*--------------------------------

form tosql.

SELECT DISTINCT usr21~bname AS uname V_USERNAME~NAME_TEXT ADCP~DEPARTMENT AGR_USERS~AGR_NAME AGR_TEXTS~TEXT AGR_TCODES~TCODE TSTCT~TTEXT

INTO corresponding fields of table itab

FROM USR21

INNER JOIN v_username on V_USERNAME~persnumber = usr21~persnumber "通过usr21的号码,连接用户信息表

INNER JOIN adcp ON adcp~persnumber = usr21~persnumber "通过usr21的号码,连接部门表

INNER JOIN agr_users ON agr_users~uname = usr21~bname "通过usr21的用户名,连接角色表

INNER JOIN AGR_TEXTS on AGR_TEXTS~AGR_NAME = AGR_USERS~AGR_NAME "通过角色名,加入角色中文说明表

INNER JOIN AGR_TCODES on AGR_TCODES~AGR_NAME = AGR_USERS~AGR_NAME "通过角色名,加入角色中文说明表

INNER JOIN TSTCT on TSTCT~TCODE = AGR_TCODES~TCODE "通过 表

where AGR_USERS~UNAME in name and AGR_TCODES~TCODE in codes and AGR_TEXTS~LINE = '00000' and TSTCT~SPRSL = '1'.

DELETE ADJACENT DUPLICATES FROM itab.

SORT itab BY UNAME AGR_NAME TCODE.

endform.

*--------------------------------

* form listshow

*--------------------------------

form listshow.

********宏定义.

DEFINE ADD_FIELD.

WA_FIELD-FIELDNAME = &1.

WA_FIELD-REPTEXT_DDIC = &2.

WA_FIELD-NO_ZERO = 'X'.

APPEND WA_FIELD TO IT_FIELD.

END-OF-DEFINITION.

ADD_FIELD 'UNAME' '登录用户名'.

ADD_FIELD 'NAME_TEXT' '中文名称'.

ADD_FIELD 'DEPARTMENT' '部门'.

ADD_FIELD 'AGR_NAME' '角色'.

ADD_FIELD 'TEXT' '角色名称'.

ADD_FIELD 'TCODE' '事务代码'.

ADD_FIELD 'TTEXT' '事务代码说明'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'"

EXPORTING

I_CALLBACK_PROGRAM = G_REPID

I_BACKGROUND_ID = 'ALV_BACKGROUND'

* I_GRID_TITLE = '查询用户-角色-事务代码'

IT_FIELDCAT = IT_FIELD

* IS_LAYOUT = GS_LAYOUT

* IT_SORT = IT_SORT

I_SAVE = 'A'

* IT_EVENTS = IT_EVENTS[]

TABLES

T_OUTTAB = itab

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

endform.

怎么样,在了解此篇文章有何感想?

如果本文对大家有所帮助的话,还望各位能给我点赞、收藏并评论一下,感谢各位💕!!! 另如果大家有什么疑问或者建议的话,欢迎评论区留言。更多精彩内容->在这里

相关文章

钓鱼水域攻略(待续)
华为荣耀5C钢化膜
在 Windows 中重置 Winsock:它的用途和原因
李商隐是哪个朝代的?