Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Authorization Check

Former Member
0 Likes
551

Hi

I want to check the authorization of a user how to check that. Can we have any program for that. If so please provide me

Regards

Krishna

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
422

Hi

This program creates a report based on: Composite profiles, Single Profiles, Objects, Authorizations, and their Values.

&----


*& Report ZCHECKAUTH

*&

&----


REPORT ZAUTHRPT LINE-SIZE 132 NO STANDARD PAGE HEADING MESSAGE-ID ZZ.

*----


* This program creates a report based on:

* Composite profiles, Single Profiles, Objects,

* Authorizations and their Values.

*----


TABLES: USR03, USR04, USR10, USR12, TOBJT, DFIES.

SELECT-OPTIONS BNAME FOR USR04-BNAME DEFAULT SY-UNAME.

PARAMETERS: DO-EXPRT(1) DEFAULT ' '

NO-DISPLAY.

DATA: BEGIN OF INTFIELD OCCURS 10,

FIELDNAME LIKE TOBJ-FIEL1,

LNG TYPE I,

TYPE,

FTEXT LIKE DFIES-SCRTEXT_L,

CONVEXIT LIKE DFIES-CONVEXIT,

END OF INTFIELD.

DATA: BEGIN OF TABUSR OCCURS 500,

USERID LIKE USR04-BNAME,

PROFILE LIKE XU213-PROFILE,

END OF TABUSR.

DATA: BEGIN OF TABPRO OCCURS 500,

USERID LIKE USR04-BNAME,

PROFILE LIKE XU213-PROFILE,

END OF TABPRO.

DATA: BEGIN OF TABAUTH OCCURS 500,

USERID LIKE USR04-BNAME, "Userid

PROFILE LIKE XU213-PROFILE, "Profile

OBJECT LIKE USR12-OBJCT, "Object

RULE LIKE USR12-AUTH, "Authorization

END OF TABAUTH.

DATA: BEGIN OF TABVAL OCCURS 500,

USERID LIKE USR04-BNAME,

PROFILE LIKE XU213-PROFILE,

OBJECT LIKE USR12-OBJCT,

RULE LIKE USR12-AUTH, "Authorization

SFIELD LIKE TOBJ-FIEL1, "Field Name

VON(18), "Value From

BIS(18), "Value To

USED-IN-REPORT-ALREADY,

END OF TABVAL.

DATA: MAXUSR TYPE I VALUE 300,

MAXCPF TYPE I VALUE 300,

MAXPRO TYPE I VALUE 170,

PROFLNG LIKE SY-FDPOS VALUE 12, "Profile

OBJLNG LIKE SY-FDPOS VALUE 10, "Object

AUTHLNG LIKE SY-FDPOS VALUE 12, "Authorization

FLDLNG LIKE SY-FDPOS VALUE 10, "Field

TEMP-USERID LIKE USR04-BNAME,

PREV-OBJECT LIKE USR12-OBJCT,

PREV-RULE LIKE USR12-AUTH, "Authorization

PREV-SFIELD LIKE TOBJ-FIEL1,

TEMP-PROFILE LIKE XU213-PROFILE,

USER-NAME LIKE USR03-NAME1,

SYST_LANGUAGE VALUE 'D',

USER-DEPT(31),

USER-COST-CENTER(31),

PREV-PROFILE LIKE XU213-PROFILE.

FIELD-SYMBOLS: <TEXT>.

START-OF-SELECTION.

SELECT * FROM USR04

WHERE BNAME IN BNAME. "Userid

PERFORM 100_LOAD_TABUSR.

ENDSELECT.

SORT TABUSR BY PROFILE ASCENDING

USERID ASCENDING.

PERFORM 200_PROCESS_PROFILES.

PERFORM 400_PROCESS_AUTH_VALUES.

SORT TABVAL BY USERID ASCENDING

PROFILE ASCENDING

OBJECT ASCENDING

RULE ASCENDING

SFIELD ASCENDING.

TEMP-USERID = SPACE.

PREV-PROFILE = SPACE.

IF DO-EXPRT EQ 'X'.

EXPORT TABVAL TO MEMORY ID 'ZAUTHRPT'.

ELSE.

PERFORM 500_PROCESS_REPORT.

ENDIF.

END-OF-SELECTION.

*----


* Form 100_LOAD_TABUSR

*----


* Load internal User Name and Profiles to internal table.

*----


FORM 100_LOAD_TABUSR.

DATA: NRPRO TYPE I,

OFF TYPE I.

OFF = 2.

NRPRO = USR04-NRPRO / 12.

IF NRPRO > MAXUSR. NRPRO = 0. ENDIF.

DO NRPRO TIMES.

ASSIGN USR04-PROFSOFF(PROFLNG) TO <TEXT>.+

MOVE USR04-BNAME TO TABUSR-USERID.

WRITE <TEXT> TO TABUSR-PROFILE.

APPEND TABUSR.

+OFF = OFF + PROFLNG.+

ENDDO.

ENDFORM.

*----


* Form 200_PROCESS_PROFILES

*----


* Get all authorizations based on the profile name.

*----


FORM 200_PROCESS_PROFILES.

LOOP AT TABUSR.

SELECT * FROM USR10

WHERE PROFN = TABUSR-PROFILE.

MOVE TABUSR-USERID TO TEMP-USERID.

MOVE TABUSR-PROFILE TO TEMP-PROFILE.

PERFORM 250_GET_AUTHORIZATIONS.

ENDSELECT.

ENDLOOP.

SORT TABPRO BY PROFILE ASCENDING

USERID ASCENDING.

* Process the profiles under the composite profile

LOOP AT TABPRO.

SELECT * FROM USR10

WHERE PROFN = TABPRO-PROFILE.

MOVE TABPRO-USERID TO TEMP-USERID.

MOVE TABPRO-PROFILE TO TEMP-PROFILE.

PERFORM 250_GET_AUTHORIZATIONS.

ENDSELECT.

ENDLOOP.

ENDFORM.

*----


* Form 250_GET_AUTHORIZATIONS

*----


* Distinguish between Single and composite profiles

*----


FORM 250_GET_AUTHORIZATIONS.

CASE USR10-TYP.

WHEN 'C'. "Composite Profile

PERFORM 260_PROCESS_COMP_PROFILES.

WHEN 'S'. "Single Profile

PERFORM 280_PROCESS_SINGLE_PROFILES.

WHEN OTHERS.

EXIT.

ENDCASE.

ENDFORM.

----


* FORM 260_PROCESS_COMP_PROFILES *

----


* Composite profiles are loaded to internal table to be *

* processed later. *

----


FORM 260_PROCESS_COMP_PROFILES.

DATA: NRAUT TYPE I,

OFF TYPE I.

OFF = 2.

NRAUT = USR10-NRAUT / 12. "Number of authorizations

IF NRAUT > MAXCPF. NRAUT = 0. ENDIF.

DO NRAUT TIMES.

ASSIGN USR10-AUTHSOFF(PROFLNG) TO <TEXT>.+

WRITE <TEXT> TO TABPRO-PROFILE.

MOVE TEMP-USERID TO TABPRO-USERID.

APPEND TABPRO.

+OFF = OFF + PROFLNG.+

ENDDO.

ENDFORM.

----


* FORM 280_PROCESS_SINGLE_PROFILES *

----


* Load all authorizations under a single profile to an internal *

* table. *

----


FORM 280_PROCESS_SINGLE_PROFILES.

DATA: NRAUT TYPE I,

OFF TYPE I.

OFF = 2.

NRAUT = USR10-NRAUT / 22.

IF NRAUT > MAXPRO. NRAUT = 0. ENDIF.

DO NRAUT TIMES.

ASSIGN USR10-AUTHSOFF(OBJLNG) TO <TEXT>.+

WRITE <TEXT> TO TABAUTH-OBJECT.

+OFF = OFF + OBJLNG.+

ASSIGN USR10-AUTHSOFF(AUTHLNG) TO <TEXT>.+

WRITE <TEXT> TO TABAUTH-RULE.

MOVE TEMP-USERID TO TABAUTH-USERID.

MOVE TEMP-PROFILE TO TABAUTH-PROFILE.

APPEND TABAUTH.

+OFF = OFF + AUTHLNG.+

ENDDO.

ENDFORM.

*----


* Form 400_PROCESS_AUTH_VALUES

*----


* Load internal table with Userid, Profile, Object,

* Authorizations and Values

*----


FORM 400_PROCESS_AUTH_VALUES.

LOOP AT TABAUTH.

SELECT * FROM USR12

WHERE OBJCT = TABAUTH-OBJECT

AND AUTH = TABAUTH-RULE.

PERFORM 450_LOAD_TABVALS.

ENDSELECT.

ENDLOOP.

ENDFORM.

----


* FORM 450_LOAD_TABVALS *

----


* NOTE: Search SAPMS01J function FILL_TABUSR *

* Must be in workbench. *

----


FORM 450_LOAD_TABVALS.

DATA: INTFLAG TYPE I VALUE 0,

OFF TYPE I,

VTYP,

LNG TYPE I,

CLNG(2),

GLNG(2).

OFF = 2.

ASSIGN USR12-VALSOFF(1) TO <TEXT>.+

WRITE <TEXT> TO VTYP.

WHILE VTYP <> ' ' AND OFF < USR12-LNG.

+OFF = OFF + 1.+

CASE VTYP.

WHEN 'F'.

+OFF = OFF + 5.+

ASSIGN USR12-VALSOFF(2) TO <TEXT>.+

WRITE <TEXT> TO CLNG.

LNG = CLNG.

+OFF = OFF + 2.+

ASSIGN USR12-VALSOFF(FLDLNG) TO <TEXT>.+

WRITE <TEXT> TO TABVAL-SFIELD.

+OFF = OFF + FLDLNG.+

WHEN 'E'.

ASSIGN USR12-VALSOFF(LNG) TO <TEXT>.+

WRITE <TEXT> TO TABVAL-VON.

IF TABVAL-VON = SPACE.

TABVAL-VON = ''' '''.

ENDIF.

PERFORM 480_PROCESS_MOVES.

APPEND TABVAL.

TABVAL-VON = SPACE.

TABVAL-BIS = SPACE.

+OFF = OFF + LNG.+

WHEN 'G'.

ASSIGN USR12-VALSOFF(2) TO <TEXT>.+

WRITE <TEXT> TO CLNG.

GLNG = CLNG.

+OFF = OFF + 2.+

ASSIGN USR12-VALSOFF(LNG) TO <TEXT>.+

IF INTFLAG = 0.

WRITE <TEXT> TO TABVAL-VON.

WRITE '*' TO TABVAL-VONGLNG.+

ELSE.

WRITE <TEXT> TO TABVAL-BIS.

WRITE '*' TO TABVAL-BISGLNG.+

INTFLAG = 0.

ENDIF.

PERFORM 480_PROCESS_MOVES.

APPEND TABVAL.

TABVAL-VON = SPACE.

TABVAL-BIS = SPACE.

+OFF = OFF + LNG.+

WHEN 'V'.

INTFLAG = 1.

ASSIGN USR12-VALSOFF(LNG) TO <TEXT>.+

WRITE <TEXT> TO TABVAL-VON.

IF TABVAL-VON = SPACE.

TABVAL-VON = ''' '''.

ENDIF.

+OFF = OFF + LNG.+

WHEN 'B'.

INTFLAG = 0.

ASSIGN USR12-VALSOFF(LNG) TO <TEXT>.+

WRITE <TEXT> TO TABVAL-BIS.

IF TABVAL-BIS = SPACE.

TABVAL-BIS = ''' '''.

ENDIF.

PERFORM 480_PROCESS_MOVES.

APPEND TABVAL.

TABVAL-VON = SPACE.

TABVAL-BIS = SPACE.

+OFF = OFF + LNG.+

ENDCASE.

ASSIGN USR12-VALSOFF(1) TO <TEXT>.+

WRITE <TEXT> TO VTYP.

ENDWHILE.

ENDFORM.

----


* FORM 480_PROCESS_MOVES *

----


* ........ *

----


FORM 480_PROCESS_MOVES.

MOVE TABAUTH-USERID TO TABVAL-USERID.

MOVE TABAUTH-PROFILE TO TABVAL-PROFILE.

MOVE TABAUTH-OBJECT TO TABVAL-OBJECT.

MOVE TABAUTH-RULE TO TABVAL-RULE.

ENDFORM.

*----


* FORM 500_PROCESS_REPORT

*----


* Create a report

*----


FORM 500_PROCESS_REPORT.

LOOP AT TABVAL.

AT NEW USERID.

NEW-PAGE.

SELECT SINGLE * FROM USR03

WHERE BNAME = TABVAL-USERID.

IF USR03-NAME1 = SPACE.

MOVE 'User Name NOT Available' TO USER-NAME.

ELSE.

MOVE USR03-NAME1 TO USER-NAME.

ENDIF.

*----


* If you want to display the Department comment back in

*----


* IF USR03-ABTLG = SPACE.

* MOVE 'Users Department NOT Available' TO USER-DEPT.

* ELSE.

* MOVE USR03-ABTLG TO USER-DEPT.

* ENDIF.

IF USR03-KOSTL = SPACE.

MOVE 'Users Cost Center NOT Available' TO USER-COST-CENTER.

ELSE.

MOVE USR03-KOSTL TO USER-COST-CENTER.

ENDIF.

ENDAT.

AT NEW PROFILE.

WRITE: / TABVAL-PROFILE.

ENDAT.

AT NEW OBJECT.

WRITE: /15 TABVAL-OBJECT.

SELECT SINGLE * FROM TOBJT

WHERE LANGU = SY-LANGU

AND OBJECT = TABVAL-OBJECT.

WRITE: 30 TOBJT-TTEXT.

SKIP.

ENDAT.

IF ( TABVAL-RULE = PREV-RULE ) AND ( TABVAL-OBJECT = PREV-OBJECT ).

PERFORM 550-CHECK-PREV-FIELD.

ELSE.

PERFORM 600-GET_FIELD_NAME.

WRITE: /40 TABVAL-RULE,

60 INTFIELD-FTEXT, "Field text

110 TABVAL-VON, "Value From

118 TABVAL-BIS. "Value To

MOVE TABVAL-RULE TO PREV-RULE.

MOVE TABVAL-OBJECT TO PREV-OBJECT.

MOVE TABVAL-SFIELD TO PREV-SFIELD.

ENDIF.

* BREAK-POINT.

ENDLOOP.

ENDFORM.

----


* FORM 550-CHECK-PREV-FIELD *

----


* To avoid redundant printing of the field name. *

----


FORM 550-CHECK-PREV-FIELD.

IF TABVAL-SFIELD = PREV-SFIELD.

WRITE: /110 TABVAL-VON, "Value From

118 TABVAL-BIS. "Value To

ELSE.

PERFORM 600-GET_FIELD_NAME.

WRITE: /60 INTFIELD-FTEXT, "Field text

110 TABVAL-VON, "Value From

118 TABVAL-BIS. "Value To

MOVE TABVAL-SFIELD TO PREV-SFIELD.

ENDIF.

ENDFORM.

----


* FORM 600-GET_FIELD_NAME *

----


* Get the text name using the technical field name *

----


FORM 600-GET_FIELD_NAME.

CALL FUNCTION 'AUTH_FIELD_GET_INFO'

EXPORTING

FIELDNAME = TABVAL-SFIELD

IMPORTING

DATEL = DFIES-ROLLNAME

LNG = DFIES-OUTPUTLEN

* RC = SY-SUBRC

TEXT = DFIES-FIELDTEXT

TYPE = DFIES-INTTYPE.

IF SY-SUBRC <> 0.

INTFIELD-FTEXT = TABVAL-SFIELD.

IF SY-LANGU <> SYST_LANGUAGE.

CALL FUNCTION 'AUTH_FIELD_GET_INFO'

EXPORTING

FIELDNAME = TABVAL-SFIELD

LANGU = SYST_LANGUAGE

IMPORTING

DATEL = DFIES-ROLLNAME

LNG = DFIES-OUTPUTLEN

* RC = SY-SUBRC

TEXT = DFIES-FIELDTEXT

TYPE = DFIES-INTTYPE.

IF SY-SUBRC <> 0.

MESSAGE A999 WITH 'Could not Get Info of Field Authority'.

ENDIF.

ELSE.

MESSAGE A999 WITH 'System Language Invalid'.

ENDIF.

ELSE.

IF DFIES-FIELDTEXT <> SPACE.

INTFIELD-FTEXT = DFIES-FIELDTEXT.

ELSE.

INTFIELD-FTEXT = TABVAL-SFIELD.

ENDIF.

ENDIF.

ENDFORM.

INCLUDE ZCONINC3.

SKIP 2.

WRITE: / 'User-ID=', TABVAL-USERID, 'User Name=', USER-NAME.

WRITE: /30 'Object',

113 'Values'.

WRITE: / 'Profile',

15 'Object',

30 'Text',

40 'Authorization',

60 'Field Name',

110 'From',

118 'To'.

ULINE: /(7),15(6),30(6),40(13),60(11),110(10).

SKIP.

Regards

Pavan

2 REPLIES 2
Read only

Former Member
0 Likes
423

Hi

This program creates a report based on: Composite profiles, Single Profiles, Objects, Authorizations, and their Values.

&----


*& Report ZCHECKAUTH

*&

&----


REPORT ZAUTHRPT LINE-SIZE 132 NO STANDARD PAGE HEADING MESSAGE-ID ZZ.

*----


* This program creates a report based on:

* Composite profiles, Single Profiles, Objects,

* Authorizations and their Values.

*----


TABLES: USR03, USR04, USR10, USR12, TOBJT, DFIES.

SELECT-OPTIONS BNAME FOR USR04-BNAME DEFAULT SY-UNAME.

PARAMETERS: DO-EXPRT(1) DEFAULT ' '

NO-DISPLAY.

DATA: BEGIN OF INTFIELD OCCURS 10,

FIELDNAME LIKE TOBJ-FIEL1,

LNG TYPE I,

TYPE,

FTEXT LIKE DFIES-SCRTEXT_L,

CONVEXIT LIKE DFIES-CONVEXIT,

END OF INTFIELD.

DATA: BEGIN OF TABUSR OCCURS 500,

USERID LIKE USR04-BNAME,

PROFILE LIKE XU213-PROFILE,

END OF TABUSR.

DATA: BEGIN OF TABPRO OCCURS 500,

USERID LIKE USR04-BNAME,

PROFILE LIKE XU213-PROFILE,

END OF TABPRO.

DATA: BEGIN OF TABAUTH OCCURS 500,

USERID LIKE USR04-BNAME, "Userid

PROFILE LIKE XU213-PROFILE, "Profile

OBJECT LIKE USR12-OBJCT, "Object

RULE LIKE USR12-AUTH, "Authorization

END OF TABAUTH.

DATA: BEGIN OF TABVAL OCCURS 500,

USERID LIKE USR04-BNAME,

PROFILE LIKE XU213-PROFILE,

OBJECT LIKE USR12-OBJCT,

RULE LIKE USR12-AUTH, "Authorization

SFIELD LIKE TOBJ-FIEL1, "Field Name

VON(18), "Value From

BIS(18), "Value To

USED-IN-REPORT-ALREADY,

END OF TABVAL.

DATA: MAXUSR TYPE I VALUE 300,

MAXCPF TYPE I VALUE 300,

MAXPRO TYPE I VALUE 170,

PROFLNG LIKE SY-FDPOS VALUE 12, "Profile

OBJLNG LIKE SY-FDPOS VALUE 10, "Object

AUTHLNG LIKE SY-FDPOS VALUE 12, "Authorization

FLDLNG LIKE SY-FDPOS VALUE 10, "Field

TEMP-USERID LIKE USR04-BNAME,

PREV-OBJECT LIKE USR12-OBJCT,

PREV-RULE LIKE USR12-AUTH, "Authorization

PREV-SFIELD LIKE TOBJ-FIEL1,

TEMP-PROFILE LIKE XU213-PROFILE,

USER-NAME LIKE USR03-NAME1,

SYST_LANGUAGE VALUE 'D',

USER-DEPT(31),

USER-COST-CENTER(31),

PREV-PROFILE LIKE XU213-PROFILE.

FIELD-SYMBOLS: <TEXT>.

START-OF-SELECTION.

SELECT * FROM USR04

WHERE BNAME IN BNAME. "Userid

PERFORM 100_LOAD_TABUSR.

ENDSELECT.

SORT TABUSR BY PROFILE ASCENDING

USERID ASCENDING.

PERFORM 200_PROCESS_PROFILES.

PERFORM 400_PROCESS_AUTH_VALUES.

SORT TABVAL BY USERID ASCENDING

PROFILE ASCENDING

OBJECT ASCENDING

RULE ASCENDING

SFIELD ASCENDING.

TEMP-USERID = SPACE.

PREV-PROFILE = SPACE.

IF DO-EXPRT EQ 'X'.

EXPORT TABVAL TO MEMORY ID 'ZAUTHRPT'.

ELSE.

PERFORM 500_PROCESS_REPORT.

ENDIF.

END-OF-SELECTION.

*----


* Form 100_LOAD_TABUSR

*----


* Load internal User Name and Profiles to internal table.

*----


FORM 100_LOAD_TABUSR.

DATA: NRPRO TYPE I,

OFF TYPE I.

OFF = 2.

NRPRO = USR04-NRPRO / 12.

IF NRPRO > MAXUSR. NRPRO = 0. ENDIF.

DO NRPRO TIMES.

ASSIGN USR04-PROFSOFF(PROFLNG) TO <TEXT>.+

MOVE USR04-BNAME TO TABUSR-USERID.

WRITE <TEXT> TO TABUSR-PROFILE.

APPEND TABUSR.

+OFF = OFF + PROFLNG.+

ENDDO.

ENDFORM.

*----


* Form 200_PROCESS_PROFILES

*----


* Get all authorizations based on the profile name.

*----


FORM 200_PROCESS_PROFILES.

LOOP AT TABUSR.

SELECT * FROM USR10

WHERE PROFN = TABUSR-PROFILE.

MOVE TABUSR-USERID TO TEMP-USERID.

MOVE TABUSR-PROFILE TO TEMP-PROFILE.

PERFORM 250_GET_AUTHORIZATIONS.

ENDSELECT.

ENDLOOP.

SORT TABPRO BY PROFILE ASCENDING

USERID ASCENDING.

* Process the profiles under the composite profile

LOOP AT TABPRO.

SELECT * FROM USR10

WHERE PROFN = TABPRO-PROFILE.

MOVE TABPRO-USERID TO TEMP-USERID.

MOVE TABPRO-PROFILE TO TEMP-PROFILE.

PERFORM 250_GET_AUTHORIZATIONS.

ENDSELECT.

ENDLOOP.

ENDFORM.

*----


* Form 250_GET_AUTHORIZATIONS

*----


* Distinguish between Single and composite profiles

*----


FORM 250_GET_AUTHORIZATIONS.

CASE USR10-TYP.

WHEN 'C'. "Composite Profile

PERFORM 260_PROCESS_COMP_PROFILES.

WHEN 'S'. "Single Profile

PERFORM 280_PROCESS_SINGLE_PROFILES.

WHEN OTHERS.

EXIT.

ENDCASE.

ENDFORM.

----


* FORM 260_PROCESS_COMP_PROFILES *

----


* Composite profiles are loaded to internal table to be *

* processed later. *

----


FORM 260_PROCESS_COMP_PROFILES.

DATA: NRAUT TYPE I,

OFF TYPE I.

OFF = 2.

NRAUT = USR10-NRAUT / 12. "Number of authorizations

IF NRAUT > MAXCPF. NRAUT = 0. ENDIF.

DO NRAUT TIMES.

ASSIGN USR10-AUTHSOFF(PROFLNG) TO <TEXT>.+

WRITE <TEXT> TO TABPRO-PROFILE.

MOVE TEMP-USERID TO TABPRO-USERID.

APPEND TABPRO.

+OFF = OFF + PROFLNG.+

ENDDO.

ENDFORM.

----


* FORM 280_PROCESS_SINGLE_PROFILES *

----


* Load all authorizations under a single profile to an internal *

* table. *

----


FORM 280_PROCESS_SINGLE_PROFILES.

DATA: NRAUT TYPE I,

OFF TYPE I.

OFF = 2.

NRAUT = USR10-NRAUT / 22.

IF NRAUT > MAXPRO. NRAUT = 0. ENDIF.

DO NRAUT TIMES.

ASSIGN USR10-AUTHSOFF(OBJLNG) TO <TEXT>.+

WRITE <TEXT> TO TABAUTH-OBJECT.

+OFF = OFF + OBJLNG.+

ASSIGN USR10-AUTHSOFF(AUTHLNG) TO <TEXT>.+

WRITE <TEXT> TO TABAUTH-RULE.

MOVE TEMP-USERID TO TABAUTH-USERID.

MOVE TEMP-PROFILE TO TABAUTH-PROFILE.

APPEND TABAUTH.

+OFF = OFF + AUTHLNG.+

ENDDO.

ENDFORM.

*----


* Form 400_PROCESS_AUTH_VALUES

*----


* Load internal table with Userid, Profile, Object,

* Authorizations and Values

*----


FORM 400_PROCESS_AUTH_VALUES.

LOOP AT TABAUTH.

SELECT * FROM USR12

WHERE OBJCT = TABAUTH-OBJECT

AND AUTH = TABAUTH-RULE.

PERFORM 450_LOAD_TABVALS.

ENDSELECT.

ENDLOOP.

ENDFORM.

----


* FORM 450_LOAD_TABVALS *

----


* NOTE: Search SAPMS01J function FILL_TABUSR *

* Must be in workbench. *

----


FORM 450_LOAD_TABVALS.

DATA: INTFLAG TYPE I VALUE 0,

OFF TYPE I,

VTYP,

LNG TYPE I,

CLNG(2),

GLNG(2).

OFF = 2.

ASSIGN USR12-VALSOFF(1) TO <TEXT>.+

WRITE <TEXT> TO VTYP.

WHILE VTYP <> ' ' AND OFF < USR12-LNG.

+OFF = OFF + 1.+

CASE VTYP.

WHEN 'F'.

+OFF = OFF + 5.+

ASSIGN USR12-VALSOFF(2) TO <TEXT>.+

WRITE <TEXT> TO CLNG.

LNG = CLNG.

+OFF = OFF + 2.+

ASSIGN USR12-VALSOFF(FLDLNG) TO <TEXT>.+

WRITE <TEXT> TO TABVAL-SFIELD.

+OFF = OFF + FLDLNG.+

WHEN 'E'.

ASSIGN USR12-VALSOFF(LNG) TO <TEXT>.+

WRITE <TEXT> TO TABVAL-VON.

IF TABVAL-VON = SPACE.

TABVAL-VON = ''' '''.

ENDIF.

PERFORM 480_PROCESS_MOVES.

APPEND TABVAL.

TABVAL-VON = SPACE.

TABVAL-BIS = SPACE.

+OFF = OFF + LNG.+

WHEN 'G'.

ASSIGN USR12-VALSOFF(2) TO <TEXT>.+

WRITE <TEXT> TO CLNG.

GLNG = CLNG.

+OFF = OFF + 2.+

ASSIGN USR12-VALSOFF(LNG) TO <TEXT>.+

IF INTFLAG = 0.

WRITE <TEXT> TO TABVAL-VON.

WRITE '*' TO TABVAL-VONGLNG.+

ELSE.

WRITE <TEXT> TO TABVAL-BIS.

WRITE '*' TO TABVAL-BISGLNG.+

INTFLAG = 0.

ENDIF.

PERFORM 480_PROCESS_MOVES.

APPEND TABVAL.

TABVAL-VON = SPACE.

TABVAL-BIS = SPACE.

+OFF = OFF + LNG.+

WHEN 'V'.

INTFLAG = 1.

ASSIGN USR12-VALSOFF(LNG) TO <TEXT>.+

WRITE <TEXT> TO TABVAL-VON.

IF TABVAL-VON = SPACE.

TABVAL-VON = ''' '''.

ENDIF.

+OFF = OFF + LNG.+

WHEN 'B'.

INTFLAG = 0.

ASSIGN USR12-VALSOFF(LNG) TO <TEXT>.+

WRITE <TEXT> TO TABVAL-BIS.

IF TABVAL-BIS = SPACE.

TABVAL-BIS = ''' '''.

ENDIF.

PERFORM 480_PROCESS_MOVES.

APPEND TABVAL.

TABVAL-VON = SPACE.

TABVAL-BIS = SPACE.

+OFF = OFF + LNG.+

ENDCASE.

ASSIGN USR12-VALSOFF(1) TO <TEXT>.+

WRITE <TEXT> TO VTYP.

ENDWHILE.

ENDFORM.

----


* FORM 480_PROCESS_MOVES *

----


* ........ *

----


FORM 480_PROCESS_MOVES.

MOVE TABAUTH-USERID TO TABVAL-USERID.

MOVE TABAUTH-PROFILE TO TABVAL-PROFILE.

MOVE TABAUTH-OBJECT TO TABVAL-OBJECT.

MOVE TABAUTH-RULE TO TABVAL-RULE.

ENDFORM.

*----


* FORM 500_PROCESS_REPORT

*----


* Create a report

*----


FORM 500_PROCESS_REPORT.

LOOP AT TABVAL.

AT NEW USERID.

NEW-PAGE.

SELECT SINGLE * FROM USR03

WHERE BNAME = TABVAL-USERID.

IF USR03-NAME1 = SPACE.

MOVE 'User Name NOT Available' TO USER-NAME.

ELSE.

MOVE USR03-NAME1 TO USER-NAME.

ENDIF.

*----


* If you want to display the Department comment back in

*----


* IF USR03-ABTLG = SPACE.

* MOVE 'Users Department NOT Available' TO USER-DEPT.

* ELSE.

* MOVE USR03-ABTLG TO USER-DEPT.

* ENDIF.

IF USR03-KOSTL = SPACE.

MOVE 'Users Cost Center NOT Available' TO USER-COST-CENTER.

ELSE.

MOVE USR03-KOSTL TO USER-COST-CENTER.

ENDIF.

ENDAT.

AT NEW PROFILE.

WRITE: / TABVAL-PROFILE.

ENDAT.

AT NEW OBJECT.

WRITE: /15 TABVAL-OBJECT.

SELECT SINGLE * FROM TOBJT

WHERE LANGU = SY-LANGU

AND OBJECT = TABVAL-OBJECT.

WRITE: 30 TOBJT-TTEXT.

SKIP.

ENDAT.

IF ( TABVAL-RULE = PREV-RULE ) AND ( TABVAL-OBJECT = PREV-OBJECT ).

PERFORM 550-CHECK-PREV-FIELD.

ELSE.

PERFORM 600-GET_FIELD_NAME.

WRITE: /40 TABVAL-RULE,

60 INTFIELD-FTEXT, "Field text

110 TABVAL-VON, "Value From

118 TABVAL-BIS. "Value To

MOVE TABVAL-RULE TO PREV-RULE.

MOVE TABVAL-OBJECT TO PREV-OBJECT.

MOVE TABVAL-SFIELD TO PREV-SFIELD.

ENDIF.

* BREAK-POINT.

ENDLOOP.

ENDFORM.

----


* FORM 550-CHECK-PREV-FIELD *

----


* To avoid redundant printing of the field name. *

----


FORM 550-CHECK-PREV-FIELD.

IF TABVAL-SFIELD = PREV-SFIELD.

WRITE: /110 TABVAL-VON, "Value From

118 TABVAL-BIS. "Value To

ELSE.

PERFORM 600-GET_FIELD_NAME.

WRITE: /60 INTFIELD-FTEXT, "Field text

110 TABVAL-VON, "Value From

118 TABVAL-BIS. "Value To

MOVE TABVAL-SFIELD TO PREV-SFIELD.

ENDIF.

ENDFORM.

----


* FORM 600-GET_FIELD_NAME *

----


* Get the text name using the technical field name *

----


FORM 600-GET_FIELD_NAME.

CALL FUNCTION 'AUTH_FIELD_GET_INFO'

EXPORTING

FIELDNAME = TABVAL-SFIELD

IMPORTING

DATEL = DFIES-ROLLNAME

LNG = DFIES-OUTPUTLEN

* RC = SY-SUBRC

TEXT = DFIES-FIELDTEXT

TYPE = DFIES-INTTYPE.

IF SY-SUBRC <> 0.

INTFIELD-FTEXT = TABVAL-SFIELD.

IF SY-LANGU <> SYST_LANGUAGE.

CALL FUNCTION 'AUTH_FIELD_GET_INFO'

EXPORTING

FIELDNAME = TABVAL-SFIELD

LANGU = SYST_LANGUAGE

IMPORTING

DATEL = DFIES-ROLLNAME

LNG = DFIES-OUTPUTLEN

* RC = SY-SUBRC

TEXT = DFIES-FIELDTEXT

TYPE = DFIES-INTTYPE.

IF SY-SUBRC <> 0.

MESSAGE A999 WITH 'Could not Get Info of Field Authority'.

ENDIF.

ELSE.

MESSAGE A999 WITH 'System Language Invalid'.

ENDIF.

ELSE.

IF DFIES-FIELDTEXT <> SPACE.

INTFIELD-FTEXT = DFIES-FIELDTEXT.

ELSE.

INTFIELD-FTEXT = TABVAL-SFIELD.

ENDIF.

ENDIF.

ENDFORM.

INCLUDE ZCONINC3.

SKIP 2.

WRITE: / 'User-ID=', TABVAL-USERID, 'User Name=', USER-NAME.

WRITE: /30 'Object',

113 'Values'.

WRITE: / 'Profile',

15 'Object',

30 'Text',

40 'Authorization',

60 'Field Name',

110 'From',

118 'To'.

ULINE: /(7),15(6),30(6),40(13),60(11),110(10).

SKIP.

Regards

Pavan

Read only

former_member188829
Active Contributor
0 Likes
422

Hi Krishna,

Check this thread..