SAP用户管理报表: 查询用户下的角色,事务代码:
******************************************
* 查询用户下的角色,事务代码
* 作者:刘欣
* 2013-5-3
* [email protected]
* QQ522929
******************************************
REPORT ZBA_R001.
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,
NAMETEXT TYPE AD_NAMTEXT,
* 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 ZHNAME FOR NAMETEXT NO INTERVALS.
SELECT-OPTIONS CODES FOR TCODES NO INTERVALS.
END-OF-SELECTION.
*------执行-----------
PERFORM TOSQL.
PERFORM SHOW_DATA.
*--------------------------------
* 用户名,完整用户名称,部门名称,角色名,角色中文说明,事务代码,事务代码说明
*--------------------------------
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 V_USERNAME~NAME_TEXT IN ZHNAME
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 SHOW_DATA
*---------------------------------------------------------------------
FORM SHOW_DATA .
DATA: WS_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
WS_FIELDGROUPS_TAB TYPE SLIS_T_SP_GROUP_ALV,
WS_LAYOUT TYPE SLIS_LAYOUT_ALV,
WS_SORTFIELDS_TAB TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE,
WS_EVENTS TYPE SLIS_T_EVENT.
DATA: NN TYPE I VALUE 0.
DATA: TITLE TYPE LVC_TITLE.
DATA: COLOR TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE.
*
DEFINE HOUT.
NN = NN + 1.
WS_FIELDCAT-COL_POS = NN.
WS_FIELDCAT-TABNAME = 'ITAB'.
WS_FIELDCAT-KEY = &1.
WS_FIELDCAT-FIELDNAME = &2.
WS_FIELDCAT-SELTEXT_M = &3.
WS_FIELDCAT-CFIELDNAME = &4.
WS_FIELDCAT-DATATYPE = &5.
WS_FIELDCAT-REF_TABNAME = &6.
WS_FIELDCAT-REF_FIELDNAME = &7.
WS_FIELDCAT-DO_SUM = &8.
WS_FIELDCAT-HOTSPOT = &9.
APPEND WS_FIELDCAT.
CLEAR WS_FIELDCAT.
END-OF-DEFINITION.
HOUT:
'' 'UNAME' '登录用户名' '' '' '' '' '' '',
'' 'NAME_TEXT' '中文姓名' '' '' '' '' '' '',
'' 'DEPARTMENT' '部门' '' '' '' '' '' '',
'X' 'AGR_NAME' '角色' '' '' '' '' '' '',
'X' 'TEXT' '角色名称' '' '' '' '' '' '',
'X' 'TCODE' '事务代码' '' '' '' '' '' '',
'X' 'TTEXT' '事务代码说明' '' '' '' '' '' ''.
WS_LAYOUT-ZEBRA = 'X'.
WS_LAYOUT-GET_SELINFOS = 'X'.
WS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
WS_LAYOUT-DETAIL_POPUP = 'X'.
*******排序
WS_SORTFIELDS_TAB-FIELDNAME = 'UNAME'.
WS_SORTFIELDS_TAB-UP = 'X'.
APPEND WS_SORTFIELDS_TAB.
CLEAR WS_SORTFIELDS_TAB.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = WS_LAYOUT
IT_FIELDCAT = WS_FIELDCAT[]
IT_SPECIAL_GROUPS = WS_FIELDGROUPS_TAB[]
IT_SORT = WS_SORTFIELDS_TAB[]
IT_EVENTS = WS_EVENTS[]
I_GRID_TITLE = TITLE
I_DEFAULT = 'X'
I_SAVE = 'A'
TABLES
T_OUTTAB = ITAB[]
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
ENDFORM. " OUTPUT_DATA