*&---------------------------------------------------------------------*
*& Report YABAP_TOOLS_FIND_AUTH_BY_BNAME *
*& *
*&---------------------------------------------------------------------*
*& Find Transaction Code (TCode) base on Username *
*& *
*&---------------------------------------------------------------------*
REPORT yabap_tools_find_auth_by_bname NO STANDARD PAGE HEADING.
*----------------------------------------------------------------------*
* Tables
*----------------------------------------------------------------------*
TABLES : tstct,uststcap,ust04,usr03,ust10s,ust10c, ust12.
*----------------------------------------------------------------------*
*GLOBAL VARIABLE DECRALATION
*----------------------------------------------------------------------*
TYPE-POOLS: kkblo, slis.
DATA : gi_uststcap LIKE STANDARD TABLE OF uststcap WITH HEADER LINE,
gi_ust04 LIKE STANDARD TABLE OF ust04 WITH HEADER LINE,
gi_ust10s LIKE STANDARD TABLE OF ust10s WITH HEADER LINE,
gi_ust10c LIKE STANDARD TABLE OF ust10c WITH HEADER LINE,
gi_ust12 LIKE STANDARD TABLE OF ust12 WITH HEADER LINE.
DATA : lv_count TYPE i,
lv_name1 LIKE usr03-name1,
lv_tcode LIKE tstct-tcode,
lv_ttext LIKE tstct-ttext.
*----------------------------------------------------------------------*
*Input Screen/Selection
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(18) text_101 FOR FIELD pa_bname.
PARAMETER : pa_bname LIKE usr03-bname OBLIGATORY.
SELECTION-SCREEN END OF LINE.
*----------------------------------------------------------------------*
*EVENT
*----------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
text_101 = 'User Name'.
*----------------------------------------------------------------------*
*INITIALIZATION
*----------------------------------------------------------------------*
INITIALIZATION.
*======================================================================*
*MAIN PROGRAM
*Execute after Input Screen
*======================================================================*
START-OF-SELECTION.
PERFORM fm_collect_data.
PERFORM fm_display_data.
*======================================================================*
*SUB PROGRAM / SUB ROUTINE
*======================================================================*
*---------------------------------------------------------------------*
* FORM fm_collect_data *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM fm_collect_data.
REFRESH : gi_ust12, gi_ust04, gi_ust10s, gi_ust10c.
SELECT *
INTO TABLE gi_ust04
FROM ust04
WHERE
bname = pa_bname.
SELECT *
INTO TABLE gi_ust10s
FROM ust10s
FOR ALL ENTRIES IN gi_ust04
WHERE
profn = gi_ust04-profile AND
objct = 'S_TCODE'.
DESCRIBE TABLE gi_ust10s LINES lv_count.
IF lv_count > 0.
SELECT *
INTO TABLE gi_ust12
FROM ust12
FOR ALL ENTRIES IN gi_ust10s
WHERE
auth = gi_ust10s-auth AND
objct = 'S_TCODE' AND
field = 'TCD'.
ENDIF.
ENDFORM. "fm_collect_data
*---------------------------------------------------------------------*
* FORM fm_display_data *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM fm_display_data.
SELECT SINGLE name1
INTO lv_name1
FROM usr03
WHERE
bname = pa_bname.
SORT gi_ust12 BY von.
DELETE ADJACENT DUPLICATES FROM gi_ust12
COMPARING von.
DESCRIBE TABLE gi_ust12 LINES lv_count.
WRITE : / 'Username : ', pa_bname COLOR 1, lv_name1.
WRITE : / 'Total TCode : ', lv_count COLOR 2.
SKIP 1.
WRITE : /(65) sy-uline.
WRITE : / '|', (5) 'Nomor', '|', (20) 'TCode', '|', (30) 'Deskripsi',
'|'.
WRITE : /(65) sy-uline.
lv_count = 0.
LOOP AT gi_ust12.
ADD 1 TO lv_count.
lv_tcode = gi_ust12-von.
SELECT SINGLE ttext
INTO lv_ttext
FROM tstct
WHERE
tcode = lv_tcode and
SPRSL = sy-langu.
WRITE : / '|', (5) lv_count, '|',
(20) gi_ust12-von HOTSPOT, '|',
(30) lv_ttext, '|'.
ENDLOOP.
WRITE : /(65) sy-uline.
ENDFORM. "fm_display_data
*----------------------------------------------------------------------*
*Event Click
*----------------------------------------------------------------------*
AT LINE-SELECTION.
DATA : lv_obj_name LIKE gi_ust12-von,
rs_selfield TYPE slis_selfield,
* kkblo_tabname TYPE slis_tabname,
l_tabname TYPE kkblo_tabname.
GET CURSOR FIELD rs_selfield-sel_tab_field VALUE rs_selfield-value.
SPLIT rs_selfield-sel_tab_field AT '-' INTO l_tabname
rs_selfield-fieldname.
CASE rs_selfield-fieldname.
WHEN 'VON'.
MOVE rs_selfield-value TO lv_obj_name.
CONDENSE lv_obj_name.
SUBMIT yabap_tools_find_auth_by_tcode
WITH pa_tcode = lv_obj_name
AND RETURN.
WHEN OTHERS.
ENDCASE.
Comments