SAP 用户授权清单(角色對應T-CODE)
*&---------------------------------------------------------------------*
*& Report ZTEST_VIOLIN
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZTEST_VIOLIN NO STANDARD PAGE HEADING.
*声明数据库表
TABLES:USR21,AGR_USERS ,agr_define ,agr_tcodes, tstct ,USR02,AGR_TEXTS ,TSTCA.
*for alv
TYPE-POOLS: slis.
DATA:
i_fieldcat_alv TYPE slis_t_fieldcat_alv, "定义列标题(属性/信息)
i_layout TYPE slis_layout_alv, "alv格式
i_fieldcat TYPE slis_fieldcat_alv, "
i_events TYPE slis_t_event, "alv事件
w_events LIKE LINE OF i_events,
i_list_comments TYPE slis_t_listheader, "alv表单标题区域设置
w_list_comments LIKE LINE OF i_list_comments,
w_repid LIKE sy-repid. "当前程序
*定义内表
*1.选择屏幕
Types:
BEGIN OF usercodelist ,
BNAME type USR21-BNAME ,
NAME_TEXT type ADRP-NAME_TEXT ,
agr_name type AGR_USERS-agr_name,
text type AGR_TEXTS-text,
tcode type tstct-tcode,
ttext type tstct-ttext ,
* object type TSTCA-OBJCT,
* FIELD type TSTCA-FIELD ,
* VALUE type TSTCA-VALUE,
END OF usercodelist.
Data wa_Mtl type usercodelist.
Data Mtl Type TABLE OF usercodelist.
*定义选择屏幕
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t1.
SELECT-OPTIONS:S_BNAME FOR AGR_USERS-UNAME.
SELECTION-SCREEN END OF BLOCK b1.
*程序初始化
INITIALIZATION.
t1 = '查询条件'.
*数据选择
START-OF-SELECTION.
PERFORM getdata. "读取数据
PERFORM events_build. "alv事件
PERFORM layout_build. "定义alv格式属性
PERFORM fields_build. "定义列标题信息
PERFORM display_data. "显示数据
END-OF-SELECTION.
DATA:
pagenum TYPE i VALUE 1. "报表页码
END-OF-PAGE.
pagenum = pagenum + 1.
*& Form getdata
*&--------------------------------------------------------------------*
* ?????
*---------------------------------------------------------------------*
FORM getdata.
CLEAR Mtl.
* CLEAR hd_itab[]. "init_data
select a~BNAME a~NAME_TEXT b~agr_name f~TEXT y~tcode d~TTEXT tt~OBJCT tt~FIELD TT~VALUE
into CORRESPONDING FIELDS OF table Mtl
from v_username as a
inner join AGR_USERS as b on a~bname = b~UNAME
inner join agr_define as x on b~agr_name = x~agr_name
inner join agr_tcodes as y on x~agr_name = y~agr_name
inner join tstct as d on y~TCODE = d~TCODE
inner join USR02 as e on a~BNAME = e~BNAME
inner join AGR_TEXTS as f on x~AGR_NAME = f~AGR_NAME
inner join TSTCA as tt on d~tcode = tt~tcode
where a~MANDT = '310' and a~bname in s_bname AND d~SPRSL = 1
order by a~bname.
SORT Mtl BY BNAME NAME_TEXT AGR_NAME TEXT tcode.
DELETE ADJACENT DUPLICATES FROM mtl.
ENDFORM. "getdata
*&--------------------------------------------------------------------*
*& Form layout_build
*&--------------------------------------------------------------------*
* 定义ALV格式属性
*---------------------------------------------------------------------*
FORM layout_build .
i_layout-zebra = 'X'.
i_layout-detail_popup = 'X'.
* i_layout-no_vline = ' '.
* i_layout-colwidth_optimize = 'X'.
* i_layout-detail_initial_lines = 'X'.
i_layout-detail_titlebar = '详细内容'.
i_layout-f2code = '&ETA'.
* i_layout-info_fieldname = 'COLOR'. "颜色值
i_layout-detail_popup = 'X'.
i_layout-detail_titlebar = 'X'.
i_layout-no_colhead = ''.
w_repid = sy-repid.
ENDFORM. " layout_build
*&--------------------------------------------------------------------*
*& Form display_data
*&--------------------------------------------------------------------*
* 显示报表内容
*---------------------------------------------------------------------*
FORM display_data .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = w_repid
is_layout = i_layout
it_fieldcat = i_fieldcat_alv[]
it_events = i_events[]
* i_grid_title = ' '
i_callback_user_command = 'USER_COMMAND'
i_save = 'A'
TABLES
t_outtab = mtl.
* IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ENDIF.
ENDFORM. " display_data
*&--------------------------------------------------------------------*
*& Form events_build
*&--------------------------------------------------------------------*
* 定义ALV事件
*---------------------------------------------------------------------*
FORM events_build .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = i_events.
READ TABLE i_events WITH KEY name = 'TOP_OF_PAGE'
INTO w_events.
IF sy-subrc = 0.
MOVE 'ALV_TOP_OF_PAGE' TO w_events-form.
MODIFY i_events FROM w_events INDEX sy-tabix.
ENDIF.
READ TABLE i_events INTO w_events WITH KEY name = 'USER_COMMAND'.
IF sy-subrc EQ 0.
w_events-name = 'USER_COMMAND'.
MODIFY i_events FROM w_events INDEX sy-tabix.
ENDIF.
READ TABLE i_events WITH KEY name = 'END_OF_LIST'"slis_ev_end_of_page
INTO w_events.
IF sy-subrc = 0.
MOVE 'ALV_END_OF_LIST' TO w_events-form.
MODIFY i_events FROM w_events INDEX sy-tabix.
ENDIF.
ENDFORM. " events_build
*&--------------------------------------------------------------------*
*& Form fields_build
*&--------------------------------------------------------------------*
* 设置报表显示列属性信息
*---------------------------------------------------------------------*
FORM fields_build .
REFRESH i_fieldcat_alv.
CLEAR i_fieldcat.
DATA colnum TYPE i VALUE 1.
i_fieldcat-col_pos = colnum.
i_fieldcat-fieldname = 'BNAME'.
i_fieldcat-seltext_s = '用户'.
i_fieldcat-seltext_m = '用户'.
i_fieldcat-seltext_l = '用户'.
i_fieldcat-reptext_ddic = '用户'.
i_fieldcat-lzero = 'X'.
i_fieldcat-key = 'X'.
* i_fieldcat-hotspot = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
colnum = colnum + 1.
i_fieldcat-col_pos = colnum.
i_fieldcat-fieldname = 'NAME_TEXT'.
i_fieldcat-seltext_s = '姓名'.
i_fieldcat-seltext_m = '姓名'.
i_fieldcat-seltext_l = '姓名'.
i_fieldcat-reptext_ddic = '姓名'.
i_fieldcat-lzero = 'X'.
i_fieldcat-key = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
colnum = colnum + 1.
i_fieldcat-col_pos = colnum.
i_fieldcat-outputlen = '20'.
i_fieldcat-fieldname = 'AGR_NAME'.
i_fieldcat-seltext_s = '角色'.
i_fieldcat-seltext_m = '角色'.
i_fieldcat-seltext_l = '角色'.
i_fieldcat-reptext_ddic = '角色'.
i_fieldcat-lzero = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
colnum = colnum + 1.
i_fieldcat-col_pos = colnum.
i_fieldcat-outputlen ='30'.
i_fieldcat-fieldname = 'TEXT'.
i_fieldcat-seltext_s = '角色描述'.
i_fieldcat-seltext_m = '角色描述'.
i_fieldcat-seltext_l = '角色描述'.
i_fieldcat-reptext_ddic = '角色描述'.
i_fieldcat-lzero = 'X'.
* i_fieldcat-key = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
colnum = colnum + 1.
i_fieldcat-col_pos = colnum.
i_fieldcat-outputlen ='30'.
i_fieldcat-fieldname = 'TCODE'.
i_fieldcat-seltext_s = 'T-CODE'.
i_fieldcat-seltext_m = 'T-CODE'.
i_fieldcat-seltext_l = 'T-CODE'.
i_fieldcat-reptext_ddic = 'T-CODE'.
i_fieldcat-lzero = 'X'.
* i_fieldcat-key = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
colnum = colnum + 1.
i_fieldcat-col_pos = colnum.
i_fieldcat-outputlen ='30'.
i_fieldcat-fieldname = 'TTEXT'.
i_fieldcat-seltext_s = 'TTEXT'.
i_fieldcat-seltext_m = 'TTEXT'.
i_fieldcat-seltext_l = 'TTEXT'.
i_fieldcat-reptext_ddic = 'TTEXT'.
i_fieldcat-lzero = 'X'.
* i_fieldcat-key = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
*
* colnum = colnum + 1.
* i_fieldcat-col_pos = colnum.
* i_fieldcat-outputlen ='30'.
* i_fieldcat-fieldname = 'OBJCT'.
* i_fieldcat-seltext_s = 'OBJCT'.
* i_fieldcat-seltext_m = 'OBJCT'.
* i_fieldcat-seltext_l = 'OBJCT'.
* i_fieldcat-reptext_ddic = 'OBJCT'.
* i_fieldcat-lzero = 'X'.
** i_fieldcat-key = 'X'.
* APPEND i_fieldcat TO i_fieldcat_alv.
* CLEAR i_fieldcat.
*
*
* colnum = colnum + 1.
* i_fieldcat-col_pos = colnum.
* i_fieldcat-outputlen ='30'.
* i_fieldcat-fieldname = 'FIELD'.
* i_fieldcat-seltext_s = 'FIELD'.
* i_fieldcat-seltext_m = 'FIELD'.
* i_fieldcat-seltext_l = 'FIELD'.
* i_fieldcat-reptext_ddic = 'FIELD'.
* i_fieldcat-lzero = 'X'.
** i_fieldcat-key = 'X'.
* APPEND i_fieldcat TO i_fieldcat_alv.
* CLEAR i_fieldcat.
*
*
* colnum = colnum + 1.
* i_fieldcat-col_pos = colnum.
* i_fieldcat-outputlen ='30'.
* i_fieldcat-fieldname = 'VALUE'.
* i_fieldcat-seltext_s = 'VALUE'.
* i_fieldcat-seltext_m = 'VALUE'.
* i_fieldcat-seltext_l = 'VALUE'.
* i_fieldcat-reptext_ddic = 'VALUE'.
* i_fieldcat-lzero = 'X'.
** i_fieldcat-key = 'X'.
* APPEND i_fieldcat TO i_fieldcat_alv.
* CLEAR i_fieldcat.
* colnum = colnum + 1.
* i_fieldcat-col_pos = colnum.
* i_fieldcat-outputlen ='60'.
* i_fieldcat-fieldname = 'PROFILE'.
* i_fieldcat-seltext_s = '参数文件'.
* i_fieldcat-seltext_m = '参数文件'.
* i_fieldcat-seltext_l = '参数文件'.
* i_fieldcat-reptext_ddic = '参数文件'.
* APPEND i_fieldcat TO i_fieldcat_alv.
* CLEAR i_fieldcat.
ENDFORM. " fields_build
*&--------------------------------------------------------------------*
*& Form alv_top_of_page
*&--------------------------------------------------------------------*
* 页头格式设置
*---------------------------------------------------------------------*
FORM alv_top_of_page.
CLEAR: i_list_comments.
w_list_comments-typ = 'H'.
w_list_comments-key = ''.
w_list_comments-info = '用户授权清单(角色對應T-CODE)'.
APPEND w_list_comments TO i_list_comments.
CLEAR w_list_comments.
DATA: data_temp(16).
WRITE sy-datum TO: data_temp MM/DD/YYYY.
CONCATENATE '日期: ' data_temp INTO data_temp.
CONCATENATE data_temp ' SAP部' INTO data_temp.
w_list_comments-typ = 'S'.
w_list_comments-key = ''.
w_list_comments-info = data_temp.
APPEND w_list_comments TO i_list_comments.
CLEAR w_list_comments.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = i_list_comments
i_logo = 'ENJOYSAP_LOGO' "标题图标.
i_end_of_list_grid = 'X'.
* i_logo = 'ENJOYSAP_LOGO'. "标题图标
ENDFORM. "alv_top_of_page
*&--------------------------------------------------------------------*
*& Form alv_end_of_list
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM alv_end_of_list.
CLEAR: i_list_comments.
w_list_comments-typ = 'S'.
w_list_comments-info = 'SAP部'.
APPEND w_list_comments TO i_list_comments.
CLEAR w_list_comments.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = i_list_comments
i_logo = 'ENJOYSAP_LOGO' "标题图标
i_end_of_list_grid = 'X'.
ENDFORM. "alv_end_of_list
post SAP-Garson
原文链接:https://blog.csdn.net/huanglin529/article/details/112977095文章来自于网络,如果侵犯了您的权益,请联系站长删除!