<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Roles comparing helps in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/roles-comparing-helps/m-p/3611235#M869962</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi guys&amp;amp;#65292; &lt;/P&gt;&lt;P&gt;could somebody tell me how to compare 2 roles? &lt;/P&gt;&lt;P&gt;I want to check authorization difference between 2 roles. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks, &lt;/P&gt;&lt;P&gt;James&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 28 Mar 2008 04:10:49 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2008-03-28T04:10:49Z</dc:date>
    <item>
      <title>Roles comparing helps</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/roles-comparing-helps/m-p/3611235#M869962</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi guys&amp;amp;#65292; &lt;/P&gt;&lt;P&gt;could somebody tell me how to compare 2 roles? &lt;/P&gt;&lt;P&gt;I want to check authorization difference between 2 roles. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks, &lt;/P&gt;&lt;P&gt;James&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 28 Mar 2008 04:10:49 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/roles-comparing-helps/m-p/3611235#M869962</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-03-28T04:10:49Z</dc:date>
    </item>
    <item>
      <title>Re: Roles comparing helps</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/roles-comparing-helps/m-p/3611236#M869963</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, all guys.&lt;/P&gt;&lt;P&gt;Please do some any usefull suggestion.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 28 Mar 2008 04:45:04 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/roles-comparing-helps/m-p/3611236#M869963</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-03-28T04:45:04Z</dc:date>
    </item>
    <item>
      <title>Re: Roles comparing helps</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/roles-comparing-helps/m-p/3611237#M869964</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Use the below program and enter the role name in the selection screen...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Execute the program in different sessions and then compare it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Report  Z_MASTER_DERIVED
*&amp;amp;
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;
*&amp;amp;
*&amp;amp;---------------------------------------------------------------------*

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 &amp;lt;&amp;gt; 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 &amp;lt;&amp;gt; 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.
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  role_list
*&amp;amp;---------------------------------------------------------------------*

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

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  TCODE_LIST
*&amp;amp;---------------------------------------------------------------------*
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

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  authorization_OBJ
*&amp;amp;---------------------------------------------------------------------*

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

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  DERIVED_ROLES
*&amp;amp;---------------------------------------------------------------------*

FORM DERIVED_ROLES .

  IF NOT WA_AGR_1016-AGR_NAME IS INITIAL AND  WA_DR_COUNT-COUNT &amp;lt;&amp;gt; 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

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  ROLE_NAME
*&amp;amp;---------------------------------------------------------------------*
*       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
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  AUTHORIZATION_OBJ_DER
*&amp;amp;---------------------------------------------------------------------*

FORM AUTHORIZATION_OBJ_DER .

  IF NOT WA_AGR_1252_DEL-AGR_NAME IS INITIAL AND WA_DR_COUNT-COUNT &amp;lt;&amp;gt; 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

&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;HTH&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Dhruv Shah&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 28 Mar 2008 04:52:53 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/roles-comparing-helps/m-p/3611237#M869964</guid>
      <dc:creator>dhruv_shah3</dc:creator>
      <dc:date>2008-03-28T04:52:53Z</dc:date>
    </item>
  </channel>
</rss>

