查询用户下的角色里的公司
******************************************
* 查询用户下的角色里的公司
* 作者:刘欣
* 2013-5-3
* [email protected]
* QQ522929
******************************************
REPORT ZBA_R003.
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, "角色中文说明
VARBL TYPE AGR_1252-VARBL, "公司
LOW TYPE AGR_1252-LOW, " LOW
HIGH TYPE AGR_1252-HIGH, "HIGH
* TCODE TYPE AGR_TCODES-TCODE, "事务代码
* TTEXT TYPE TSTCT-TTEXT, "代码说明
END OF ITAB.
DATA: Z_USERNAME TYPE V_USERNAME-NAME_TEXT,
Z_AGR_NAME TYPE AGR_USERS-AGR_NAME,
NAMETEXT TYPE AD_NAMTEXT,
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 Z_USERNAME NO INTERVALS.
SELECT-OPTIONS ZHNAME FOR NAMETEXT NO INTERVALS.
SELECT-OPTIONS AGR_NAME FOR Z_AGR_NAME NO INTERVALS.
END-OF-SELECTION.
*------执行-----------
PERFORM TOSQL.
PERFORM SHOW_DATA.
*--------------------------------
* 用户名,角色名,角色中文说明,公司,LOW, HIGH
*--------------------------------
FORM TOSQL.
SELECT DISTINCT USR21~BNAME AS UNAME AGR_USERS~AGR_NAME V_USERNAME~NAME_TEXT AGR_TEXTS~TEXT AGR_1252~VARBL AGR_1252~LOW AGR_1252~HIGH
INTO CORRESPONDING FIELDS OF TABLE ITAB
FROM USR21
INNER JOIN V_USERNAME ON V_USERNAME~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_1252 ON AGR_1252~AGR_NAME = AGR_USERS~AGR_NAME "通过 表
WHERE AGR_USERS~UNAME IN NAME
AND V_USERNAME~NAME_TEXT IN ZHNAME
AND AGR_USERS~AGR_NAME IN AGR_NAME
AND AGR_1252~VARBL = '$BUKRS' AND AGR_TEXTS~LINE = '00000'.
DELETE ADJACENT DUPLICATES FROM ITAB.
SORT ITAB BY UNAME AGR_NAME .
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' '中文姓名' '' '' '' '' '' '',
'X' 'AGR_NAME' '角色' '' '' '' '' '' '',
'X' 'TEXT' '角色名称' '' '' '' '' '' '',
'X' 'VARBL' '公司权限对象' '' '' '' '' '' '',
'X' 'LOW' 'LOW' '' '' '' '' '' '',
'X' 'HIGH' 'HIGH' '' '' '' '' '' ''.
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
*--------------------------------
* 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 'AGR_NAME' '角色'.
ADD_FIELD 'TEXT' '角色名称'.
ADD_FIELD 'VARBL' '组织级别'.
ADD_FIELD 'LOW' 'LOW'.
ADD_FIELD 'HIGH' 'HIGH'.
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.