SAP ABAP ZBA_R001 查询用户下的角色,事务代码

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
发布了249 篇原创文章 · 获赞 85 · 访问量 49万+

猜你喜欢

转载自blog.csdn.net/ot512csdn/article/details/103147643
今日推荐