SAP账号权限报表

&---------------------------------------------------------------------
*& Report ZAUTH
&---------------------------------------------------------------------
*&
&---------------------------------------------------------------------
REPORT ZAUTH.

TABLES:agr_users,user_addr,agr_tcodes.

DATA:BEGIN OF gt_alv OCCURS 0,
agr_name LIKE agr_users-agr_name,
uname LIKE agr_users-uname,
tcode LIKE agr_tcodes-tcode,
name_last LIKE user_addr-name_last,
ttext LIKE tstct-ttext,
department LIKE user_addr-department,
text LIKE agr_texts-text,
END OF gt_alv.

DATA:gs_layout TYPE lvc_s_layo,
gt_fcat TYPE lvc_t_fcat.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:s_uname FOR agr_users-uname.

SELECTION-SCREEN END OF BLOCK b1.

INITIALIZATION.

START-OF-SELECTION.
PERFORM frm_getdata.

END-OF-SELECTION.
PERFORM frm_layout.
PERFORM frm_fcat.
PERFORM frm_display.
&---------------------------------------------------------------------
*& Form frm_getdata
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM frm_getdata .
DATA:lv_parent_agr TYPE agr_define-agr_name.
DATA:lt_2 TYPE TABLE OF agr_tcodes WITH HEADER LINE.
REFRESH gt_alv.

SELECT
agr_name,
uname,
name_last,
department
INTO TABLE @DATA(lt_1)
FROM agr_users
JOIN user_addr ON user_addr~bname EQ agr_users~uname
WHERE uname IN @s_uname.

CHECK lt_1 IS NOT INITIAL.

LOOP AT lt_1 INTO DATA(ls_1).
CLEAR:lv_parent_agr,lt_2[].

SELECT SINGLE parent_agr INTO lv_parent_agr FROM agr_define WHERE agr_name = ls_1-agr_name.
IF sy-subrc <> 0.
  lv_parent_agr = ls_1-agr_name.
ENDIF.

SELECT *
  INTO TABLE lt_2
  FROM agr_tcodes
  WHERE agr_name = lv_parent_agr.


LOOP AT lt_2.
  CLEAR:gt_alv.
  gt_alv-agr_name = ls_1-agr_name.

  SELECT SINGLE text INTO gt_alv-text FROM agr_texts WHERE agr_name = gt_alv-agr_name AND spras = sy-langu.

  gt_alv-uname = ls_1-uname.
  gt_alv-name_last = ls_1-name_last.
  gt_alv-tcode = lt_2-tcode.
  gt_alv-department = ls_1-department.
  SELECT SINGLE ttext INTO gt_alv-ttext FROM tstct WHERE tcode = gt_alv-tcode AND sprsl = sy-langu.

  APPEND gt_alv.

ENDLOOP.

ENDLOOP.

SORT gt_alv BY uname agr_name tcode.
DELETE ADJACENT DUPLICATES FROM gt_alv COMPARING uname agr_name tcode.

ENDFORM.
&---------------------------------------------------------------------
*& Form frm_layout
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM frm_layout .
gs_layout-zebra = ‘X’.
gs_layout-cwidth_opt = ‘X’.
gs_layout-no_merging = ‘X’.
gs_layout-sel_mode = ‘D’.
ENDFORM.
&---------------------------------------------------------------------
*& Form frm_fcat
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM frm_fcat .
DATA:ls_fcat TYPE lvc_s_fcat.
CLEAR:gt_fcat.

DEFINE mro_fcat.
CLEAR ls_fcat.
ls_fcat-fieldname = &1.
ls_fcat-coltext = &2.
ls_fcat-outputlen = &3.
ls_fcat-ref_table = &4.
IF &1 = ‘MATNR’ OR &1 =‘AUFNR’ OR &1 = ‘POSNR’ OR &1 = ‘VORNR’.
ls_fcat-no_zero = ‘X’.
ENDIF.
APPEND ls_fcat TO gt_fcat.
end-of-definition.

mro_fcat ‘UNAME’ ‘账号’ ‘12’ ‘’.
mro_fcat ‘NAME_LAST’ ‘名称’ ‘12’ ‘’.
mro_fcat ‘DEPARTMENT’ ‘部门’ ‘20’ ‘’.
mro_fcat ‘AGR_NAME’ ‘角色’ ‘16’ ‘’.
mro_fcat ‘TEXT’ ‘角色描述’ ‘16’ ‘’.
mro_fcat ‘TCODE’ ‘事务代码’ ‘20’ ‘’.
mro_fcat ‘TTEXT’ ‘事务代码描述’ ‘30’ ‘’.
ENDFORM.
&---------------------------------------------------------------------
*& Form frm_display
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM frm_display .
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY_LVC’
EXPORTING

  • I_INTERFACE_CHECK       = ' '
    
  • I_BYPASSING_BUFFER      =
    
  • I_BUFFER_ACTIVE         =
    i_callback_program      = sy-repid
    
  • I_CALLBACK_PF_STATUS_SET          = 'PF_ZYCYR001'
    i_callback_user_command = 'FRM_USER_COMMAND'
    
  • I_CALLBACK_TOP_OF_PAGE  = ' '
    
  • I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
    
  • I_CALLBACK_HTML_END_OF_LIST       = ' '
    
  • I_STRUCTURE_NAME        =
    
  • I_BACKGROUND_ID         = ' '
    
  • I_GRID_TITLE            =
    
  • I_GRID_SETTINGS         =
    is_layout_lvc           = gs_layout
    it_fieldcat_lvc         = gt_fcat
    
  • IT_EXCLUDING            =
    
  • IT_SPECIAL_GROUPS_LVC   =
    
  • IT_SORT_LVC             =
    
  • IT_FILTER_LVC           =
    
  • IT_HYPERLINK            =
    
  • IS_SEL_HIDE             =
    i_default               = 'X'
    i_save                  = 'A'
    
  • IS_VARIANT              =
    
  • IT_EVENTS               =
    
  • IT_EVENT_EXIT           =
    
  • IS_PRINT_LVC            =
    
  • IS_REPREP_ID_LVC        =
    
  • I_SCREEN_START_COLUMN   = 0
    
  • I_SCREEN_START_LINE     = 0
    
  • I_SCREEN_END_COLUMN     = 0
    
  • I_SCREEN_END_LINE       = 0
    
  • I_HTML_HEIGHT_TOP       =
    
  • I_HTML_HEIGHT_END       =
    
  • IT_ALV_GRAPHICS         =
    
  • IT_EXCEPT_QINFO_LVC     =
    
  • IR_SALV_FULLSCREEN_ADAPTER        =
    
  • IMPORTING
  • E_EXIT_CAUSED_BY_CALLER =
    
  • ES_EXIT_CAUSED_BY_USER  =
    
    TABLES
    t_outtab = gt_alv
    EXCEPTIONS
    program_error = 1
    OTHERS = 2.
    IF sy-subrc <> 0.
  • Implement suitable error handling here
    ENDIF.
    ENDFORM.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值