******************************************
* 查詢使用者下的角色,事務代碼
* 作者:劉欣
* 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,
* 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.