&---------------------------------------------------------------------
*& 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 =
-
TABLESES_EXIT_CAUSED_BY_USER =
t_outtab = gt_alv
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0. - Implement suitable error handling here
ENDIF.
ENDFORM.