SAP ABAP ZBA_R003 查询用户下的角色里的公司

查询用户下的角色里的公司



******************************************
* 查询用户下的角色里的公司
* 作者:刘欣
* 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.
发布了249 篇原创文章 · 获赞 85 · 访问量 49万+

猜你喜欢

转载自blog.csdn.net/ot512csdn/article/details/103147730