Find Transaction Code (TCode) base on Username

*&---------------------------------------------------------------------*

*& 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