2008 Mar 28 4:10 AM
Hi guys,
could somebody tell me how to compare 2 roles?
I want to check authorization difference between 2 roles.
Thanks,
James
2008 Mar 28 4:52 AM
Hi,
Use the below program and enter the role name in the selection screen...
Execute the program in different sessions and then compare it.
*&---------------------------------------------------------------------*
*& Report Z_MASTER_DERIVED
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_MASTER_DERIVED LINE-SIZE 175.
TABLES :AGR_1016.
TYPES: BEGIN OF TY_AGR_1016,
AGR_NAME TYPE AGR_1016-AGR_NAME,
COUNTER TYPE AGR_1016-COUNTER,
PROFILE TYPE AGR_1016-PROFILE,
VARIANT TYPE AGR_1016-VARIANT,
END OF TY_AGR_1016,
BEGIN OF TY_AGR_TEXTS,
AGR_NAME TYPE AGR_TEXTS-AGR_NAME,
SPRAS TYPE AGR_TEXTS-SPRAS,
TEXT TYPE AGR_TEXTS-TEXT,
END OF TY_AGR_TEXTS,
BEGIN OF TY_AGR_DEFINE,
AGR_NAME TYPE AGR_DEFINE-AGR_NAME,
PARENT_AGR TYPE AGR_DEFINE-PARENT_AGR,
END OF TY_AGR_DEFINE,
BEGIN OF TY_DR_COUNT,
AGR_NAME TYPE AGR_DEFINE-AGR_NAME,
COUNT TYPE I,
END OF TY_DR_COUNT,
BEGIN OF TY_AGR_TCODES,
AGR_NAME TYPE AGR_TCODES-AGR_NAME,
TCODE TYPE AGR_TCODES-TCODE,
TCODE_COMP TYPE TSTCT-TCODE,
END OF TY_AGR_TCODES,
BEGIN OF TY_TSTCT,
SPRSL TYPE TSTCT-SPRSL,
TCODE TYPE TSTCT-TCODE,
TTEXT TYPE TSTCT-TTEXT,
END OF TY_TSTCT,
BEGIN OF TY_AGR_1252,
AGR_NAME TYPE AGR_1252-AGR_NAME,
VARBL TYPE AGR_1252-VARBL,
LOW TYPE AGR_1252-LOW,
HIGH TYPE AGR_1252-HIGH,
DESC(30) TYPE C,
VARBL_DISP TYPE AGR_1252-VARBL,
AGR_NAME_DISP TYPE AGR_1252-AGR_NAME,
END OF TY_AGR_1252,
BEGIN OF TY_USVART,
LANGU TYPE USVART-LANGU, "LANGUAGE KEY
VARBL TYPE USVART-VARBL,
VTEXT TYPE USVART-VTEXT, "DESCRIPTION
END OF TY_USVART,
BEGIN OF TY_AGR_1250,
AGR_NAME TYPE AGR_1250-AGR_NAME,
OBJECT TYPE AGR_1250-OBJECT,
AUTH TYPE AGR_1250-AUTH,
ATEXT TYPE AGR_1250-ATEXT,
END OF TY_AGR_1250,
BEGIN OF TY_AGR_1251,
AGR_NAME TYPE AGR_1251-AGR_NAME,
OBJECT TYPE AGR_1251-OBJECT,
AUTH TYPE AGR_1251-AUTH,
FIELD TYPE AGR_1251-FIELD,
LOW TYPE AGR_1251-LOW,
HIGH TYPE AGR_1251-HIGH,
END OF TY_AGR_1251,
BEGIN OF TY_AUTHX,
ROLLNAME TYPE AUTHX-ROLLNAME,
END OF TY_AUTHX,
BEGIN OF TY_DD04T,
ROLLNAME TYPE DD04T-ROLLNAME,
DDLANGUAGE TYPE DD04T-DDLANGUAGE,
DDTEXT TYPE DD04T-DDTEXT,
END OF TY_DD04T,
BEGIN OF TY_SFINAL,
OBJ_DISP TYPE AGR_1250-OBJECT,
ATEXT_DISP TYPE AGR_1250-ATEXT,
DDTEXT_DISP(80) TYPE C,
END OF TY_SFINAL,
BEGIN OF TY_FINAL_DATA,
OBJECT TYPE AGR_1250-OBJECT,
ATEXT TYPE AGR_1250-ATEXT,
DDTEXT TYPE DD04T-DDTEXT,
DDTEXT_FIELD(60) TYPE C,
VALUE(30) TYPE C,
OBJ_DISP TYPE AGR_1250-OBJECT,
ATEXT_DISP TYPE AGR_1250-ATEXT,
DDTEXT_DISP(60) TYPE C,
END OF TY_FINAL_DATA.
DATA : IT_AGR_1016 TYPE STANDARD TABLE OF TY_AGR_1016,
WA_AGR_1016 TYPE TY_AGR_1016,
IT_AGR_TEXTS TYPE STANDARD TABLE OF TY_AGR_TEXTS,
WA_AGR_TEXTS TYPE TY_AGR_TEXTS,
IT_AGR_DEFINE TYPE STANDARD TABLE OF TY_AGR_DEFINE,
WA_AGR_DEFINE TYPE TY_AGR_DEFINE,
IT_DR_COUNT TYPE STANDARD TABLE OF TY_DR_COUNT,
WA_DR_COUNT TYPE TY_DR_COUNT,
COUNT TYPE I,
IT_AGR_TCODES TYPE STANDARD TABLE OF TY_AGR_TCODES,
WA_AGR_TCODES TYPE TY_AGR_TCODES,
IT_TSTCT TYPE STANDARD TABLE OF TY_TSTCT,
WA_TSTCT TYPE TY_TSTCT,
IT_AGR_1252 TYPE STANDARD TABLE OF TY_AGR_1252,
WA_AGR_1252 TYPE TY_AGR_1252,
IT_AGR_1252_DEL TYPE STANDARD TABLE OF TY_AGR_1252,
WA_AGR_1252_DEL TYPE TY_AGR_1252,
IT_USVART TYPE STANDARD TABLE OF TY_USVART,
WA_USVART TYPE TY_USVART,
IT_AGR_1250 TYPE STANDARD TABLE OF TY_AGR_1250,
WA_AGR_1250 TYPE TY_AGR_1250,
IT_AGR_1251 TYPE STANDARD TABLE OF TY_AGR_1251,
WA_AGR_1251 TYPE TY_AGR_1251,
IT_AUTHX TYPE STANDARD TABLE OF TY_AUTHX,
WA_AUTHX TYPE TY_AUTHX,
IT_DD04T TYPE STANDARD TABLE OF TY_DD04T,
WA_DD04T TYPE TY_DD04T,
IT_SFINAL TYPE STANDARD TABLE OF TY_SFINAL,
WA_SFINAL TYPE TY_SFINAL,
WA_SFINAL1 TYPE TY_SFINAL,
IT_FINAL TYPE STANDARD TABLE OF TY_FINAL_DATA,
WA_FINAL TYPE TY_FINAL_DATA,
IT_FINAL_DATA TYPE STANDARD TABLE OF TY_FINAL_DATA,
WA_FINAL_DATA TYPE TY_FINAL_DATA.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT_001.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(20) TEXT_010 MODIF ID M1 .
SELECT-OPTIONS : S_ROLE FOR AGR_1016-AGR_NAME NO INTERVALS MODIF ID M1 ."roles
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT_002.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: XTR AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 5(50) TEXT_011.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: XAU AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 5(50) TEXT_012.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: XDR AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 5(50) TEXT_013.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B2.
INITIALIZATION.
TEXT_001 = 'Report Specification'.
TEXT_002 = 'Output Specification'.
TEXT_010 = 'Roles'.
TEXT_011 = 'Transection Objects' .
TEXT_012 = 'Authorization Objects' .
TEXT_013 = 'Derived Objects' .
START-OF-SELECTION.
IF S_ROLE IS INITIAL.
MESSAGE 'Please fill required field' TYPE 'S'.
LEAVE LIST-PROCESSING.
CALL TRANSACTION 'ZROLE'.
ENDIF.
PERFORM ROLE_LIST.
AT LINE-SELECTION.
IF SY-LSIND = 1.
FREE : IT_AGR_1016 , IT_AGR_TEXTS ,IT_AGR_DEFINE , IT_DR_COUNT , IT_AGR_TCODES ,
IT_TSTCT , IT_AGR_1252 , IT_AGR_1252_DEL ,IT_USVART , IT_AGR_1250 ,
IT_AGR_1251 , IT_AUTHX , IT_DD04T , IT_FINAL_DATA,IT_SFINAL,IT_FINAL. " ADDED TO TABLE IT_SFINAL,IT_FINAL BY DHRUV
FORMAT COLOR 1.
WRITE :/ 'Role Name : ' , WA_AGR_1016-AGR_NAME .
FORMAT RESET.
SKIP.
IF XTR = 'X'.
PERFORM TCODE_LIST.
ENDIF.
IF XDR = 'X' AND WA_DR_COUNT-COUNT <> 0.
PERFORM DERIVED_ROLES.
ENDIF.
IF XDR = 'X' AND WA_DR_COUNT-COUNT = 0.
PERFORM ROLE_NAME.
ENDIF.
IF XAU = 'X'.
PERFORM AUTHORIZATION_OBJ.
ENDIF.
ELSEIF SY-LSIND = 2.
IF XDR = 'X' AND WA_DR_COUNT-COUNT <> 0.
FREE : IT_AGR_1016 , IT_AGR_TEXTS ,IT_AGR_DEFINE , IT_DR_COUNT , IT_AGR_TCODES ,
IT_TSTCT , IT_AGR_1252 , IT_AGR_1252_DEL ,IT_USVART , IT_AGR_1250 ,
IT_AGR_1251 , IT_AUTHX , IT_DD04T , IT_FINAL_DATA.
FORMAT COLOR 1 INTENSIFIED ON.
WRITE :/ 'Derived Role Name : ' , WA_AGR_1252_DEL-AGR_NAME .
FORMAT RESET.
SKIP.
PERFORM AUTHORIZATION_OBJ_DER.
ELSEIF XDR = 'X' AND WA_DR_COUNT-COUNT = 0.
FREE : IT_AGR_1016 , IT_AGR_TEXTS ,IT_AGR_DEFINE , IT_DR_COUNT , IT_AGR_TCODES ,
IT_TSTCT , IT_AGR_1252 , IT_AGR_1252_DEL ,IT_USVART , IT_AGR_1250 ,
IT_AGR_1251 , IT_AUTHX , IT_DD04T , IT_FINAL_DATA .
MESSAGE 'No Further Detail Information ' TYPE 'S'.
ENDIF.
ENDIF.
*&---------------------------------------------------------------------*
*& Form role_list
*&---------------------------------------------------------------------*
FORM ROLE_LIST .
SELECT DISTINCT AGR_NAME COUNTER PROFILE VARIANT
FROM AGR_1016
INTO TABLE IT_AGR_1016
WHERE AGR_NAME IN S_ROLE.
DELETE ADJACENT DUPLICATES FROM IT_AGR_1016 COMPARING AGR_NAME.
IF IT_AGR_1016 IS NOT INITIAL.
SELECT AGR_NAME SPRAS TEXT FROM AGR_TEXTS
INTO TABLE IT_AGR_TEXTS
FOR ALL ENTRIES IN IT_AGR_1016
WHERE AGR_NAME = IT_AGR_1016-AGR_NAME
AND SPRAS = 'E'.
DELETE ADJACENT DUPLICATES FROM IT_AGR_TEXTS COMPARING AGR_NAME.
WRITE: / 'Roles List :' COLOR 3 INTENSIFIED OFF.
SKIP.
WRITE:/(110) SY-ULINE.
WRITE:/ SY-VLINE ,'SR No',
9 SY-VLINE,10 ' Role Name',
39 SY-VLINE,40 ' Description',
99 SY-VLINE,100 ' DR Count',
110 SY-VLINE.
WRITE:/(110) SY-ULINE.
DATA: CNT TYPE I VALUE 1.
LOOP AT IT_AGR_1016 INTO WA_AGR_1016.
SELECT COUNT(*) FROM AGR_DEFINE
INTO COUNT
WHERE PARENT_AGR = WA_AGR_1016-AGR_NAME.
IF SY-SUBRC = 0 .
WA_DR_COUNT-AGR_NAME = WA_AGR_1016-AGR_NAME.
WA_DR_COUNT-COUNT = COUNT.
ELSE.
WA_DR_COUNT-AGR_NAME = WA_AGR_1016-AGR_NAME.
WA_DR_COUNT-COUNT = 0.
ENDIF.
APPEND WA_DR_COUNT TO IT_DR_COUNT.
CLEAR WA_DR_COUNT.
READ TABLE IT_AGR_TEXTS INTO WA_AGR_TEXTS
WITH KEY AGR_NAME = WA_AGR_1016-AGR_NAME.
READ TABLE IT_DR_COUNT INTO WA_DR_COUNT
WITH KEY AGR_NAME = WA_AGR_1016-AGR_NAME.
WRITE:/ SY-VLINE,4(5) CNT,
9 SY-VLINE,10 WA_AGR_1016-AGR_NAME HOTSPOT ON,
39 SY-VLINE,40 WA_AGR_TEXTS-TEXT HOTSPOT ON,
99 SY-VLINE, 100 WA_DR_COUNT-COUNT HOTSPOT ON ,
110 SY-VLINE.
HIDE: WA_AGR_1016-AGR_NAME,WA_DR_COUNT-COUNT.
CNT = CNT + 1.
WRITE:/(110) SY-ULINE.
CLEAR : WA_DR_COUNT , WA_AGR_TEXTS.
ENDLOOP.
ENDIF.
ENDFORM. " role_list
*&---------------------------------------------------------------------*
*& Form TCODE_LIST
*&---------------------------------------------------------------------*
FORM TCODE_LIST .
IF WA_AGR_1016-AGR_NAME IS NOT INITIAL.
SELECT AGR_NAME TCODE FROM AGR_TCODES
INTO TABLE IT_AGR_TCODES
WHERE AGR_NAME = WA_AGR_1016-AGR_NAME.
IF IT_AGR_TCODES IS NOT INITIAL.
LOOP AT IT_AGR_TCODES INTO WA_AGR_TCODES.
WA_AGR_TCODES-TCODE_COMP = WA_AGR_TCODES-TCODE.
MODIFY IT_AGR_TCODES FROM WA_AGR_TCODES TRANSPORTING TCODE_COMP.
ENDLOOP.
SELECT SPRSL TCODE TTEXT FROM TSTCT
INTO TABLE IT_TSTCT
FOR ALL ENTRIES IN IT_AGR_TCODES
WHERE TCODE = IT_AGR_TCODES-TCODE_COMP AND SPRSL = 'E'.
ENDIF.
DATA: A1 TYPE I.
A1 = 1.
WRITE:/2 'Transactions List : ' COLOR 3.
WRITE:/(100) SY-ULINE.
WRITE:/ SY-VLINE,'Sr.No',10 SY-VLINE,'Transaction Codes',
30 SY-VLINE,'Description',100 SY-VLINE.
WRITE:/(100) SY-ULINE.
LOOP AT IT_AGR_TCODES INTO WA_AGR_TCODES.
READ TABLE IT_TSTCT INTO WA_TSTCT WITH KEY TCODE = WA_AGR_TCODES-TCODE.
WRITE :/ SY-VLINE,4(4) A1 ,
10 SY-VLINE,13 WA_AGR_TCODES-TCODE ,
30 SY-VLINE,WA_TSTCT-TTEXT ,
100 SY-VLINE.
A1 = A1 + 1.
ENDLOOP.
FORMAT RESET.
WRITE:/(100) SY-ULINE.
CLEAR : WA_AGR_TCODES , WA_TSTCT-TTEXT.
ENDIF.
ENDFORM. " TCODE_LIST
*&---------------------------------------------------------------------*
*& Form authorization_OBJ
*&---------------------------------------------------------------------*
FORM AUTHORIZATION_OBJ .
IF WA_AGR_1016-AGR_NAME IS NOT INITIAL.
SELECT AGR_NAME OBJECT AUTH ATEXT
FROM AGR_1250 INTO TABLE IT_AGR_1250
WHERE AGR_NAME = WA_AGR_1016-AGR_NAME
AND OBJECT NE 'S_TCODE'.
IF IT_AGR_1250 IS NOT INITIAL.
SELECT AGR_NAME OBJECT AUTH FIELD LOW HIGH
FROM AGR_1251
INTO TABLE IT_AGR_1251
FOR ALL ENTRIES IN IT_AGR_1250
WHERE AGR_NAME = IT_AGR_1250-AGR_NAME AND
OBJECT = IT_AGR_1250-OBJECT AND
AUTH = IT_AGR_1250-AUTH.
ENDIF.
SKIP.
WRITE :/2 'Authorization Objects' COLOR 3.
WRITE:/(175) SY-ULINE.
WRITE :/ SY-VLINE, 'Object',
25 SY-VLINE,26 'Description',
96 SY-VLINE,97 'Activity / Fields',
157 SY-VLINE,158 'Values',
175 SY-VLINE.
SORT IT_AGR_1251.
LOOP AT IT_AGR_1251 INTO WA_AGR_1251.
READ TABLE IT_AGR_1250 INTO WA_AGR_1250 WITH KEY AGR_NAME = WA_AGR_1251-AGR_NAME OBJECT = WA_AGR_1251-OBJECT.
SELECT SINGLE ROLLNAME FROM AUTHX INTO WA_AUTHX WHERE FIELDNAME = WA_AGR_1251-FIELD.
SELECT SINGLE ROLLNAME DDLANGUAGE DDTEXT FROM DD04T INTO WA_DD04T WHERE ROLLNAME = WA_AUTHX-ROLLNAME AND DDLANGUAGE = 'E'.
DATA: TEXT(80) TYPE C.
CONCATENATE WA_DD04T-DDTEXT '/' WA_AGR_1251-FIELD INTO TEXT SEPARATED BY SPACE.
DATA: VALUE(25) TYPE C.
IF WA_AGR_1251-HIGH IS INITIAL.
CONCATENATE WA_AGR_1251-LOW ' ' INTO VALUE SEPARATED BY SPACE.
ELSEIF WA_AGR_1251-HIGH IS NOT INITIAL.
CONCATENATE WA_AGR_1251-LOW ',' WA_AGR_1251-HIGH INTO VALUE SEPARATED BY SPACE.
ENDIF.
WA_FINAL-OBJECT = WA_AGR_1251-OBJECT.
WA_FINAL-ATEXT = WA_AGR_1250-ATEXT .
WA_FINAL-DDTEXT = WA_DD04T-DDTEXT.
WA_FINAL-DDTEXT_FIELD = TEXT.
WA_FINAL-VALUE = VALUE.
APPEND WA_FINAL TO IT_FINAL.
CLEAR : TEXT, VALUE.
CLEAR WA_FINAL.
CLEAR : WA_AGR_1251, WA_AGR_1250 ,WA_DD04T ,WA_AUTHX,WA_AGR_1016 . "ADDED WA_AGR_1016 BY DHRUV
ENDLOOP.
SORT IT_FINAL.
DATA: FLAG TYPE I. "VALUE 1.
DATA: FLAG_Y TYPE I. "VALUE 1.
DATA: LINES TYPE I.
LOOP AT IT_FINAL INTO WA_FINAL.
WA_SFINAL-OBJ_DISP = WA_FINAL-OBJECT.
WA_SFINAL-ATEXT_DISP = WA_FINAL-ATEXT.
WA_SFINAL-DDTEXT_DISP = WA_FINAL-DDTEXT_FIELD.
APPEND WA_SFINAL TO IT_SFINAL.
CLEAR WA_SFINAL.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM IT_SFINAL.
SORT IT_SFINAL.
LOOP AT IT_SFINAL INTO WA_SFINAL.
IF FLAG = 8.
FLAG = 1.
ENDIF.
LINES = 1.
LOOP AT IT_FINAL INTO WA_FINAL WHERE OBJECT = WA_SFINAL-OBJ_DISP AND DDTEXT_FIELD = WA_SFINAL-DDTEXT_DISP.
ON CHANGE OF WA_FINAL-OBJECT.
WA_FINAL-OBJ_DISP = WA_FINAL-OBJECT.
WA_FINAL-ATEXT_DISP = WA_FINAL-ATEXT.
WRITE:/(175) SY-ULINE.
ENDON.
IF LINES = 1.
READ TABLE IT_SFINAL INTO WA_SFINAL1 WITH KEY OBJ_DISP = WA_FINAL-OBJECT DDTEXT_DISP = WA_FINAL-DDTEXT_FIELD.
IF SY-SUBRC = 0.
WA_FINAL-DDTEXT_DISP = WA_SFINAL1-DDTEXT_DISP.
ENDIF.
ENDIF.
IF FLAG = 0.
FLAG_Y = 1.
FORMAT COLOR 1.
ELSEIF FLAG = 1.
FLAG_Y = 1.
FORMAT COLOR 2.
ELSEIF FLAG = 2.
FLAG_Y = 1.
FORMAT COLOR 3.
ELSEIF FLAG = 3.
FLAG_Y = 1.
FORMAT COLOR 4.
ELSEIF FLAG = 4.
FLAG_Y = 1.
FORMAT COLOR 5.
ELSEIF FLAG = 5.
FLAG_Y = 1.
FORMAT COLOR 6.
ELSEIF FLAG = 6.
FLAG_Y = 1.
FORMAT COLOR 7.
ENDIF.
IF FLAG_Y = 1.
WRITE : / SY-VLINE, WA_FINAL-OBJ_DISP ," COLOR 1,
25 SY-VLINE,26 WA_FINAL-ATEXT_DISP ," COLOR 2,
96 SY-VLINE,97 WA_FINAL-DDTEXT_DISP , " COLOR 3,
157 SY-VLINE,158 WA_FINAL-VALUE , "COLOR 4,
175 SY-VLINE.
ENDIF.
CLEAR WA_FINAL.
CLEAR LINES.
ENDLOOP.
FORMAT COLOR OFF.
FLAG = FLAG + 1.
ENDLOOP.
WRITE:/(175) SY-ULINE.
ENDIF.
ENDFORM. " authorization_OBJ
*&---------------------------------------------------------------------*
*& Form DERIVED_ROLES
*&---------------------------------------------------------------------*
FORM DERIVED_ROLES .
IF NOT WA_AGR_1016-AGR_NAME IS INITIAL AND WA_DR_COUNT-COUNT <> 0.
SELECT AGR_NAME PARENT_AGR FROM AGR_DEFINE
INTO TABLE IT_AGR_DEFINE
WHERE PARENT_AGR = WA_AGR_1016-AGR_NAME.
WRITE:/2 'Derived Roles : ' COLOR 3.
IF IT_AGR_DEFINE IS NOT INITIAL.
SELECT AGR_NAME VARBL LOW HIGH FROM AGR_1252
INTO TABLE IT_AGR_1252
FOR ALL ENTRIES IN IT_AGR_DEFINE
WHERE AGR_NAME = IT_AGR_DEFINE-AGR_NAME.
IT_AGR_1252_DEL[] = IT_AGR_1252[].
SORT IT_AGR_1252_DEL BY AGR_NAME VARBL LOW HIGH.
DELETE ADJACENT DUPLICATES FROM IT_AGR_1252_DEL COMPARING ALL FIELDS.
ENDIF.
SELECT LANGU VARBL VTEXT FROM USVART
INTO TABLE IT_USVART
FOR ALL ENTRIES IN IT_AGR_1252_DEL
WHERE VARBL = IT_AGR_1252_DEL-VARBL AND LANGU = 'E'.
WRITE:/(81) SY-ULINE.
WRITE : / SY-VLINE , 'Derived Role Name' ,
34 SY-VLINE ,35 'Org. element' ,
44 SY-VLINE , 45 'Description',
69 SY-VLINE , 70 'Low',
75 SY-VLINE , 76 'High',
81 SY-VLINE.
SORT IT_AGR_1252_DEL BY AGR_NAME VARBL LOW HIGH.
DATA : FLAG TYPE I.
LOOP AT IT_AGR_1252_DEL INTO WA_AGR_1252_DEL.
ON CHANGE OF WA_AGR_1252_DEL-VARBL.
WA_AGR_1252_DEL-VARBL_DISP = WA_AGR_1252_DEL-VARBL.
READ TABLE IT_USVART INTO WA_USVART WITH KEY VARBL = WA_AGR_1252_DEL-VARBL.
IF SY-SUBRC = 0.
WA_AGR_1252_DEL-DESC = WA_USVART-VTEXT.
ENDIF.
MODIFY IT_AGR_1252_DEL FROM WA_AGR_1252_DEL TRANSPORTING VARBL_DISP DESC.
FLAG = 1.
ENDON.
ON CHANGE OF WA_AGR_1252_DEL-AGR_NAME.
WRITE:/(81) SY-ULINE.
WA_AGR_1252_DEL-AGR_NAME_DISP = WA_AGR_1252_DEL-AGR_NAME.
MODIFY IT_AGR_1252_DEL FROM WA_AGR_1252_DEL TRANSPORTING AGR_NAME_DISP .
ENDON.
WRITE : / SY-VLINE , WA_AGR_1252_DEL-AGR_NAME_DISP HOTSPOT ON,
34 SY-VLINE ,35 WA_AGR_1252_DEL-VARBL_DISP HOTSPOT ON,
44 SY-VLINE , 45 WA_AGR_1252_DEL-DESC HOTSPOT ON,
69 SY-VLINE , 70 WA_AGR_1252_DEL-LOW HOTSPOT ON,
75 SY-VLINE , 76 WA_AGR_1252_DEL-HIGH HOTSPOT ON,
81 SY-VLINE.
HIDE WA_AGR_1252_DEL-AGR_NAME.
ENDLOOP.
WRITE:/(81) SY-ULINE.
ENDIF.
ENDFORM. "DERIVED_ROLES
*&---------------------------------------------------------------------*
*& Form ROLE_NAME
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM ROLE_NAME.
SELECT AGR_NAME PARENT_AGR FROM AGR_DEFINE
INTO TABLE IT_AGR_DEFINE
WHERE AGR_NAME = WA_AGR_1016-AGR_NAME.
WRITE:/2 'Roles : ' COLOR 3.
IF IT_AGR_DEFINE IS NOT INITIAL.
SELECT AGR_NAME VARBL LOW HIGH FROM AGR_1252
INTO TABLE IT_AGR_1252
FOR ALL ENTRIES IN IT_AGR_DEFINE
WHERE AGR_NAME = IT_AGR_DEFINE-AGR_NAME.
IT_AGR_1252_DEL[] = IT_AGR_1252[].
SORT IT_AGR_1252_DEL BY AGR_NAME VARBL LOW HIGH.
DELETE ADJACENT DUPLICATES FROM IT_AGR_1252_DEL COMPARING ALL FIELDS.
ENDIF.
SELECT LANGU VARBL VTEXT FROM USVART
INTO TABLE IT_USVART
FOR ALL ENTRIES IN IT_AGR_1252_DEL
WHERE VARBL = IT_AGR_1252_DEL-VARBL AND LANGU = 'E'.
WRITE:/(81) SY-ULINE.
WRITE : / SY-VLINE , 'Role Name' ,
34 SY-VLINE ,35 'Org. element' ,
44 SY-VLINE , 45 'Description',
69 SY-VLINE , 70 'Low',
75 SY-VLINE , 76 'High',
81 SY-VLINE.
SORT IT_AGR_1252_DEL BY AGR_NAME VARBL LOW HIGH.
DATA : FLAG_Y TYPE I.
LOOP AT IT_AGR_1252_DEL INTO WA_AGR_1252_DEL.
ON CHANGE OF WA_AGR_1252_DEL-VARBL.
WA_AGR_1252_DEL-VARBL_DISP = WA_AGR_1252_DEL-VARBL.
READ TABLE IT_USVART INTO WA_USVART WITH KEY VARBL = WA_AGR_1252_DEL-VARBL.
IF SY-SUBRC = 0.
WA_AGR_1252_DEL-DESC = WA_USVART-VTEXT.
ENDIF.
MODIFY IT_AGR_1252_DEL FROM WA_AGR_1252_DEL TRANSPORTING VARBL_DISP DESC.
FLAG_Y = 1.
ENDON.
ON CHANGE OF WA_AGR_1252_DEL-AGR_NAME.
WRITE:/(81) SY-ULINE.
WA_AGR_1252_DEL-AGR_NAME_DISP = WA_AGR_1252_DEL-AGR_NAME.
MODIFY IT_AGR_1252_DEL FROM WA_AGR_1252_DEL TRANSPORTING AGR_NAME_DISP .
ENDON.
WRITE : / SY-VLINE , WA_AGR_1252_DEL-AGR_NAME_DISP ,
34 SY-VLINE ,35 WA_AGR_1252_DEL-VARBL_DISP ,
44 SY-VLINE , 45 WA_AGR_1252_DEL-DESC,
69 SY-VLINE , 70 WA_AGR_1252_DEL-LOW ,
75 SY-VLINE , 76 WA_AGR_1252_DEL-HIGH,
81 SY-VLINE.
ENDLOOP.
WRITE:/(81) SY-ULINE.
ENDFORM. " DERIVED_ROLES
*&---------------------------------------------------------------------*
*& Form AUTHORIZATION_OBJ_DER
*&---------------------------------------------------------------------*
FORM AUTHORIZATION_OBJ_DER .
IF NOT WA_AGR_1252_DEL-AGR_NAME IS INITIAL AND WA_DR_COUNT-COUNT <> 0.
SELECT AGR_NAME OBJECT AUTH ATEXT
FROM AGR_1250 INTO TABLE IT_AGR_1250
WHERE AGR_NAME = WA_AGR_1252_DEL-AGR_NAME
AND OBJECT NE 'S_TCODE'.
IF IT_AGR_1250 IS NOT INITIAL.
SELECT AGR_NAME OBJECT AUTH FIELD LOW HIGH
FROM AGR_1251
INTO TABLE IT_AGR_1251
FOR ALL ENTRIES IN IT_AGR_1250
WHERE AGR_NAME = IT_AGR_1250-AGR_NAME AND
OBJECT = IT_AGR_1250-OBJECT AND
AUTH = IT_AGR_1250-AUTH.
ENDIF.
SKIP.
WRITE :/2 'Authorization Objects' COLOR 3.
WRITE:/(175) SY-ULINE.
WRITE :/ SY-VLINE, 'Object',
25 SY-VLINE,26 'Description',
96 SY-VLINE,97 'Activity / Fields',
157 SY-VLINE,158 'Values',
175 SY-VLINE.
SORT IT_AGR_1251.
REFRESH IT_FINAL.
LOOP AT IT_AGR_1251 INTO WA_AGR_1251.
READ TABLE IT_AGR_1250 INTO WA_AGR_1250 WITH KEY AGR_NAME = WA_AGR_1251-AGR_NAME OBJECT = WA_AGR_1251-OBJECT.
SELECT SINGLE ROLLNAME FROM AUTHX INTO WA_AUTHX WHERE FIELDNAME = WA_AGR_1251-FIELD.
SELECT SINGLE ROLLNAME DDLANGUAGE DDTEXT FROM DD04T INTO WA_DD04T WHERE ROLLNAME = WA_AUTHX-ROLLNAME AND DDLANGUAGE = 'E'.
DATA: TEXT(80) TYPE C.
CONCATENATE WA_DD04T-DDTEXT '/' WA_AGR_1251-FIELD INTO TEXT SEPARATED BY SPACE.
DATA: VALUE(25) TYPE C.
IF WA_AGR_1251-HIGH IS INITIAL.
CONCATENATE WA_AGR_1251-LOW ' ' INTO VALUE SEPARATED BY SPACE.
ELSEIF WA_AGR_1251-HIGH IS NOT INITIAL.
CONCATENATE WA_AGR_1251-LOW ',' WA_AGR_1251-HIGH INTO VALUE SEPARATED BY SPACE.
ENDIF.
WA_FINAL-OBJECT = WA_AGR_1251-OBJECT.
WA_FINAL-ATEXT = WA_AGR_1250-ATEXT .
WA_FINAL-DDTEXT = WA_DD04T-DDTEXT.
WA_FINAL-DDTEXT_FIELD = TEXT.
WA_FINAL-VALUE = VALUE.
APPEND WA_FINAL TO IT_FINAL.
CLEAR : TEXT, VALUE.
CLEAR WA_FINAL.
CLEAR : WA_AGR_1251, WA_AGR_1250 ,WA_DD04T ,WA_AUTHX .
ENDLOOP.
SORT IT_FINAL.
DATA: FLAG TYPE I. "VALUE 1.
DATA: FLAG_Y TYPE I. "VALUE 1.
DATA: LINES TYPE I.
REFRESH IT_SFINAL.
LOOP AT IT_FINAL INTO WA_FINAL.
WA_SFINAL-OBJ_DISP = WA_FINAL-OBJECT.
WA_SFINAL-ATEXT_DISP = WA_FINAL-ATEXT.
WA_SFINAL-DDTEXT_DISP = WA_FINAL-DDTEXT_FIELD.
APPEND WA_SFINAL TO IT_SFINAL.
CLEAR WA_SFINAL.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM IT_SFINAL.
SORT IT_SFINAL.
LOOP AT IT_SFINAL INTO WA_SFINAL.
IF FLAG = 8.
FLAG = 1.
ENDIF.
LINES = 1.
LOOP AT IT_FINAL INTO WA_FINAL WHERE OBJECT = WA_SFINAL-OBJ_DISP AND DDTEXT_FIELD = WA_SFINAL-DDTEXT_DISP.
ON CHANGE OF WA_FINAL-OBJECT.
WA_FINAL-OBJ_DISP = WA_FINAL-OBJECT.
WA_FINAL-ATEXT_DISP = WA_FINAL-ATEXT.
WRITE:/(175) SY-ULINE.
ENDON.
IF LINES = 1.
READ TABLE IT_SFINAL INTO WA_SFINAL1 WITH KEY OBJ_DISP = WA_FINAL-OBJECT DDTEXT_DISP = WA_FINAL-DDTEXT_FIELD.
IF SY-SUBRC = 0.
WA_FINAL-DDTEXT_DISP = WA_SFINAL1-DDTEXT_DISP.
ENDIF.
ENDIF.
IF FLAG = 0.
FLAG_Y = 1.
FORMAT COLOR 1.
ELSEIF FLAG = 1.
FLAG_Y = 1.
FORMAT COLOR 2.
ELSEIF FLAG = 2.
FLAG_Y = 1.
FORMAT COLOR 3.
ELSEIF FLAG = 3.
FLAG_Y = 1.
FORMAT COLOR 4.
ELSEIF FLAG = 4.
FLAG_Y = 1.
FORMAT COLOR 5.
ELSEIF FLAG = 5.
FLAG_Y = 1.
FORMAT COLOR 6.
ELSEIF FLAG = 6.
FLAG_Y = 1.
FORMAT COLOR 7.
ENDIF.
IF FLAG_Y = 1.
WRITE : / SY-VLINE, WA_FINAL-OBJ_DISP ," COLOR 1,
25 SY-VLINE,26 WA_FINAL-ATEXT_DISP ," COLOR 2,
96 SY-VLINE,97 WA_FINAL-DDTEXT_DISP , " COLOR 3,
157 SY-VLINE,158 WA_FINAL-VALUE , "COLOR 4,
175 SY-VLINE.
ENDIF.
CLEAR WA_FINAL.
CLEAR LINES.
ENDLOOP.
FORMAT COLOR OFF.
FLAG = FLAG + 1.
ENDLOOP.
WRITE:/(175) SY-ULINE.
ENDIF.
ENDFORM. " AUTHORIZATION_OBJ_DER
HTH
Regards,
Dhruv Shah
Hi,
Use the below program and enter the role name in the selection screen...
Execute the program in different sessions and then compare it.
*&---------------------------------------------------------------------*
*& Report Z_MASTER_DERIVED
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_MASTER_DERIVED LINE-SIZE 175.
TABLES :AGR_1016.
TYPES: BEGIN OF TY_AGR_1016,
AGR_NAME TYPE AGR_1016-AGR_NAME,
COUNTER TYPE AGR_1016-COUNTER,
PROFILE TYPE AGR_1016-PROFILE,
VARIANT TYPE AGR_1016-VARIANT,
END OF TY_AGR_1016,
BEGIN OF TY_AGR_TEXTS,
AGR_NAME TYPE AGR_TEXTS-AGR_NAME,
SPRAS TYPE AGR_TEXTS-SPRAS,
TEXT TYPE AGR_TEXTS-TEXT,
END OF TY_AGR_TEXTS,
BEGIN OF TY_AGR_DEFINE,
AGR_NAME TYPE AGR_DEFINE-AGR_NAME,
PARENT_AGR TYPE AGR_DEFINE-PARENT_AGR,
END OF TY_AGR_DEFINE,
BEGIN OF TY_DR_COUNT,
AGR_NAME TYPE AGR_DEFINE-AGR_NAME,
COUNT TYPE I,
END OF TY_DR_COUNT,
BEGIN OF TY_AGR_TCODES,
AGR_NAME TYPE AGR_TCODES-AGR_NAME,
TCODE TYPE AGR_TCODES-TCODE,
TCODE_COMP TYPE TSTCT-TCODE,
END OF TY_AGR_TCODES,
BEGIN OF TY_TSTCT,
SPRSL TYPE TSTCT-SPRSL,
TCODE TYPE TSTCT-TCODE,
TTEXT TYPE TSTCT-TTEXT,
END OF TY_TSTCT,
BEGIN OF TY_AGR_1252,
AGR_NAME TYPE AGR_1252-AGR_NAME,
VARBL TYPE AGR_1252-VARBL,
LOW TYPE AGR_1252-LOW,
HIGH TYPE AGR_1252-HIGH,
DESC(30) TYPE C,
VARBL_DISP TYPE AGR_1252-VARBL,
AGR_NAME_DISP TYPE AGR_1252-AGR_NAME,
END OF TY_AGR_1252,
BEGIN OF TY_USVART,
LANGU TYPE USVART-LANGU, "LANGUAGE KEY
VARBL TYPE USVART-VARBL,
VTEXT TYPE USVART-VTEXT, "DESCRIPTION
END OF TY_USVART,
BEGIN OF TY_AGR_1250,
AGR_NAME TYPE AGR_1250-AGR_NAME,
OBJECT TYPE AGR_1250-OBJECT,
AUTH TYPE AGR_1250-AUTH,
ATEXT TYPE AGR_1250-ATEXT,
END OF TY_AGR_1250,
BEGIN OF TY_AGR_1251,
AGR_NAME TYPE AGR_1251-AGR_NAME,
OBJECT TYPE AGR_1251-OBJECT,
AUTH TYPE AGR_1251-AUTH,
FIELD TYPE AGR_1251-FIELD,
LOW TYPE AGR_1251-LOW,
HIGH TYPE AGR_1251-HIGH,
END OF TY_AGR_1251,
BEGIN OF TY_AUTHX,
ROLLNAME TYPE AUTHX-ROLLNAME,
END OF TY_AUTHX,
BEGIN OF TY_DD04T,
ROLLNAME TYPE DD04T-ROLLNAME,
DDLANGUAGE TYPE DD04T-DDLANGUAGE,
DDTEXT TYPE DD04T-DDTEXT,
END OF TY_DD04T,
BEGIN OF TY_SFINAL,
OBJ_DISP TYPE AGR_1250-OBJECT,
ATEXT_DISP TYPE AGR_1250-ATEXT,
DDTEXT_DISP(80) TYPE C,
END OF TY_SFINAL,
BEGIN OF TY_FINAL_DATA,
OBJECT TYPE AGR_1250-OBJECT,
ATEXT TYPE AGR_1250-ATEXT,
DDTEXT TYPE DD04T-DDTEXT,
DDTEXT_FIELD(60) TYPE C,
VALUE(30) TYPE C,
OBJ_DISP TYPE AGR_1250-OBJECT,
ATEXT_DISP TYPE AGR_1250-ATEXT,
DDTEXT_DISP(60) TYPE C,
END OF TY_FINAL_DATA.
DATA : IT_AGR_1016 TYPE STANDARD TABLE OF TY_AGR_1016,
WA_AGR_1016 TYPE TY_AGR_1016,
IT_AGR_TEXTS TYPE STANDARD TABLE OF TY_AGR_TEXTS,
WA_AGR_TEXTS TYPE TY_AGR_TEXTS,
IT_AGR_DEFINE TYPE STANDARD TABLE OF TY_AGR_DEFINE,
WA_AGR_DEFINE TYPE TY_AGR_DEFINE,
IT_DR_COUNT TYPE STANDARD TABLE OF TY_DR_COUNT,
WA_DR_COUNT TYPE TY_DR_COUNT,
COUNT TYPE I,
IT_AGR_TCODES TYPE STANDARD TABLE OF TY_AGR_TCODES,
WA_AGR_TCODES TYPE TY_AGR_TCODES,
IT_TSTCT TYPE STANDARD TABLE OF TY_TSTCT,
WA_TSTCT TYPE TY_TSTCT,
IT_AGR_1252 TYPE STANDARD TABLE OF TY_AGR_1252,
WA_AGR_1252 TYPE TY_AGR_1252,
IT_AGR_1252_DEL TYPE STANDARD TABLE OF TY_AGR_1252,
WA_AGR_1252_DEL TYPE TY_AGR_1252,
IT_USVART TYPE STANDARD TABLE OF TY_USVART,
WA_USVART TYPE TY_USVART,
IT_AGR_1250 TYPE STANDARD TABLE OF TY_AGR_1250,
WA_AGR_1250 TYPE TY_AGR_1250,
IT_AGR_1251 TYPE STANDARD TABLE OF TY_AGR_1251,
WA_AGR_1251 TYPE TY_AGR_1251,
IT_AUTHX TYPE STANDARD TABLE OF TY_AUTHX,
WA_AUTHX TYPE TY_AUTHX,
IT_DD04T TYPE STANDARD TABLE OF TY_DD04T,
WA_DD04T TYPE TY_DD04T,
IT_SFINAL TYPE STANDARD TABLE OF TY_SFINAL,
WA_SFINAL TYPE TY_SFINAL,
WA_SFINAL1 TYPE TY_SFINAL,
IT_FINAL TYPE STANDARD TABLE OF TY_FINAL_DATA,
WA_FINAL TYPE TY_FINAL_DATA,
IT_FINAL_DATA TYPE STANDARD TABLE OF TY_FINAL_DATA,
WA_FINAL_DATA TYPE TY_FINAL_DATA.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT_001.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(20) TEXT_010 MODIF ID M1 .
SELECT-OPTIONS : S_ROLE FOR AGR_1016-AGR_NAME NO INTERVALS MODIF ID M1 ."roles
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT_002.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: XTR AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 5(50) TEXT_011.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: XAU AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 5(50) TEXT_012.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: XDR AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 5(50) TEXT_013.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B2.
INITIALIZATION.
TEXT_001 = 'Report Specification'.
TEXT_002 = 'Output Specification'.
TEXT_010 = 'Roles'.
TEXT_011 = 'Transection Objects' .
TEXT_012 = 'Authorization Objects' .
TEXT_013 = 'Derived Objects' .
START-OF-SELECTION.
IF S_ROLE IS INITIAL.
MESSAGE 'Please fill required field' TYPE 'S'.
LEAVE LIST-PROCESSING.
CALL TRANSACTION 'ZROLE'.
ENDIF.
PERFORM ROLE_LIST.
AT LINE-SELECTION.
IF SY-LSIND = 1.
FREE : IT_AGR_1016 , IT_AGR_TEXTS ,IT_AGR_DEFINE , IT_DR_COUNT , IT_AGR_TCODES ,
IT_TSTCT , IT_AGR_1252 , IT_AGR_1252_DEL ,IT_USVART , IT_AGR_1250 ,
IT_AGR_1251 , IT_AUTHX , IT_DD04T , IT_FINAL_DATA,IT_SFINAL,IT_FINAL. " ADDED TO TABLE IT_SFINAL,IT_FINAL BY DHRUV
FORMAT COLOR 1.
WRITE :/ 'Role Name : ' , WA_AGR_1016-AGR_NAME .
FORMAT RESET.
SKIP.
IF XTR = 'X'.
PERFORM TCODE_LIST.
ENDIF.
IF XDR = 'X' AND WA_DR_COUNT-COUNT <> 0.
PERFORM DERIVED_ROLES.
ENDIF.
IF XDR = 'X' AND WA_DR_COUNT-COUNT = 0.
PERFORM ROLE_NAME.
ENDIF.
IF XAU = 'X'.
PERFORM AUTHORIZATION_OBJ.
ENDIF.
ELSEIF SY-LSIND = 2.
IF XDR = 'X' AND WA_DR_COUNT-COUNT <> 0.
FREE : IT_AGR_1016 , IT_AGR_TEXTS ,IT_AGR_DEFINE , IT_DR_COUNT , IT_AGR_TCODES ,
IT_TSTCT , IT_AGR_1252 , IT_AGR_1252_DEL ,IT_USVART , IT_AGR_1250 ,
IT_AGR_1251 , IT_AUTHX , IT_DD04T , IT_FINAL_DATA.
FORMAT COLOR 1 INTENSIFIED ON.
WRITE :/ 'Derived Role Name : ' , WA_AGR_1252_DEL-AGR_NAME .
FORMAT RESET.
SKIP.
PERFORM AUTHORIZATION_OBJ_DER.
ELSEIF XDR = 'X' AND WA_DR_COUNT-COUNT = 0.
FREE : IT_AGR_1016 , IT_AGR_TEXTS ,IT_AGR_DEFINE , IT_DR_COUNT , IT_AGR_TCODES ,
IT_TSTCT , IT_AGR_1252 , IT_AGR_1252_DEL ,IT_USVART , IT_AGR_1250 ,
IT_AGR_1251 , IT_AUTHX , IT_DD04T , IT_FINAL_DATA .
MESSAGE 'No Further Detail Information ' TYPE 'S'.
ENDIF.
ENDIF.
*&---------------------------------------------------------------------*
*& Form role_list
*&---------------------------------------------------------------------*
FORM ROLE_LIST .
SELECT DISTINCT AGR_NAME COUNTER PROFILE VARIANT
FROM AGR_1016
INTO TABLE IT_AGR_1016
WHERE AGR_NAME IN S_ROLE.
DELETE ADJACENT DUPLICATES FROM IT_AGR_1016 COMPARING AGR_NAME.
IF IT_AGR_1016 IS NOT INITIAL.
SELECT AGR_NAME SPRAS TEXT FROM AGR_TEXTS
INTO TABLE IT_AGR_TEXTS
FOR ALL ENTRIES IN IT_AGR_1016
WHERE AGR_NAME = IT_AGR_1016-AGR_NAME
AND SPRAS = 'E'.
DELETE ADJACENT DUPLICATES FROM IT_AGR_TEXTS COMPARING AGR_NAME.
WRITE: / 'Roles List :' COLOR 3 INTENSIFIED OFF.
SKIP.
WRITE:/(110) SY-ULINE.
WRITE:/ SY-VLINE ,'SR No',
9 SY-VLINE,10 ' Role Name',
39 SY-VLINE,40 ' Description',
99 SY-VLINE,100 ' DR Count',
110 SY-VLINE.
WRITE:/(110) SY-ULINE.
DATA: CNT TYPE I VALUE 1.
LOOP AT IT_AGR_1016 INTO WA_AGR_1016.
SELECT COUNT(*) FROM AGR_DEFINE
INTO COUNT
WHERE PARENT_AGR = WA_AGR_1016-AGR_NAME.
IF SY-SUBRC = 0 .
WA_DR_COUNT-AGR_NAME = WA_AGR_1016-AGR_NAME.
WA_DR_COUNT-COUNT = COUNT.
ELSE.
WA_DR_COUNT-AGR_NAME = WA_AGR_1016-AGR_NAME.
WA_DR_COUNT-COUNT = 0.
ENDIF.
APPEND WA_DR_COUNT TO IT_DR_COUNT.
CLEAR WA_DR_COUNT.
READ TABLE IT_AGR_TEXTS INTO WA_AGR_TEXTS
WITH KEY AGR_NAME = WA_AGR_1016-AGR_NAME.
READ TABLE IT_DR_COUNT INTO WA_DR_COUNT
WITH KEY AGR_NAME = WA_AGR_1016-AGR_NAME.
WRITE:/ SY-VLINE,4(5) CNT,
9 SY-VLINE,10 WA_AGR_1016-AGR_NAME HOTSPOT ON,
39 SY-VLINE,40 WA_AGR_TEXTS-TEXT HOTSPOT ON,
99 SY-VLINE, 100 WA_DR_COUNT-COUNT HOTSPOT ON ,
110 SY-VLINE.
HIDE: WA_AGR_1016-AGR_NAME,WA_DR_COUNT-COUNT.
CNT = CNT + 1.
WRITE:/(110) SY-ULINE.
CLEAR : WA_DR_COUNT , WA_AGR_TEXTS.
ENDLOOP.
ENDIF.
ENDFORM. " role_list
*&---------------------------------------------------------------------*
*& Form TCODE_LIST
*&---------------------------------------------------------------------*
FORM TCODE_LIST .
IF WA_AGR_1016-AGR_NAME IS NOT INITIAL.
SELECT AGR_NAME TCODE FROM AGR_TCODES
INTO TABLE IT_AGR_TCODES
WHERE AGR_NAME = WA_AGR_1016-AGR_NAME.
IF IT_AGR_TCODES IS NOT INITIAL.
LOOP AT IT_AGR_TCODES INTO WA_AGR_TCODES.
WA_AGR_TCODES-TCODE_COMP = WA_AGR_TCODES-TCODE.
MODIFY IT_AGR_TCODES FROM WA_AGR_TCODES TRANSPORTING TCODE_COMP.
ENDLOOP.
SELECT SPRSL TCODE TTEXT FROM TSTCT
INTO TABLE IT_TSTCT
FOR ALL ENTRIES IN IT_AGR_TCODES
WHERE TCODE = IT_AGR_TCODES-TCODE_COMP AND SPRSL = 'E'.
ENDIF.
DATA: A1 TYPE I.
A1 = 1.
WRITE:/2 'Transactions List : ' COLOR 3.
WRITE:/(100) SY-ULINE.
WRITE:/ SY-VLINE,'Sr.No',10 SY-VLINE,'Transaction Codes',
30 SY-VLINE,'Description',100 SY-VLINE.
WRITE:/(100) SY-ULINE.
LOOP AT IT_AGR_TCODES INTO WA_AGR_TCODES.
READ TABLE IT_TSTCT INTO WA_TSTCT WITH KEY TCODE = WA_AGR_TCODES-TCODE.
WRITE :/ SY-VLINE,4(4) A1 ,
10 SY-VLINE,13 WA_AGR_TCODES-TCODE ,
30 SY-VLINE,WA_TSTCT-TTEXT ,
100 SY-VLINE.
A1 = A1 + 1.
ENDLOOP.
FORMAT RESET.
WRITE:/(100) SY-ULINE.
CLEAR : WA_AGR_TCODES , WA_TSTCT-TTEXT.
ENDIF.
ENDFORM. " TCODE_LIST
*&---------------------------------------------------------------------*
*& Form authorization_OBJ
*&---------------------------------------------------------------------*
FORM AUTHORIZATION_OBJ .
IF WA_AGR_1016-AGR_NAME IS NOT INITIAL.
SELECT AGR_NAME OBJECT AUTH ATEXT
FROM AGR_1250 INTO TABLE IT_AGR_1250
WHERE AGR_NAME = WA_AGR_1016-AGR_NAME
AND OBJECT NE 'S_TCODE'.
IF IT_AGR_1250 IS NOT INITIAL.
SELECT AGR_NAME OBJECT AUTH FIELD LOW HIGH
FROM AGR_1251
INTO TABLE IT_AGR_1251
FOR ALL ENTRIES IN IT_AGR_1250
WHERE AGR_NAME = IT_AGR_1250-AGR_NAME AND
OBJECT = IT_AGR_1250-OBJECT AND
AUTH = IT_AGR_1250-AUTH.
ENDIF.
SKIP.
WRITE :/2 'Authorization Objects' COLOR 3.
WRITE:/(175) SY-ULINE.
WRITE :/ SY-VLINE, 'Object',
25 SY-VLINE,26 'Description',
96 SY-VLINE,97 'Activity / Fields',
157 SY-VLINE,158 'Values',
175 SY-VLINE.
SORT IT_AGR_1251.
LOOP AT IT_AGR_1251 INTO WA_AGR_1251.
READ TABLE IT_AGR_1250 INTO WA_AGR_1250 WITH KEY AGR_NAME = WA_AGR_1251-AGR_NAME OBJECT = WA_AGR_1251-OBJECT.
SELECT SINGLE ROLLNAME FROM AUTHX INTO WA_AUTHX WHERE FIELDNAME = WA_AGR_1251-FIELD.
SELECT SINGLE ROLLNAME DDLANGUAGE DDTEXT FROM DD04T INTO WA_DD04T WHERE ROLLNAME = WA_AUTHX-ROLLNAME AND DDLANGUAGE = 'E'.
DATA: TEXT(80) TYPE C.
CONCATENATE WA_DD04T-DDTEXT '/' WA_AGR_1251-FIELD INTO TEXT SEPARATED BY SPACE.
DATA: VALUE(25) TYPE C.
IF WA_AGR_1251-HIGH IS INITIAL.
CONCATENATE WA_AGR_1251-LOW ' ' INTO VALUE SEPARATED BY SPACE.
ELSEIF WA_AGR_1251-HIGH IS NOT INITIAL.
CONCATENATE WA_AGR_1251-LOW ',' WA_AGR_1251-HIGH INTO VALUE SEPARATED BY SPACE.
ENDIF.
WA_FINAL-OBJECT = WA_AGR_1251-OBJECT.
WA_FINAL-ATEXT = WA_AGR_1250-ATEXT .
WA_FINAL-DDTEXT = WA_DD04T-DDTEXT.
WA_FINAL-DDTEXT_FIELD = TEXT.
WA_FINAL-VALUE = VALUE.
APPEND WA_FINAL TO IT_FINAL.
CLEAR : TEXT, VALUE.
CLEAR WA_FINAL.
CLEAR : WA_AGR_1251, WA_AGR_1250 ,WA_DD04T ,WA_AUTHX,WA_AGR_1016 . "ADDED WA_AGR_1016 BY DHRUV
ENDLOOP.
SORT IT_FINAL.
DATA: FLAG TYPE I. "VALUE 1.
DATA: FLAG_Y TYPE I. "VALUE 1.
DATA: LINES TYPE I.
LOOP AT IT_FINAL INTO WA_FINAL.
WA_SFINAL-OBJ_DISP = WA_FINAL-OBJECT.
WA_SFINAL-ATEXT_DISP = WA_FINAL-ATEXT.
WA_SFINAL-DDTEXT_DISP = WA_FINAL-DDTEXT_FIELD.
APPEND WA_SFINAL TO IT_SFINAL.
CLEAR WA_SFINAL.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM IT_SFINAL.
SORT IT_SFINAL.
LOOP AT IT_SFINAL INTO WA_SFINAL.
IF FLAG = 8.
FLAG = 1.
ENDIF.
LINES = 1.
LOOP AT IT_FINAL INTO WA_FINAL WHERE OBJECT = WA_SFINAL-OBJ_DISP AND DDTEXT_FIELD = WA_SFINAL-DDTEXT_DISP.
ON CHANGE OF WA_FINAL-OBJECT.
WA_FINAL-OBJ_DISP = WA_FINAL-OBJECT.
WA_FINAL-ATEXT_DISP = WA_FINAL-ATEXT.
WRITE:/(175) SY-ULINE.
ENDON.
IF LINES = 1.
READ TABLE IT_SFINAL INTO WA_SFINAL1 WITH KEY OBJ_DISP = WA_FINAL-OBJECT DDTEXT_DISP = WA_FINAL-DDTEXT_FIELD.
IF SY-SUBRC = 0.
WA_FINAL-DDTEXT_DISP = WA_SFINAL1-DDTEXT_DISP.
ENDIF.
ENDIF.
IF FLAG = 0.
FLAG_Y = 1.
FORMAT COLOR 1.
ELSEIF FLAG = 1.
FLAG_Y = 1.
FORMAT COLOR 2.
ELSEIF FLAG = 2.
FLAG_Y = 1.
FORMAT COLOR 3.
ELSEIF FLAG = 3.
FLAG_Y = 1.
FORMAT COLOR 4.
ELSEIF FLAG = 4.
FLAG_Y = 1.
FORMAT COLOR 5.
ELSEIF FLAG = 5.
FLAG_Y = 1.
FORMAT COLOR 6.
ELSEIF FLAG = 6.
FLAG_Y = 1.
FORMAT COLOR 7.
ENDIF.
IF FLAG_Y = 1.
WRITE : / SY-VLINE, WA_FINAL-OBJ_DISP ," COLOR 1,
25 SY-VLINE,26 WA_FINAL-ATEXT_DISP ," COLOR 2,
96 SY-VLINE,97 WA_FINAL-DDTEXT_DISP , " COLOR 3,
157 SY-VLINE,158 WA_FINAL-VALUE , "COLOR 4,
175 SY-VLINE.
ENDIF.
CLEAR WA_FINAL.
CLEAR LINES.
ENDLOOP.
FORMAT COLOR OFF.
FLAG = FLAG + 1.
ENDLOOP.
WRITE:/(175) SY-ULINE.
ENDIF.
ENDFORM. " authorization_OBJ
*&---------------------------------------------------------------------*
*& Form DERIVED_ROLES
*&---------------------------------------------------------------------*
FORM DERIVED_ROLES .
IF NOT WA_AGR_1016-AGR_NAME IS INITIAL AND WA_DR_COUNT-COUNT <> 0.
SELECT AGR_NAME PARENT_AGR FROM AGR_DEFINE
INTO TABLE IT_AGR_DEFINE
WHERE PARENT_AGR = WA_AGR_1016-AGR_NAME.
WRITE:/2 'Derived Roles : ' COLOR 3.
IF IT_AGR_DEFINE IS NOT INITIAL.
SELECT AGR_NAME VARBL LOW HIGH FROM AGR_1252
INTO TABLE IT_AGR_1252
FOR ALL ENTRIES IN IT_AGR_DEFINE
WHERE AGR_NAME = IT_AGR_DEFINE-AGR_NAME.
IT_AGR_1252_DEL[] = IT_AGR_1252[].
SORT IT_AGR_1252_DEL BY AGR_NAME VARBL LOW HIGH.
DELETE ADJACENT DUPLICATES FROM IT_AGR_1252_DEL COMPARING ALL FIELDS.
ENDIF.
SELECT LANGU VARBL VTEXT FROM USVART
INTO TABLE IT_USVART
FOR ALL ENTRIES IN IT_AGR_1252_DEL
WHERE VARBL = IT_AGR_1252_DEL-VARBL AND LANGU = 'E'.
WRITE:/(81) SY-ULINE.
WRITE : / SY-VLINE , 'Derived Role Name' ,
34 SY-VLINE ,35 'Org. element' ,
44 SY-VLINE , 45 'Description',
69 SY-VLINE , 70 'Low',
75 SY-VLINE , 76 'High',
81 SY-VLINE.
SORT IT_AGR_1252_DEL BY AGR_NAME VARBL LOW HIGH.
DATA : FLAG TYPE I.
LOOP AT IT_AGR_1252_DEL INTO WA_AGR_1252_DEL.
ON CHANGE OF WA_AGR_1252_DEL-VARBL.
WA_AGR_1252_DEL-VARBL_DISP = WA_AGR_1252_DEL-VARBL.
READ TABLE IT_USVART INTO WA_USVART WITH KEY VARBL = WA_AGR_1252_DEL-VARBL.
IF SY-SUBRC = 0.
WA_AGR_1252_DEL-DESC = WA_USVART-VTEXT.
ENDIF.
MODIFY IT_AGR_1252_DEL FROM WA_AGR_1252_DEL TRANSPORTING VARBL_DISP DESC.
FLAG = 1.
ENDON.
ON CHANGE OF WA_AGR_1252_DEL-AGR_NAME.
WRITE:/(81) SY-ULINE.
WA_AGR_1252_DEL-AGR_NAME_DISP = WA_AGR_1252_DEL-AGR_NAME.
MODIFY IT_AGR_1252_DEL FROM WA_AGR_1252_DEL TRANSPORTING AGR_NAME_DISP .
ENDON.
WRITE : / SY-VLINE , WA_AGR_1252_DEL-AGR_NAME_DISP HOTSPOT ON,
34 SY-VLINE ,35 WA_AGR_1252_DEL-VARBL_DISP HOTSPOT ON,
44 SY-VLINE , 45 WA_AGR_1252_DEL-DESC HOTSPOT ON,
69 SY-VLINE , 70 WA_AGR_1252_DEL-LOW HOTSPOT ON,
75 SY-VLINE , 76 WA_AGR_1252_DEL-HIGH HOTSPOT ON,
81 SY-VLINE.
HIDE WA_AGR_1252_DEL-AGR_NAME.
ENDLOOP.
WRITE:/(81) SY-ULINE.
ENDIF.
ENDFORM. "DERIVED_ROLES
*&---------------------------------------------------------------------*
*& Form ROLE_NAME
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM ROLE_NAME.
SELECT AGR_NAME PARENT_AGR FROM AGR_DEFINE
INTO TABLE IT_AGR_DEFINE
WHERE AGR_NAME = WA_AGR_1016-AGR_NAME.
WRITE:/2 'Roles : ' COLOR 3.
IF IT_AGR_DEFINE IS NOT INITIAL.
SELECT AGR_NAME VARBL LOW HIGH FROM AGR_1252
INTO TABLE IT_AGR_1252
FOR ALL ENTRIES IN IT_AGR_DEFINE
WHERE AGR_NAME = IT_AGR_DEFINE-AGR_NAME.
IT_AGR_1252_DEL[] = IT_AGR_1252[].
SORT IT_AGR_1252_DEL BY AGR_NAME VARBL LOW HIGH.
DELETE ADJACENT DUPLICATES FROM IT_AGR_1252_DEL COMPARING ALL FIELDS.
ENDIF.
SELECT LANGU VARBL VTEXT FROM USVART
INTO TABLE IT_USVART
FOR ALL ENTRIES IN IT_AGR_1252_DEL
WHERE VARBL = IT_AGR_1252_DEL-VARBL AND LANGU = 'E'.
WRITE:/(81) SY-ULINE.
WRITE : / SY-VLINE , 'Role Name' ,
34 SY-VLINE ,35 'Org. element' ,
44 SY-VLINE , 45 'Description',
69 SY-VLINE , 70 'Low',
75 SY-VLINE , 76 'High',
81 SY-VLINE.
SORT IT_AGR_1252_DEL BY AGR_NAME VARBL LOW HIGH.
DATA : FLAG_Y TYPE I.
LOOP AT IT_AGR_1252_DEL INTO WA_AGR_1252_DEL.
ON CHANGE OF WA_AGR_1252_DEL-VARBL.
WA_AGR_1252_DEL-VARBL_DISP = WA_AGR_1252_DEL-VARBL.
READ TABLE IT_USVART INTO WA_USVART WITH KEY VARBL = WA_AGR_1252_DEL-VARBL.
IF SY-SUBRC = 0.
WA_AGR_1252_DEL-DESC = WA_USVART-VTEXT.
ENDIF.
MODIFY IT_AGR_1252_DEL FROM WA_AGR_1252_DEL TRANSPORTING VARBL_DISP DESC.
FLAG_Y = 1.
ENDON.
ON CHANGE OF WA_AGR_1252_DEL-AGR_NAME.
WRITE:/(81) SY-ULINE.
WA_AGR_1252_DEL-AGR_NAME_DISP = WA_AGR_1252_DEL-AGR_NAME.
MODIFY IT_AGR_1252_DEL FROM WA_AGR_1252_DEL TRANSPORTING AGR_NAME_DISP .
ENDON.
WRITE : / SY-VLINE , WA_AGR_1252_DEL-AGR_NAME_DISP ,
34 SY-VLINE ,35 WA_AGR_1252_DEL-VARBL_DISP ,
44 SY-VLINE , 45 WA_AGR_1252_DEL-DESC,
69 SY-VLINE , 70 WA_AGR_1252_DEL-LOW ,
75 SY-VLINE , 76 WA_AGR_1252_DEL-HIGH,
81 SY-VLINE.
ENDLOOP.
WRITE:/(81) SY-ULINE.
ENDFORM. " DERIVED_ROLES
*&---------------------------------------------------------------------*
*& Form AUTHORIZATION_OBJ_DER
*&---------------------------------------------------------------------*
FORM AUTHORIZATION_OBJ_DER .
IF NOT WA_AGR_1252_DEL-AGR_NAME IS INITIAL AND WA_DR_COUNT-COUNT <> 0.
SELECT AGR_NAME OBJECT AUTH ATEXT
FROM AGR_1250 INTO TABLE IT_AGR_1250
WHERE AGR_NAME = WA_AGR_1252_DEL-AGR_NAME
AND OBJECT NE 'S_TCODE'.
IF IT_AGR_1250 IS NOT INITIAL.
SELECT AGR_NAME OBJECT AUTH FIELD LOW HIGH
FROM AGR_1251
INTO TABLE IT_AGR_1251
FOR ALL ENTRIES IN IT_AGR_1250
WHERE AGR_NAME = IT_AGR_1250-AGR_NAME AND
OBJECT = IT_AGR_1250-OBJECT AND
AUTH = IT_AGR_1250-AUTH.
ENDIF.
SKIP.
WRITE :/2 'Authorization Objects' COLOR 3.
WRITE:/(175) SY-ULINE.
WRITE :/ SY-VLINE, 'Object',
25 SY-VLINE,26 'Description',
96 SY-VLINE,97 'Activity / Fields',
157 SY-VLINE,158 'Values',
175 SY-VLINE.
SORT IT_AGR_1251.
REFRESH IT_FINAL.
LOOP AT IT_AGR_1251 INTO WA_AGR_1251.
READ TABLE IT_AGR_1250 INTO WA_AGR_1250 WITH KEY AGR_NAME = WA_AGR_1251-AGR_NAME OBJECT = WA_AGR_1251-OBJECT.
SELECT SINGLE ROLLNAME FROM AUTHX INTO WA_AUTHX WHERE FIELDNAME = WA_AGR_1251-FIELD.
SELECT SINGLE ROLLNAME DDLANGUAGE DDTEXT FROM DD04T INTO WA_DD04T WHERE ROLLNAME = WA_AUTHX-ROLLNAME AND DDLANGUAGE = 'E'.
DATA: TEXT(80) TYPE C.
CONCATENATE WA_DD04T-DDTEXT '/' WA_AGR_1251-FIELD INTO TEXT SEPARATED BY SPACE.
DATA: VALUE(25) TYPE C.
IF WA_AGR_1251-HIGH IS INITIAL.
CONCATENATE WA_AGR_1251-LOW ' ' INTO VALUE SEPARATED BY SPACE.
ELSEIF WA_AGR_1251-HIGH IS NOT INITIAL.
CONCATENATE WA_AGR_1251-LOW ',' WA_AGR_1251-HIGH INTO VALUE SEPARATED BY SPACE.
ENDIF.
WA_FINAL-OBJECT = WA_AGR_1251-OBJECT.
WA_FINAL-ATEXT = WA_AGR_1250-ATEXT .
WA_FINAL-DDTEXT = WA_DD04T-DDTEXT.
WA_FINAL-DDTEXT_FIELD = TEXT.
WA_FINAL-VALUE = VALUE.
APPEND WA_FINAL TO IT_FINAL.
CLEAR : TEXT, VALUE.
CLEAR WA_FINAL.
CLEAR : WA_AGR_1251, WA_AGR_1250 ,WA_DD04T ,WA_AUTHX .
ENDLOOP.
SORT IT_FINAL.
DATA: FLAG TYPE I. "VALUE 1.
DATA: FLAG_Y TYPE I. "VALUE 1.
DATA: LINES TYPE I.
REFRESH IT_SFINAL.
LOOP AT IT_FINAL INTO WA_FINAL.
WA_SFINAL-OBJ_DISP = WA_FINAL-OBJECT.
WA_SFINAL-ATEXT_DISP = WA_FINAL-ATEXT.
WA_SFINAL-DDTEXT_DISP = WA_FINAL-DDTEXT_FIELD.
APPEND WA_SFINAL TO IT_SFINAL.
CLEAR WA_SFINAL.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM IT_SFINAL.
SORT IT_SFINAL.
LOOP AT IT_SFINAL INTO WA_SFINAL.
IF FLAG = 8.
FLAG = 1.
ENDIF.
LINES = 1.
LOOP AT IT_FINAL INTO WA_FINAL WHERE OBJECT = WA_SFINAL-OBJ_DISP AND DDTEXT_FIELD = WA_SFINAL-DDTEXT_DISP.
ON CHANGE OF WA_FINAL-OBJECT.
WA_FINAL-OBJ_DISP = WA_FINAL-OBJECT.
WA_FINAL-ATEXT_DISP = WA_FINAL-ATEXT.
WRITE:/(175) SY-ULINE.
ENDON.
IF LINES = 1.
READ TABLE IT_SFINAL INTO WA_SFINAL1 WITH KEY OBJ_DISP = WA_FINAL-OBJECT DDTEXT_DISP = WA_FINAL-DDTEXT_FIELD.
IF SY-SUBRC = 0.
WA_FINAL-DDTEXT_DISP = WA_SFINAL1-DDTEXT_DISP.
ENDIF.
ENDIF.
IF FLAG = 0.
FLAG_Y = 1.
FORMAT COLOR 1.
ELSEIF FLAG = 1.
FLAG_Y = 1.
FORMAT COLOR 2.
ELSEIF FLAG = 2.
FLAG_Y = 1.
FORMAT COLOR 3.
ELSEIF FLAG = 3.
FLAG_Y = 1.
FORMAT COLOR 4.
ELSEIF FLAG = 4.
FLAG_Y = 1.
FORMAT COLOR 5.
ELSEIF FLAG = 5.
FLAG_Y = 1.
FORMAT COLOR 6.
ELSEIF FLAG = 6.
FLAG_Y = 1.
FORMAT COLOR 7.
ENDIF.
IF FLAG_Y = 1.
WRITE : / SY-VLINE, WA_FINAL-OBJ_DISP ," COLOR 1,
25 SY-VLINE,26 WA_FINAL-ATEXT_DISP ," COLOR 2,
96 SY-VLINE,97 WA_FINAL-DDTEXT_DISP , " COLOR 3,
157 SY-VLINE,158 WA_FINAL-VALUE , "COLOR 4,
175 SY-VLINE.
ENDIF.
CLEAR WA_FINAL.
CLEAR LINES.
ENDLOOP.
FORMAT COLOR OFF.
FLAG = FLAG + 1.
ENDLOOP.
WRITE:/(175) SY-ULINE.
ENDIF.
ENDFORM. " AUTHORIZATION_OBJ_DER
HTH
Regards,
Dhruv Shah
2008 Mar 28 4:45 AM
2008 Mar 28 4:52 AM
Hi,
Use the below program and enter the role name in the selection screen...
Execute the program in different sessions and then compare it.
*&---------------------------------------------------------------------*
*& Report Z_MASTER_DERIVED
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_MASTER_DERIVED LINE-SIZE 175.
TABLES :AGR_1016.
TYPES: BEGIN OF TY_AGR_1016,
AGR_NAME TYPE AGR_1016-AGR_NAME,
COUNTER TYPE AGR_1016-COUNTER,
PROFILE TYPE AGR_1016-PROFILE,
VARIANT TYPE AGR_1016-VARIANT,
END OF TY_AGR_1016,
BEGIN OF TY_AGR_TEXTS,
AGR_NAME TYPE AGR_TEXTS-AGR_NAME,
SPRAS TYPE AGR_TEXTS-SPRAS,
TEXT TYPE AGR_TEXTS-TEXT,
END OF TY_AGR_TEXTS,
BEGIN OF TY_AGR_DEFINE,
AGR_NAME TYPE AGR_DEFINE-AGR_NAME,
PARENT_AGR TYPE AGR_DEFINE-PARENT_AGR,
END OF TY_AGR_DEFINE,
BEGIN OF TY_DR_COUNT,
AGR_NAME TYPE AGR_DEFINE-AGR_NAME,
COUNT TYPE I,
END OF TY_DR_COUNT,
BEGIN OF TY_AGR_TCODES,
AGR_NAME TYPE AGR_TCODES-AGR_NAME,
TCODE TYPE AGR_TCODES-TCODE,
TCODE_COMP TYPE TSTCT-TCODE,
END OF TY_AGR_TCODES,
BEGIN OF TY_TSTCT,
SPRSL TYPE TSTCT-SPRSL,
TCODE TYPE TSTCT-TCODE,
TTEXT TYPE TSTCT-TTEXT,
END OF TY_TSTCT,
BEGIN OF TY_AGR_1252,
AGR_NAME TYPE AGR_1252-AGR_NAME,
VARBL TYPE AGR_1252-VARBL,
LOW TYPE AGR_1252-LOW,
HIGH TYPE AGR_1252-HIGH,
DESC(30) TYPE C,
VARBL_DISP TYPE AGR_1252-VARBL,
AGR_NAME_DISP TYPE AGR_1252-AGR_NAME,
END OF TY_AGR_1252,
BEGIN OF TY_USVART,
LANGU TYPE USVART-LANGU, "LANGUAGE KEY
VARBL TYPE USVART-VARBL,
VTEXT TYPE USVART-VTEXT, "DESCRIPTION
END OF TY_USVART,
BEGIN OF TY_AGR_1250,
AGR_NAME TYPE AGR_1250-AGR_NAME,
OBJECT TYPE AGR_1250-OBJECT,
AUTH TYPE AGR_1250-AUTH,
ATEXT TYPE AGR_1250-ATEXT,
END OF TY_AGR_1250,
BEGIN OF TY_AGR_1251,
AGR_NAME TYPE AGR_1251-AGR_NAME,
OBJECT TYPE AGR_1251-OBJECT,
AUTH TYPE AGR_1251-AUTH,
FIELD TYPE AGR_1251-FIELD,
LOW TYPE AGR_1251-LOW,
HIGH TYPE AGR_1251-HIGH,
END OF TY_AGR_1251,
BEGIN OF TY_AUTHX,
ROLLNAME TYPE AUTHX-ROLLNAME,
END OF TY_AUTHX,
BEGIN OF TY_DD04T,
ROLLNAME TYPE DD04T-ROLLNAME,
DDLANGUAGE TYPE DD04T-DDLANGUAGE,
DDTEXT TYPE DD04T-DDTEXT,
END OF TY_DD04T,
BEGIN OF TY_SFINAL,
OBJ_DISP TYPE AGR_1250-OBJECT,
ATEXT_DISP TYPE AGR_1250-ATEXT,
DDTEXT_DISP(80) TYPE C,
END OF TY_SFINAL,
BEGIN OF TY_FINAL_DATA,
OBJECT TYPE AGR_1250-OBJECT,
ATEXT TYPE AGR_1250-ATEXT,
DDTEXT TYPE DD04T-DDTEXT,
DDTEXT_FIELD(60) TYPE C,
VALUE(30) TYPE C,
OBJ_DISP TYPE AGR_1250-OBJECT,
ATEXT_DISP TYPE AGR_1250-ATEXT,
DDTEXT_DISP(60) TYPE C,
END OF TY_FINAL_DATA.
DATA : IT_AGR_1016 TYPE STANDARD TABLE OF TY_AGR_1016,
WA_AGR_1016 TYPE TY_AGR_1016,
IT_AGR_TEXTS TYPE STANDARD TABLE OF TY_AGR_TEXTS,
WA_AGR_TEXTS TYPE TY_AGR_TEXTS,
IT_AGR_DEFINE TYPE STANDARD TABLE OF TY_AGR_DEFINE,
WA_AGR_DEFINE TYPE TY_AGR_DEFINE,
IT_DR_COUNT TYPE STANDARD TABLE OF TY_DR_COUNT,
WA_DR_COUNT TYPE TY_DR_COUNT,
COUNT TYPE I,
IT_AGR_TCODES TYPE STANDARD TABLE OF TY_AGR_TCODES,
WA_AGR_TCODES TYPE TY_AGR_TCODES,
IT_TSTCT TYPE STANDARD TABLE OF TY_TSTCT,
WA_TSTCT TYPE TY_TSTCT,
IT_AGR_1252 TYPE STANDARD TABLE OF TY_AGR_1252,
WA_AGR_1252 TYPE TY_AGR_1252,
IT_AGR_1252_DEL TYPE STANDARD TABLE OF TY_AGR_1252,
WA_AGR_1252_DEL TYPE TY_AGR_1252,
IT_USVART TYPE STANDARD TABLE OF TY_USVART,
WA_USVART TYPE TY_USVART,
IT_AGR_1250 TYPE STANDARD TABLE OF TY_AGR_1250,
WA_AGR_1250 TYPE TY_AGR_1250,
IT_AGR_1251 TYPE STANDARD TABLE OF TY_AGR_1251,
WA_AGR_1251 TYPE TY_AGR_1251,
IT_AUTHX TYPE STANDARD TABLE OF TY_AUTHX,
WA_AUTHX TYPE TY_AUTHX,
IT_DD04T TYPE STANDARD TABLE OF TY_DD04T,
WA_DD04T TYPE TY_DD04T,
IT_SFINAL TYPE STANDARD TABLE OF TY_SFINAL,
WA_SFINAL TYPE TY_SFINAL,
WA_SFINAL1 TYPE TY_SFINAL,
IT_FINAL TYPE STANDARD TABLE OF TY_FINAL_DATA,
WA_FINAL TYPE TY_FINAL_DATA,
IT_FINAL_DATA TYPE STANDARD TABLE OF TY_FINAL_DATA,
WA_FINAL_DATA TYPE TY_FINAL_DATA.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT_001.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(20) TEXT_010 MODIF ID M1 .
SELECT-OPTIONS : S_ROLE FOR AGR_1016-AGR_NAME NO INTERVALS MODIF ID M1 ."roles
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT_002.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: XTR AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 5(50) TEXT_011.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: XAU AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 5(50) TEXT_012.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: XDR AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 5(50) TEXT_013.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B2.
INITIALIZATION.
TEXT_001 = 'Report Specification'.
TEXT_002 = 'Output Specification'.
TEXT_010 = 'Roles'.
TEXT_011 = 'Transection Objects' .
TEXT_012 = 'Authorization Objects' .
TEXT_013 = 'Derived Objects' .
START-OF-SELECTION.
IF S_ROLE IS INITIAL.
MESSAGE 'Please fill required field' TYPE 'S'.
LEAVE LIST-PROCESSING.
CALL TRANSACTION 'ZROLE'.
ENDIF.
PERFORM ROLE_LIST.
AT LINE-SELECTION.
IF SY-LSIND = 1.
FREE : IT_AGR_1016 , IT_AGR_TEXTS ,IT_AGR_DEFINE , IT_DR_COUNT , IT_AGR_TCODES ,
IT_TSTCT , IT_AGR_1252 , IT_AGR_1252_DEL ,IT_USVART , IT_AGR_1250 ,
IT_AGR_1251 , IT_AUTHX , IT_DD04T , IT_FINAL_DATA,IT_SFINAL,IT_FINAL. " ADDED TO TABLE IT_SFINAL,IT_FINAL BY DHRUV
FORMAT COLOR 1.
WRITE :/ 'Role Name : ' , WA_AGR_1016-AGR_NAME .
FORMAT RESET.
SKIP.
IF XTR = 'X'.
PERFORM TCODE_LIST.
ENDIF.
IF XDR = 'X' AND WA_DR_COUNT-COUNT <> 0.
PERFORM DERIVED_ROLES.
ENDIF.
IF XDR = 'X' AND WA_DR_COUNT-COUNT = 0.
PERFORM ROLE_NAME.
ENDIF.
IF XAU = 'X'.
PERFORM AUTHORIZATION_OBJ.
ENDIF.
ELSEIF SY-LSIND = 2.
IF XDR = 'X' AND WA_DR_COUNT-COUNT <> 0.
FREE : IT_AGR_1016 , IT_AGR_TEXTS ,IT_AGR_DEFINE , IT_DR_COUNT , IT_AGR_TCODES ,
IT_TSTCT , IT_AGR_1252 , IT_AGR_1252_DEL ,IT_USVART , IT_AGR_1250 ,
IT_AGR_1251 , IT_AUTHX , IT_DD04T , IT_FINAL_DATA.
FORMAT COLOR 1 INTENSIFIED ON.
WRITE :/ 'Derived Role Name : ' , WA_AGR_1252_DEL-AGR_NAME .
FORMAT RESET.
SKIP.
PERFORM AUTHORIZATION_OBJ_DER.
ELSEIF XDR = 'X' AND WA_DR_COUNT-COUNT = 0.
FREE : IT_AGR_1016 , IT_AGR_TEXTS ,IT_AGR_DEFINE , IT_DR_COUNT , IT_AGR_TCODES ,
IT_TSTCT , IT_AGR_1252 , IT_AGR_1252_DEL ,IT_USVART , IT_AGR_1250 ,
IT_AGR_1251 , IT_AUTHX , IT_DD04T , IT_FINAL_DATA .
MESSAGE 'No Further Detail Information ' TYPE 'S'.
ENDIF.
ENDIF.
*&---------------------------------------------------------------------*
*& Form role_list
*&---------------------------------------------------------------------*
FORM ROLE_LIST .
SELECT DISTINCT AGR_NAME COUNTER PROFILE VARIANT
FROM AGR_1016
INTO TABLE IT_AGR_1016
WHERE AGR_NAME IN S_ROLE.
DELETE ADJACENT DUPLICATES FROM IT_AGR_1016 COMPARING AGR_NAME.
IF IT_AGR_1016 IS NOT INITIAL.
SELECT AGR_NAME SPRAS TEXT FROM AGR_TEXTS
INTO TABLE IT_AGR_TEXTS
FOR ALL ENTRIES IN IT_AGR_1016
WHERE AGR_NAME = IT_AGR_1016-AGR_NAME
AND SPRAS = 'E'.
DELETE ADJACENT DUPLICATES FROM IT_AGR_TEXTS COMPARING AGR_NAME.
WRITE: / 'Roles List :' COLOR 3 INTENSIFIED OFF.
SKIP.
WRITE:/(110) SY-ULINE.
WRITE:/ SY-VLINE ,'SR No',
9 SY-VLINE,10 ' Role Name',
39 SY-VLINE,40 ' Description',
99 SY-VLINE,100 ' DR Count',
110 SY-VLINE.
WRITE:/(110) SY-ULINE.
DATA: CNT TYPE I VALUE 1.
LOOP AT IT_AGR_1016 INTO WA_AGR_1016.
SELECT COUNT(*) FROM AGR_DEFINE
INTO COUNT
WHERE PARENT_AGR = WA_AGR_1016-AGR_NAME.
IF SY-SUBRC = 0 .
WA_DR_COUNT-AGR_NAME = WA_AGR_1016-AGR_NAME.
WA_DR_COUNT-COUNT = COUNT.
ELSE.
WA_DR_COUNT-AGR_NAME = WA_AGR_1016-AGR_NAME.
WA_DR_COUNT-COUNT = 0.
ENDIF.
APPEND WA_DR_COUNT TO IT_DR_COUNT.
CLEAR WA_DR_COUNT.
READ TABLE IT_AGR_TEXTS INTO WA_AGR_TEXTS
WITH KEY AGR_NAME = WA_AGR_1016-AGR_NAME.
READ TABLE IT_DR_COUNT INTO WA_DR_COUNT
WITH KEY AGR_NAME = WA_AGR_1016-AGR_NAME.
WRITE:/ SY-VLINE,4(5) CNT,
9 SY-VLINE,10 WA_AGR_1016-AGR_NAME HOTSPOT ON,
39 SY-VLINE,40 WA_AGR_TEXTS-TEXT HOTSPOT ON,
99 SY-VLINE, 100 WA_DR_COUNT-COUNT HOTSPOT ON ,
110 SY-VLINE.
HIDE: WA_AGR_1016-AGR_NAME,WA_DR_COUNT-COUNT.
CNT = CNT + 1.
WRITE:/(110) SY-ULINE.
CLEAR : WA_DR_COUNT , WA_AGR_TEXTS.
ENDLOOP.
ENDIF.
ENDFORM. " role_list
*&---------------------------------------------------------------------*
*& Form TCODE_LIST
*&---------------------------------------------------------------------*
FORM TCODE_LIST .
IF WA_AGR_1016-AGR_NAME IS NOT INITIAL.
SELECT AGR_NAME TCODE FROM AGR_TCODES
INTO TABLE IT_AGR_TCODES
WHERE AGR_NAME = WA_AGR_1016-AGR_NAME.
IF IT_AGR_TCODES IS NOT INITIAL.
LOOP AT IT_AGR_TCODES INTO WA_AGR_TCODES.
WA_AGR_TCODES-TCODE_COMP = WA_AGR_TCODES-TCODE.
MODIFY IT_AGR_TCODES FROM WA_AGR_TCODES TRANSPORTING TCODE_COMP.
ENDLOOP.
SELECT SPRSL TCODE TTEXT FROM TSTCT
INTO TABLE IT_TSTCT
FOR ALL ENTRIES IN IT_AGR_TCODES
WHERE TCODE = IT_AGR_TCODES-TCODE_COMP AND SPRSL = 'E'.
ENDIF.
DATA: A1 TYPE I.
A1 = 1.
WRITE:/2 'Transactions List : ' COLOR 3.
WRITE:/(100) SY-ULINE.
WRITE:/ SY-VLINE,'Sr.No',10 SY-VLINE,'Transaction Codes',
30 SY-VLINE,'Description',100 SY-VLINE.
WRITE:/(100) SY-ULINE.
LOOP AT IT_AGR_TCODES INTO WA_AGR_TCODES.
READ TABLE IT_TSTCT INTO WA_TSTCT WITH KEY TCODE = WA_AGR_TCODES-TCODE.
WRITE :/ SY-VLINE,4(4) A1 ,
10 SY-VLINE,13 WA_AGR_TCODES-TCODE ,
30 SY-VLINE,WA_TSTCT-TTEXT ,
100 SY-VLINE.
A1 = A1 + 1.
ENDLOOP.
FORMAT RESET.
WRITE:/(100) SY-ULINE.
CLEAR : WA_AGR_TCODES , WA_TSTCT-TTEXT.
ENDIF.
ENDFORM. " TCODE_LIST
*&---------------------------------------------------------------------*
*& Form authorization_OBJ
*&---------------------------------------------------------------------*
FORM AUTHORIZATION_OBJ .
IF WA_AGR_1016-AGR_NAME IS NOT INITIAL.
SELECT AGR_NAME OBJECT AUTH ATEXT
FROM AGR_1250 INTO TABLE IT_AGR_1250
WHERE AGR_NAME = WA_AGR_1016-AGR_NAME
AND OBJECT NE 'S_TCODE'.
IF IT_AGR_1250 IS NOT INITIAL.
SELECT AGR_NAME OBJECT AUTH FIELD LOW HIGH
FROM AGR_1251
INTO TABLE IT_AGR_1251
FOR ALL ENTRIES IN IT_AGR_1250
WHERE AGR_NAME = IT_AGR_1250-AGR_NAME AND
OBJECT = IT_AGR_1250-OBJECT AND
AUTH = IT_AGR_1250-AUTH.
ENDIF.
SKIP.
WRITE :/2 'Authorization Objects' COLOR 3.
WRITE:/(175) SY-ULINE.
WRITE :/ SY-VLINE, 'Object',
25 SY-VLINE,26 'Description',
96 SY-VLINE,97 'Activity / Fields',
157 SY-VLINE,158 'Values',
175 SY-VLINE.
SORT IT_AGR_1251.
LOOP AT IT_AGR_1251 INTO WA_AGR_1251.
READ TABLE IT_AGR_1250 INTO WA_AGR_1250 WITH KEY AGR_NAME = WA_AGR_1251-AGR_NAME OBJECT = WA_AGR_1251-OBJECT.
SELECT SINGLE ROLLNAME FROM AUTHX INTO WA_AUTHX WHERE FIELDNAME = WA_AGR_1251-FIELD.
SELECT SINGLE ROLLNAME DDLANGUAGE DDTEXT FROM DD04T INTO WA_DD04T WHERE ROLLNAME = WA_AUTHX-ROLLNAME AND DDLANGUAGE = 'E'.
DATA: TEXT(80) TYPE C.
CONCATENATE WA_DD04T-DDTEXT '/' WA_AGR_1251-FIELD INTO TEXT SEPARATED BY SPACE.
DATA: VALUE(25) TYPE C.
IF WA_AGR_1251-HIGH IS INITIAL.
CONCATENATE WA_AGR_1251-LOW ' ' INTO VALUE SEPARATED BY SPACE.
ELSEIF WA_AGR_1251-HIGH IS NOT INITIAL.
CONCATENATE WA_AGR_1251-LOW ',' WA_AGR_1251-HIGH INTO VALUE SEPARATED BY SPACE.
ENDIF.
WA_FINAL-OBJECT = WA_AGR_1251-OBJECT.
WA_FINAL-ATEXT = WA_AGR_1250-ATEXT .
WA_FINAL-DDTEXT = WA_DD04T-DDTEXT.
WA_FINAL-DDTEXT_FIELD = TEXT.
WA_FINAL-VALUE = VALUE.
APPEND WA_FINAL TO IT_FINAL.
CLEAR : TEXT, VALUE.
CLEAR WA_FINAL.
CLEAR : WA_AGR_1251, WA_AGR_1250 ,WA_DD04T ,WA_AUTHX,WA_AGR_1016 . "ADDED WA_AGR_1016 BY DHRUV
ENDLOOP.
SORT IT_FINAL.
DATA: FLAG TYPE I. "VALUE 1.
DATA: FLAG_Y TYPE I. "VALUE 1.
DATA: LINES TYPE I.
LOOP AT IT_FINAL INTO WA_FINAL.
WA_SFINAL-OBJ_DISP = WA_FINAL-OBJECT.
WA_SFINAL-ATEXT_DISP = WA_FINAL-ATEXT.
WA_SFINAL-DDTEXT_DISP = WA_FINAL-DDTEXT_FIELD.
APPEND WA_SFINAL TO IT_SFINAL.
CLEAR WA_SFINAL.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM IT_SFINAL.
SORT IT_SFINAL.
LOOP AT IT_SFINAL INTO WA_SFINAL.
IF FLAG = 8.
FLAG = 1.
ENDIF.
LINES = 1.
LOOP AT IT_FINAL INTO WA_FINAL WHERE OBJECT = WA_SFINAL-OBJ_DISP AND DDTEXT_FIELD = WA_SFINAL-DDTEXT_DISP.
ON CHANGE OF WA_FINAL-OBJECT.
WA_FINAL-OBJ_DISP = WA_FINAL-OBJECT.
WA_FINAL-ATEXT_DISP = WA_FINAL-ATEXT.
WRITE:/(175) SY-ULINE.
ENDON.
IF LINES = 1.
READ TABLE IT_SFINAL INTO WA_SFINAL1 WITH KEY OBJ_DISP = WA_FINAL-OBJECT DDTEXT_DISP = WA_FINAL-DDTEXT_FIELD.
IF SY-SUBRC = 0.
WA_FINAL-DDTEXT_DISP = WA_SFINAL1-DDTEXT_DISP.
ENDIF.
ENDIF.
IF FLAG = 0.
FLAG_Y = 1.
FORMAT COLOR 1.
ELSEIF FLAG = 1.
FLAG_Y = 1.
FORMAT COLOR 2.
ELSEIF FLAG = 2.
FLAG_Y = 1.
FORMAT COLOR 3.
ELSEIF FLAG = 3.
FLAG_Y = 1.
FORMAT COLOR 4.
ELSEIF FLAG = 4.
FLAG_Y = 1.
FORMAT COLOR 5.
ELSEIF FLAG = 5.
FLAG_Y = 1.
FORMAT COLOR 6.
ELSEIF FLAG = 6.
FLAG_Y = 1.
FORMAT COLOR 7.
ENDIF.
IF FLAG_Y = 1.
WRITE : / SY-VLINE, WA_FINAL-OBJ_DISP ," COLOR 1,
25 SY-VLINE,26 WA_FINAL-ATEXT_DISP ," COLOR 2,
96 SY-VLINE,97 WA_FINAL-DDTEXT_DISP , " COLOR 3,
157 SY-VLINE,158 WA_FINAL-VALUE , "COLOR 4,
175 SY-VLINE.
ENDIF.
CLEAR WA_FINAL.
CLEAR LINES.
ENDLOOP.
FORMAT COLOR OFF.
FLAG = FLAG + 1.
ENDLOOP.
WRITE:/(175) SY-ULINE.
ENDIF.
ENDFORM. " authorization_OBJ
*&---------------------------------------------------------------------*
*& Form DERIVED_ROLES
*&---------------------------------------------------------------------*
FORM DERIVED_ROLES .
IF NOT WA_AGR_1016-AGR_NAME IS INITIAL AND WA_DR_COUNT-COUNT <> 0.
SELECT AGR_NAME PARENT_AGR FROM AGR_DEFINE
INTO TABLE IT_AGR_DEFINE
WHERE PARENT_AGR = WA_AGR_1016-AGR_NAME.
WRITE:/2 'Derived Roles : ' COLOR 3.
IF IT_AGR_DEFINE IS NOT INITIAL.
SELECT AGR_NAME VARBL LOW HIGH FROM AGR_1252
INTO TABLE IT_AGR_1252
FOR ALL ENTRIES IN IT_AGR_DEFINE
WHERE AGR_NAME = IT_AGR_DEFINE-AGR_NAME.
IT_AGR_1252_DEL[] = IT_AGR_1252[].
SORT IT_AGR_1252_DEL BY AGR_NAME VARBL LOW HIGH.
DELETE ADJACENT DUPLICATES FROM IT_AGR_1252_DEL COMPARING ALL FIELDS.
ENDIF.
SELECT LANGU VARBL VTEXT FROM USVART
INTO TABLE IT_USVART
FOR ALL ENTRIES IN IT_AGR_1252_DEL
WHERE VARBL = IT_AGR_1252_DEL-VARBL AND LANGU = 'E'.
WRITE:/(81) SY-ULINE.
WRITE : / SY-VLINE , 'Derived Role Name' ,
34 SY-VLINE ,35 'Org. element' ,
44 SY-VLINE , 45 'Description',
69 SY-VLINE , 70 'Low',
75 SY-VLINE , 76 'High',
81 SY-VLINE.
SORT IT_AGR_1252_DEL BY AGR_NAME VARBL LOW HIGH.
DATA : FLAG TYPE I.
LOOP AT IT_AGR_1252_DEL INTO WA_AGR_1252_DEL.
ON CHANGE OF WA_AGR_1252_DEL-VARBL.
WA_AGR_1252_DEL-VARBL_DISP = WA_AGR_1252_DEL-VARBL.
READ TABLE IT_USVART INTO WA_USVART WITH KEY VARBL = WA_AGR_1252_DEL-VARBL.
IF SY-SUBRC = 0.
WA_AGR_1252_DEL-DESC = WA_USVART-VTEXT.
ENDIF.
MODIFY IT_AGR_1252_DEL FROM WA_AGR_1252_DEL TRANSPORTING VARBL_DISP DESC.
FLAG = 1.
ENDON.
ON CHANGE OF WA_AGR_1252_DEL-AGR_NAME.
WRITE:/(81) SY-ULINE.
WA_AGR_1252_DEL-AGR_NAME_DISP = WA_AGR_1252_DEL-AGR_NAME.
MODIFY IT_AGR_1252_DEL FROM WA_AGR_1252_DEL TRANSPORTING AGR_NAME_DISP .
ENDON.
WRITE : / SY-VLINE , WA_AGR_1252_DEL-AGR_NAME_DISP HOTSPOT ON,
34 SY-VLINE ,35 WA_AGR_1252_DEL-VARBL_DISP HOTSPOT ON,
44 SY-VLINE , 45 WA_AGR_1252_DEL-DESC HOTSPOT ON,
69 SY-VLINE , 70 WA_AGR_1252_DEL-LOW HOTSPOT ON,
75 SY-VLINE , 76 WA_AGR_1252_DEL-HIGH HOTSPOT ON,
81 SY-VLINE.
HIDE WA_AGR_1252_DEL-AGR_NAME.
ENDLOOP.
WRITE:/(81) SY-ULINE.
ENDIF.
ENDFORM. "DERIVED_ROLES
*&---------------------------------------------------------------------*
*& Form ROLE_NAME
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM ROLE_NAME.
SELECT AGR_NAME PARENT_AGR FROM AGR_DEFINE
INTO TABLE IT_AGR_DEFINE
WHERE AGR_NAME = WA_AGR_1016-AGR_NAME.
WRITE:/2 'Roles : ' COLOR 3.
IF IT_AGR_DEFINE IS NOT INITIAL.
SELECT AGR_NAME VARBL LOW HIGH FROM AGR_1252
INTO TABLE IT_AGR_1252
FOR ALL ENTRIES IN IT_AGR_DEFINE
WHERE AGR_NAME = IT_AGR_DEFINE-AGR_NAME.
IT_AGR_1252_DEL[] = IT_AGR_1252[].
SORT IT_AGR_1252_DEL BY AGR_NAME VARBL LOW HIGH.
DELETE ADJACENT DUPLICATES FROM IT_AGR_1252_DEL COMPARING ALL FIELDS.
ENDIF.
SELECT LANGU VARBL VTEXT FROM USVART
INTO TABLE IT_USVART
FOR ALL ENTRIES IN IT_AGR_1252_DEL
WHERE VARBL = IT_AGR_1252_DEL-VARBL AND LANGU = 'E'.
WRITE:/(81) SY-ULINE.
WRITE : / SY-VLINE , 'Role Name' ,
34 SY-VLINE ,35 'Org. element' ,
44 SY-VLINE , 45 'Description',
69 SY-VLINE , 70 'Low',
75 SY-VLINE , 76 'High',
81 SY-VLINE.
SORT IT_AGR_1252_DEL BY AGR_NAME VARBL LOW HIGH.
DATA : FLAG_Y TYPE I.
LOOP AT IT_AGR_1252_DEL INTO WA_AGR_1252_DEL.
ON CHANGE OF WA_AGR_1252_DEL-VARBL.
WA_AGR_1252_DEL-VARBL_DISP = WA_AGR_1252_DEL-VARBL.
READ TABLE IT_USVART INTO WA_USVART WITH KEY VARBL = WA_AGR_1252_DEL-VARBL.
IF SY-SUBRC = 0.
WA_AGR_1252_DEL-DESC = WA_USVART-VTEXT.
ENDIF.
MODIFY IT_AGR_1252_DEL FROM WA_AGR_1252_DEL TRANSPORTING VARBL_DISP DESC.
FLAG_Y = 1.
ENDON.
ON CHANGE OF WA_AGR_1252_DEL-AGR_NAME.
WRITE:/(81) SY-ULINE.
WA_AGR_1252_DEL-AGR_NAME_DISP = WA_AGR_1252_DEL-AGR_NAME.
MODIFY IT_AGR_1252_DEL FROM WA_AGR_1252_DEL TRANSPORTING AGR_NAME_DISP .
ENDON.
WRITE : / SY-VLINE , WA_AGR_1252_DEL-AGR_NAME_DISP ,
34 SY-VLINE ,35 WA_AGR_1252_DEL-VARBL_DISP ,
44 SY-VLINE , 45 WA_AGR_1252_DEL-DESC,
69 SY-VLINE , 70 WA_AGR_1252_DEL-LOW ,
75 SY-VLINE , 76 WA_AGR_1252_DEL-HIGH,
81 SY-VLINE.
ENDLOOP.
WRITE:/(81) SY-ULINE.
ENDFORM. " DERIVED_ROLES
*&---------------------------------------------------------------------*
*& Form AUTHORIZATION_OBJ_DER
*&---------------------------------------------------------------------*
FORM AUTHORIZATION_OBJ_DER .
IF NOT WA_AGR_1252_DEL-AGR_NAME IS INITIAL AND WA_DR_COUNT-COUNT <> 0.
SELECT AGR_NAME OBJECT AUTH ATEXT
FROM AGR_1250 INTO TABLE IT_AGR_1250
WHERE AGR_NAME = WA_AGR_1252_DEL-AGR_NAME
AND OBJECT NE 'S_TCODE'.
IF IT_AGR_1250 IS NOT INITIAL.
SELECT AGR_NAME OBJECT AUTH FIELD LOW HIGH
FROM AGR_1251
INTO TABLE IT_AGR_1251
FOR ALL ENTRIES IN IT_AGR_1250
WHERE AGR_NAME = IT_AGR_1250-AGR_NAME AND
OBJECT = IT_AGR_1250-OBJECT AND
AUTH = IT_AGR_1250-AUTH.
ENDIF.
SKIP.
WRITE :/2 'Authorization Objects' COLOR 3.
WRITE:/(175) SY-ULINE.
WRITE :/ SY-VLINE, 'Object',
25 SY-VLINE,26 'Description',
96 SY-VLINE,97 'Activity / Fields',
157 SY-VLINE,158 'Values',
175 SY-VLINE.
SORT IT_AGR_1251.
REFRESH IT_FINAL.
LOOP AT IT_AGR_1251 INTO WA_AGR_1251.
READ TABLE IT_AGR_1250 INTO WA_AGR_1250 WITH KEY AGR_NAME = WA_AGR_1251-AGR_NAME OBJECT = WA_AGR_1251-OBJECT.
SELECT SINGLE ROLLNAME FROM AUTHX INTO WA_AUTHX WHERE FIELDNAME = WA_AGR_1251-FIELD.
SELECT SINGLE ROLLNAME DDLANGUAGE DDTEXT FROM DD04T INTO WA_DD04T WHERE ROLLNAME = WA_AUTHX-ROLLNAME AND DDLANGUAGE = 'E'.
DATA: TEXT(80) TYPE C.
CONCATENATE WA_DD04T-DDTEXT '/' WA_AGR_1251-FIELD INTO TEXT SEPARATED BY SPACE.
DATA: VALUE(25) TYPE C.
IF WA_AGR_1251-HIGH IS INITIAL.
CONCATENATE WA_AGR_1251-LOW ' ' INTO VALUE SEPARATED BY SPACE.
ELSEIF WA_AGR_1251-HIGH IS NOT INITIAL.
CONCATENATE WA_AGR_1251-LOW ',' WA_AGR_1251-HIGH INTO VALUE SEPARATED BY SPACE.
ENDIF.
WA_FINAL-OBJECT = WA_AGR_1251-OBJECT.
WA_FINAL-ATEXT = WA_AGR_1250-ATEXT .
WA_FINAL-DDTEXT = WA_DD04T-DDTEXT.
WA_FINAL-DDTEXT_FIELD = TEXT.
WA_FINAL-VALUE = VALUE.
APPEND WA_FINAL TO IT_FINAL.
CLEAR : TEXT, VALUE.
CLEAR WA_FINAL.
CLEAR : WA_AGR_1251, WA_AGR_1250 ,WA_DD04T ,WA_AUTHX .
ENDLOOP.
SORT IT_FINAL.
DATA: FLAG TYPE I. "VALUE 1.
DATA: FLAG_Y TYPE I. "VALUE 1.
DATA: LINES TYPE I.
REFRESH IT_SFINAL.
LOOP AT IT_FINAL INTO WA_FINAL.
WA_SFINAL-OBJ_DISP = WA_FINAL-OBJECT.
WA_SFINAL-ATEXT_DISP = WA_FINAL-ATEXT.
WA_SFINAL-DDTEXT_DISP = WA_FINAL-DDTEXT_FIELD.
APPEND WA_SFINAL TO IT_SFINAL.
CLEAR WA_SFINAL.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM IT_SFINAL.
SORT IT_SFINAL.
LOOP AT IT_SFINAL INTO WA_SFINAL.
IF FLAG = 8.
FLAG = 1.
ENDIF.
LINES = 1.
LOOP AT IT_FINAL INTO WA_FINAL WHERE OBJECT = WA_SFINAL-OBJ_DISP AND DDTEXT_FIELD = WA_SFINAL-DDTEXT_DISP.
ON CHANGE OF WA_FINAL-OBJECT.
WA_FINAL-OBJ_DISP = WA_FINAL-OBJECT.
WA_FINAL-ATEXT_DISP = WA_FINAL-ATEXT.
WRITE:/(175) SY-ULINE.
ENDON.
IF LINES = 1.
READ TABLE IT_SFINAL INTO WA_SFINAL1 WITH KEY OBJ_DISP = WA_FINAL-OBJECT DDTEXT_DISP = WA_FINAL-DDTEXT_FIELD.
IF SY-SUBRC = 0.
WA_FINAL-DDTEXT_DISP = WA_SFINAL1-DDTEXT_DISP.
ENDIF.
ENDIF.
IF FLAG = 0.
FLAG_Y = 1.
FORMAT COLOR 1.
ELSEIF FLAG = 1.
FLAG_Y = 1.
FORMAT COLOR 2.
ELSEIF FLAG = 2.
FLAG_Y = 1.
FORMAT COLOR 3.
ELSEIF FLAG = 3.
FLAG_Y = 1.
FORMAT COLOR 4.
ELSEIF FLAG = 4.
FLAG_Y = 1.
FORMAT COLOR 5.
ELSEIF FLAG = 5.
FLAG_Y = 1.
FORMAT COLOR 6.
ELSEIF FLAG = 6.
FLAG_Y = 1.
FORMAT COLOR 7.
ENDIF.
IF FLAG_Y = 1.
WRITE : / SY-VLINE, WA_FINAL-OBJ_DISP ," COLOR 1,
25 SY-VLINE,26 WA_FINAL-ATEXT_DISP ," COLOR 2,
96 SY-VLINE,97 WA_FINAL-DDTEXT_DISP , " COLOR 3,
157 SY-VLINE,158 WA_FINAL-VALUE , "COLOR 4,
175 SY-VLINE.
ENDIF.
CLEAR WA_FINAL.
CLEAR LINES.
ENDLOOP.
FORMAT COLOR OFF.
FLAG = FLAG + 1.
ENDLOOP.
WRITE:/(175) SY-ULINE.
ENDIF.
ENDFORM. " AUTHORIZATION_OBJ_DER
HTH
Regards,
Dhruv Shah
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |