REPORT ZZAUT004 MESSAGE-ID 01. *----------------------------------------------------------------------* * Topic: Utillity for Maintenance Single profiles. * * * * Description: Enhanced maintenance function for maintenance the pro- * * files (single). With this program you enter the profile * * name profile text and up to x objects and authorization * * * * Implementing The program is client independent. * * * * Authoriza. Standard authorization checks as in the normal editor. * * * * Submitting: Run by SA38, SE38. * * * * Parametre: Object, Authorizations. * * * * Output: Files on the desktop or presentation server: * * * * Customizing: No need for customization. * * * * Change of You only need to do the syntax check at releasechange. * * release: * * * * R/3 Release: Developed and tested in R/3 Release: * * 3.0F * * * * Programmer: Benny G. Sørensen, * * Date: May 1997. * * * *------------------------------ Questions -----------------------------* * Version 2 *-------------------------------Corrections----------------------------* * Date Userid Correction Text * * ::.::.:::: :::::::: :::::::::::::: ::::::::::::::::::::::::::::: * *----------------------------------------------------------------------* TABLES: SSCRFIELDS. *----------------------------------------------------------------------* SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001. PARAMETERS: P_PROF LIKE USR10-PROFN ,P_TEXT LIKE USR11-PTEXT. SELECTION-SCREEN END OF BLOCK BLK1. SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-002. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(31) TEXT-000 . PARAMETERS: P_OBJCT0 LIKE TOBJ-OBJCT. SELECTION-SCREEN COMMENT (3) TEXT-003 . PARAMETERS: P_AUTH0 LIKE USR12-AUTH. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(31) TEXT-000 . PARAMETERS: P_OBJCT1 LIKE TOBJ-OBJCT. SELECTION-SCREEN COMMENT (3) TEXT-003 . PARAMETERS: P_AUTH1 LIKE USR12-AUTH. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(31) TEXT-000 . PARAMETERS: P_OBJCT2 LIKE TOBJ-OBJCT. SELECTION-SCREEN COMMENT (3) TEXT-003 . PARAMETERS: P_AUTH2 LIKE USR12-AUTH. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(31) TEXT-000 . PARAMETERS: P_OBJCT3 LIKE TOBJ-OBJCT. SELECTION-SCREEN COMMENT (3) TEXT-003 . PARAMETERS: P_AUTH3 LIKE USR12-AUTH. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(31) TEXT-000 . PARAMETERS: P_OBJCT4 LIKE TOBJ-OBJCT. SELECTION-SCREEN COMMENT (3) TEXT-003 . PARAMETERS: P_AUTH4 LIKE USR12-AUTH. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(31) TEXT-000 . PARAMETERS: P_OBJCT5 LIKE TOBJ-OBJCT. SELECTION-SCREEN COMMENT (3) TEXT-003 . PARAMETERS: P_AUTH5 LIKE USR12-AUTH. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(31) TEXT-000 . PARAMETERS: P_OBJCT6 LIKE TOBJ-OBJCT. SELECTION-SCREEN COMMENT (3) TEXT-003 . PARAMETERS: P_AUTH6 LIKE USR12-AUTH. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(31) TEXT-000 . PARAMETERS: P_OBJCT7 LIKE TOBJ-OBJCT. SELECTION-SCREEN COMMENT (3) TEXT-003 . PARAMETERS: P_AUTH7 LIKE USR12-AUTH. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(31) TEXT-000 . PARAMETERS: P_OBJCT8 LIKE TOBJ-OBJCT. SELECTION-SCREEN COMMENT (3) TEXT-003 . PARAMETERS: P_AUTH8 LIKE USR12-AUTH. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(31) TEXT-000 . PARAMETERS: P_OBJCT9 LIKE TOBJ-OBJCT. SELECTION-SCREEN COMMENT (3) TEXT-003 . PARAMETERS: P_AUTH9 LIKE USR12-AUTH. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(31) TEXT-000 . PARAMETERS: P_OBJC10 LIKE TOBJ-OBJCT. SELECTION-SCREEN COMMENT (3) TEXT-003 . PARAMETERS: P_AUT10 LIKE USR12-AUTH. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(31) TEXT-000 . PARAMETERS: P_OBJC11 LIKE TOBJ-OBJCT. SELECTION-SCREEN COMMENT (3) TEXT-003 . PARAMETERS: P_AUT11 LIKE USR12-AUTH. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(31) TEXT-000 . PARAMETERS: P_OBJC12 LIKE TOBJ-OBJCT. SELECTION-SCREEN COMMENT (3) TEXT-003 . PARAMETERS: P_AUT12 LIKE USR12-AUTH. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(31) TEXT-000 . PARAMETERS: P_OBJC13 LIKE TOBJ-OBJCT. SELECTION-SCREEN COMMENT (3) TEXT-003 . PARAMETERS: P_AUT13 LIKE USR12-AUTH. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(31) TEXT-000 . PARAMETERS: P_OBJC14 LIKE TOBJ-OBJCT. SELECTION-SCREEN COMMENT (3) TEXT-003 . PARAMETERS: P_AUT14 LIKE USR12-AUTH. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(31) TEXT-000 . PARAMETERS: P_OBJC15 LIKE TOBJ-OBJCT. SELECTION-SCREEN COMMENT (3) TEXT-003 . PARAMETERS: P_AUT15 LIKE USR12-AUTH. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(31) TEXT-000 . PARAMETERS: P_OBJC16 LIKE TOBJ-OBJCT. SELECTION-SCREEN COMMENT (3) TEXT-003 . PARAMETERS: P_AUT16 LIKE USR12-AUTH. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(31) TEXT-000 . PARAMETERS: P_OBJC17 LIKE TOBJ-OBJCT. SELECTION-SCREEN COMMENT (3) TEXT-003 . PARAMETERS: P_AUT17 LIKE USR12-AUTH. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(31) TEXT-000 . PARAMETERS: P_OBJC18 LIKE TOBJ-OBJCT. SELECTION-SCREEN COMMENT (3) TEXT-003 . PARAMETERS: P_AUT18 LIKE USR12-AUTH. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(31) TEXT-000 . PARAMETERS: P_OBJC19 LIKE TOBJ-OBJCT. SELECTION-SCREEN COMMENT (3) TEXT-003 . PARAMETERS: P_AUT19 LIKE USR12-AUTH. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN END OF BLOCK BLK2. SELECTION-SCREEN FUNCTION KEY 1. "Insert INCLUDE MS01CTP2. INCLUDE MS01CTCO. *----------------------------------------------------------------------* * EVENT: Initialization *----------------------------------------------------------------------* INITIALIZATION. SSCRFIELDS-FUNCTXT_01 = TEXT-023. "Insert *----------------------------------------------------------------------* * EVENT: validate users entries on the selection screen * *----------------------------------------------------------------------* AT SELECTION-SCREEN. IF SSCRFIELDS-UCOMM = 'FC01'. PERFORM NEW_PROFILE. ENDIF. *---------------------------------------------------------------------* * FORM ADD_TABPRO * *---------------------------------------------------------------------* FORM NEW_PROFILE. CLEAR TABPRO. REFRESH TABPRO. PERFORM ADD_TABPRO USING P_OBJCT0 P_AUTH0. PERFORM ADD_TABPRO USING P_OBJCT1 P_AUTH1. PERFORM ADD_TABPRO USING P_OBJCT2 P_AUTH2. PERFORM ADD_TABPRO USING P_OBJCT3 P_AUTH3. PERFORM ADD_TABPRO USING P_OBJCT4 P_AUTH4. PERFORM ADD_TABPRO USING P_OBJCT5 P_AUTH5. PERFORM ADD_TABPRO USING P_OBJCT6 P_AUTH6. PERFORM ADD_TABPRO USING P_OBJCT7 P_AUTH7. PERFORM ADD_TABPRO USING P_OBJCT8 P_AUTH8. PERFORM ADD_TABPRO USING P_OBJCT9 P_AUTH9. PERFORM ADD_TABPRO USING P_OBJC10 P_AUT10. PERFORM ADD_TABPRO USING P_OBJC11 P_AUT11. PERFORM ADD_TABPRO USING P_OBJC12 P_AUT12. PERFORM ADD_TABPRO USING P_OBJC13 P_AUT13. PERFORM ADD_TABPRO USING P_OBJC14 P_AUT14. PERFORM ADD_TABPRO USING P_OBJC15 P_AUT15. PERFORM ADD_TABPRO USING P_OBJC16 P_AUT16. PERFORM ADD_TABPRO USING P_OBJC17 P_AUT17. PERFORM ADD_TABPRO USING P_OBJC18 P_AUT18. PERFORM ADD_TABPRO USING P_OBJC19 P_AUT19. LOOP AT TABPRO. SELECT SINGLE * FROM USR12 WHERE OBJCT = TABPRO-OBJECT AND AKTPS = 'A' AND AUTH = TABPRO-RULE. IF SY-SUBRC NE 0. MESSAGE S215 WITH TABPRO-RULE. ENDIF. ENDLOOP. PERFORM UPD_PROFILE USING SPACE P_PROF 'P' P_TEXT. ENDFORM. *---------------------------------------------------------------------* * FORM ADD_TABPRO * *---------------------------------------------------------------------* FORM ADD_TABPRO USING VALUE(OBJCT) VALUE(AUTH) . CHECK NOT ( OBJCT IS INITIAL ). CHECK NOT ( AUTH IS INITIAL ). CLEAR TABPRO. TABPRO-OBJECT = OBJCT. TABPRO-OTEXT = ''. TABPRO-RULE = AUTH. TABPRO-MARK = SPACE. APPEND TABPRO. ENDFORM. *---------------------------------------------------------------------* * FORM UPD_PROFILE * *---------------------------------------------------------------------* FORM UPD_PROFILE USING VALUE(DIVISION) VALUE(PROFILE) VALUE(AKTPAS) PTEXT. PERFORM UPD_USR10 USING PROFILE AKTPAS SPACE 'S'. * Profiletext sichern, falls einer angegeben wurde IF PTEXT <> SPACE. PERFORM UPD_USR11 USING PROFILE AKTPAS PTEXT. ENDIF. PCHANGE = 0. PERFORM SAVED. PERFORM AKTIV USING 'P'. MESSAGE S210 WITH PROFILE. ENDFORM. FORM AKTIV USING AKTPAS. IF AKTPAS = 'P'. STATE = 11. ELSE. STATE = 12. ENDIF. ENDFORM. FORM SAVED. IF STATE < 10. STATE = STATE + 10. ENDIF. ENDFORM. FORM UPD_USR10 USING VALUE(PROFILE) VALUE(AKTPAS) VALUE(DIVISION) VALUE(BTYP). DATA: OFF TYPE I, Z TYPE I VALUE 0, MAX TYPE I, LONGSTRING(3750), LONGSTRING1(3750). DATA: BEGIN OF INTUST10C OCCURS 50. INCLUDE STRUCTURE UST10C. DATA: END OF INTUST10C. DATA: BEGIN OF INTUST10S OCCURS 50. INCLUDE STRUCTURE UST10S. DATA: END OF INTUST10S. * SELECT SINGLE * FROM USR10 WHERE PROFN = PROFILE AND AKTPS = AKTPAS. RC = SY-SUBRC. MOVE-CORRESPONDING USR10 TO *USR10. CLEAR USR10. CLEAR LONGSTRING. USR10-PROFN = PROFILE. USR10-AKTPS = AKTPAS. USR10-DIVIS = DIVISION. USR10-TYP = BTYP. OFF = 2. Z = 0. IF USR10-TYP = COLECTPROF. MAX = MAXREC - PROFLNG. LOOP AT TABCPF. WRITE TABCPF-PROF TO LONGSTRING+OFF(PROFLNG). OFF = OFF + PROFLNG. Z = Z + 1. IF OFF > MAX. MESSAGE W269. EXIT. ENDIF. ENDLOOP. ELSE. IF USR10-TYP = SINGLEPROF. MAX = MAXREC - OBJLNG - AUTHLNG. LOOP AT TABPRO. WRITE TABPRO-OBJECT TO LONGSTRING+OFF(OBJLNG). OFF = OFF + OBJLNG. WRITE TABPRO-RULE TO LONGSTRING+OFF(AUTHLNG). OFF = OFF + AUTHLNG. IF OFF > MAX. MESSAGE W260. EXIT. ENDIF. Z = Z + 1. ENDLOOP. ENDIF. ENDIF. USR10-NRAUT = OFF. USR10-AUTHS = LONGSTRING. IF RC = 0. IF AKTPAS = AKTIVATED. IF *USR10-AUTHS(1) <> REC_TYPE_CREATE AND *USR10-AUTHS(1) <> REC_TYPE_MODIFY. SELECT * FROM USH10 WHERE PROFN = PROFILE. EXIT. ENDSELECT. IF SY-SUBRC <> 0. WRITE REC_TYPE_CREATE TO *USR10-AUTHS(1). ELSE. MOVE-CORRESPONDING *USR10 TO USH10. CLEAR USH10-AUTHS. INSERT USH10. *USR10-MODDA = SY-DATUM. *USR10-MODTI = SY-UZEIT - 1. *USR10-MODBE = SY-UNAME. ENDIF. ENDIF. MOVE-CORRESPONDING *USR10 TO USH10. INSERT USH10. IF SY-SUBRC <> 0. MESSAGE S297 WITH 'IH10' SY-SUBRC. ENDIF. ENDIF. * USR10-MODBE = SY-UNAME. USR10-MODDA = SY-DATUM. USR10-MODTI = SY-UZEIT. WRITE REC_TYPE_MODIFY TO USR10-AUTHS(1). UPDATE USR10. ELSE. "Record is new USR10-MODBE = SY-UNAME. USR10-MODDA = SY-DATUM. USR10-MODTI = SY-UZEIT. WRITE REC_TYPE_CREATE TO USR10-AUTHS(1). INSERT USR10. ENDIF. IF BTYP = COLECTPROF. SELECT * FROM UST10C INTO INTUST10C WHERE PROFN = PROFILE AND AKTPS = AKTPAS. APPEND INTUST10C. ENDSELECT. * Activate Transparente Tables ust10c or ust10s SORT INTUST10C. LOOP AT INTUST10C. READ TABLE TABCPF WITH KEY PROF = INTUST10C-SUBPROF. IF SY-SUBRC <> 0. DELETE FROM UST10C WHERE PROFN = INTUST10C-PROFN AND AKTPS = INTUST10C-AKTPS AND SUBPROF = INTUST10C-SUBPROF. ENDIF. ENDLOOP. UST10C-PROFN = PROFILE. UST10C-AKTPS = AKTPAS. LOOP AT TABCPF. READ TABLE INTUST10C WITH KEY SUBPROF = TABCPF-PROF. IF SY-SUBRC <> 0. UST10C-SUBPROF = TABCPF-PROF. INSERT UST10C. ENDIF. ENDLOOP. ELSE. SELECT * FROM UST10S INTO INTUST10S WHERE PROFN = PROFILE AND AKTPS = AKTPAS. APPEND INTUST10S. ENDSELECT. SORT INTUST10S. LOOP AT INTUST10S. READ TABLE TABPRO WITH KEY OBJECT = INTUST10S-OBJCT RULE = INTUST10S-AUTH. IF SY-SUBRC <> 0. DELETE FROM UST10S WHERE PROFN = INTUST10S-PROFN AND AKTPS = INTUST10S-AKTPS AND OBJCT = INTUST10S-OBJCT AND AUTH = INTUST10S-AUTH. ENDIF. ENDLOOP. UST10S-PROFN = PROFILE. UST10S-AKTPS = AKTPAS. LOOP AT TABPRO. READ TABLE INTUST10S WITH KEY OBJCT = TABPRO-OBJECT AUTH = TABPRO-RULE. IF SY-SUBRC <> 0. UST10S-OBJCT = TABPRO-OBJECT. UST10S-AUTH = TABPRO-RULE. INSERT UST10S. ENDIF. ENDLOOP. ENDIF. ENDFORM. FORM UPD_USR11 USING VALUE(PROFILE) VALUE(AKTPAS) VALUE(PTEXT). SELECT SINGLE * FROM USR11 WHERE LANGU = SY-LANGU AND PROFN = PROFILE AND AKTPS = AKTPAS. USR11-PTEXT = PTEXT. IF SY-SUBRC = 0. UPDATE USR11. IF SY-SUBRC <> 0. MESSAGE S297 WITH 'UR11' SY-SUBRC. ENDIF. ELSE. USR11-LANGU = SY-LANGU. USR11-PROFN = PROFILE. USR11-AKTPS = AKTPAS. INSERT USR11. IF SY-SUBRC <> 0. MESSAGE S297 WITH 'IR11' SY-SUBRC. ENDIF. ENDIF. ENDFORM.