REPORT ZYUTL002.
*---------------------------------------------------------------------*
* This program lists the user's auth. profiles.
*---------------------------------------------------------------------*
TABLES : USR01 ,
USR04 ,
USR10 ,
USR11 .
SELECT-OPTIONS : XNAME FOR USR04-BNAME .
DATA : BEGIN OF TABUSR OCCURS 200,
BNAME LIKE USR04-BNAME ,
PROFILE LIKE USR10-PROFN,
SAMPROF(1),
PTEXT LIKE USR11-PTEXT,
END OF TABUSR .
DATA : RC LIKE SY-SUBRC ,
AKTIVATED VALUE 'A',
COLECTPROF VALUE 'C',
GENERPROF VALUE 'G' ,
MAXUSR TYPE I VALUE 300 ,
PROFLNG LIKE SY-FDPOS VALUE 12. " - Profile
FIELD-SYMBOLS: <TEXT>.
DATA PRINT_USERS_PROFILES.
* -----------
SELECT * FROM USR01 WHERE BNAME IN XNAME .
PERFORM READ_USR04 "User-Record lesen
USING USR01-BNAME .
ENDSELECT .
LOOP AT TABUSR .
CLEAR USR11.
* Get the profile texts.
SELECT SINGLE * FROM USR11
WHERE LANGU = SY-LANGU
AND PROFN = TABUSR-PROFILE
AND AKTPS = AKTIVATED.
TABUSR-PTEXT = USR11-PTEXT.
MODIFY TABUSR.
ENDLOOP.
PERFORM PRINT_USERS_PROFILES.
*---------------------------------------------------------------------*
* FORM READ_USR04 *
*---------------------------------------------------------------------*
FORM READ_USR04 USING VALUE(USER) .
CLEAR USR04.
SELECT SINGLE * FROM USR04
WHERE BNAME = USER.
IF SY-SUBRC = 0.
PERFORM FILL_TABUSR USING USER.
LOOP AT TABUSR.
CLEAR USR10.
SELECT SINGLE * FROM USR10
WHERE PROFN = TABUSR-PROFILE
AND AKTPS = AKTIVATED.
IF USR10-TYP = COLECTPROF.
TABUSR-SAMPROF = 'X'.
ELSEIF USR10-TYP = GENERPROF.
TABUSR-SAMPROF = 'G'.
ELSE.
CLEAR TABUSR-SAMPROF.
ENDIF.
MODIFY TABUSR.
ENDLOOP.
ELSE.
CLEAR TABUSR.
ENDIF.
ENDFORM.
*---------------------------------------------------------------------*
* FORM FILL_TABUSR *
*---------------------------------------------------------------------*
FORM FILL_TABUSR USING VALUE(USER) .
DATA: NRPRO TYPE I,
OFF TYPE I.
CLEAR TABUSR.
OFF = 2.
NRPRO = USR04-NRPRO / 12.
IF NRPRO > MAXUSR. NRPRO = 0. ENDIF.
DO NRPRO TIMES.
ASSIGN USR04-PROFS+OFF(PROFLNG) TO <TEXT>.
WRITE <TEXT> TO TABUSR-PROFILE.
TABUSR-BNAME = USER .
APPEND TABUSR.
OFF = OFF + PROFLNG.
ENDDO.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PRINT_USERS_PROFILES
*&---------------------------------------------------------------------*
FORM PRINT_USERS_PROFILES.
SORT TABUSR BY BNAME .
LOOP AT TABUSR .
AT NEW BNAME .
SKIP 1 .
WRITE : /001 'User name :', TABUSR-BNAME .
WRITE : /001 SY-ULINE(30) .
ENDAT .
WRITE : / TABUSR-PROFILE, TABUSR-PTEXT.
ENDLOOP .
ENDFORM. " PRINT_USERS_PROFILES