REPORT ZZAUT002 MESSAGE-ID Z1.
*----------------------------------------------------------------------*
* Topic: Utillity for Maintenance Authorizations. *
* *
* Description: Enhanced maintenance function for maintenance the aut- *
* horizations in SAP R/3. With this program you enter the *
* authorization object name, and authorizations. *
* *
* Implementing The program is client independent. The program does not *
* respond to F8=EXECUTE but only respond to pushbuttoms. *
* *
* 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 releasechage. *
* release: *
* *
* R/3 Release: Developed and tested in R/3 Release: *
* 3.0F *
* *
* Programmer: Benny G. Sørensen *
* Date: Nov 1996. *
* *
*------------------------------ Questions -----------------------------*
* Version 2
*-------------------------------Corrections----------------------------*
* Date Userid Correction Text *
* ::.::.:::: :::::::: :::::::::::::: ::::::::::::::::::::::::::::: *
*----------------------------------------------------------------------*
INCLUDE MS01CTCO.
*----------------------------------------------------------------------*
* Tables
*----------------------------------------------------------------------*
TABLES: USR12 ,USR13 ,SSCRFIELDS, TOBJ.
*----------------------------------------------------------------------*
* Parameters *
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
PARAMETERS: P_OBJCT LIKE USR13-OBJCT DEFAULT ''.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(31) TEXT-105 .
PARAMETERS: P_AUTH LIKE USR13-AUTH DEFAULT '4XXX_'.
* ,p_text like usr13-atext default ''.
SELECTION-SCREEN END OF LINE.
PARAMETERS: P_MASK LIKE USR13-AUTH DEFAULT '4*'.
SELECTION-SCREEN END OF BLOCK BLK1.
SELECTION-SCREEN FUNCTION KEY 1. "Insert
SELECTION-SCREEN FUNCTION KEY 2. "Change
SELECTION-SCREEN FUNCTION KEY 3. "List
*----------------------------------------------------------------------*
* Work Variables and internal tables
*----------------------------------------------------------------------*
DATA: BEGIN OF W_AUTH OCCURS 10
,AUTH LIKE USR13-AUTH
,FILLER(5) TYPE C
,TEXT LIKE USR13-ATEXT
,END OF W_AUTH.
*----------------------------------------------------------------------*
* Constants
*----------------------------------------------------------------------*
DATA: FAIL TYPE I VALUE 1
,OK LIKE SY-SUBRC VALUE 0 "Code for Ok
,ERROR LIKE SY-SUBRC VALUE -1 "Code for error
,RETURN_CODE LIKE SY-SUBRC VALUE -1 "Code for error
,YES TYPE I VALUE 1 "Boolean = YES
,NO TYPE I VALUE 0 "Boolean = NO
,EXISTS TYPE I VALUE 0 "Boolean = YES/NO
.
*----------------------------------------------------------------------*
* EVENT: Initialization
*----------------------------------------------------------------------*
INITIALIZATION.
SSCRFIELDS-FUNCTXT_01 = TEXT-003. "Insert
SSCRFIELDS-FUNCTXT_02 = TEXT-004. "Change
SSCRFIELDS-FUNCTXT_03 = TEXT-005. "List
*----------------------------------------------------------------------*
* EVENT: validate users entries on the selection screen *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.
IF SSCRFIELDS-UCOMM = 'FC01'.
PERFORM EXISTS_OBJECT USING P_OBJCT RETURN_CODE.
IF RETURN_CODE NE OK AND RETURN_CODE NE 2.
MESSAGE E000 WITH TEXT-102.
EXIT.
ENDIF.
PERFORM MAINTAIN_AUTHORIZATION USING P_OBJCT P_AUTH.
ENDIF.
IF SSCRFIELDS-UCOMM = 'FC02'.
PERFORM EXISTS_OBJECT USING P_OBJCT RETURN_CODE.
CASE RETURN_CODE.
WHEN 1. MESSAGE E000 WITH TEXT-102.
WHEN 2. MESSAGE E000 WITH TEXT-103.
ENDCASE.
CHECK RETURN_CODE = OK.
PERFORM MAINTAIN_AUTHORIZATION USING P_OBJCT P_AUTH.
ENDIF.
IF SSCRFIELDS-UCOMM = 'FC03'.
PERFORM LIST_AUTHORIZATION.
ENDIF.
* p_text = usr13-atext.
SSCRFIELDS-UCOMM = 'ONLI'.
*----------------------------------------------------------------------*
* EVENT: Start-Of-Selection
*----------------------------------------------------------------------*
START-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form MAINTAIN_AUTHORIZATION
*&---------------------------------------------------------------------*
FORM MAINTAIN_AUTHORIZATION USING P_OBJCT LIKE USR13-OBJCT
P_AUTH LIKE USR13-AUTH.
CALL FUNCTION 'MAINT_AUTHORIZATION'
EXPORTING
AUTHNAME = P_AUTH
OBJECTNAME = P_OBJCT
EXCEPTIONS
FOREIGN_LOCK = 1
NO_AUTHORIZATION = 2
SYSTEM_FAILURE = 3
OTHERS = 4.
IF SY-SUBRC NE OK.
MESSAGE E000 WITH TEXT-101.
ENDIF.
ENDFORM. " MAINTAIN_AUTHORIZATION
*&---------------------------------------------------------------------*
*& Form EXISTS_OBJECT
*&---------------------------------------------------------------------*
FORM EXISTS_OBJECT USING P_OBJCT LIKE TOBJ-OBJCT
RETURN_CODE LIKE SY-SUBRC.
RETURN_CODE = OK.
SELECT SINGLE * FROM TOBJ
WHERE OBJCT = P_OBJCT.
IF SY-SUBRC NE OK.
RETURN_CODE = 1.
EXIT.
ENDIF.
SELECT * FROM USR13
WHERE OBJCT = P_OBJCT
AND AUTH = P_AUTH
AND LANGU = SY-LANGU .
ENDSELECT.
IF SY-SUBRC NE OK.
RETURN_CODE = 2.
EXIT.
ENDIF.
ENDFORM. " EXISTS_OBJECT
*&---------------------------------------------------------------------*
*& Form LIST_AUTHORIZATION
*&---------------------------------------------------------------------*
FORM LIST_AUTHORIZATION.
DATA: CHOISE LIKE SY-TABIX.
CLEAR W_AUTH.
REFRESH W_AUTH.
TRANSLATE P_MASK USING '*%'.
TRANSLATE P_AUTH USING '*%'.
SELECT * FROM USR13
WHERE OBJCT = P_OBJCT
AND LANGU = SY-LANGU
AND AUTH LIKE P_MASK.
W_AUTH-AUTH = USR13-AUTH.
W_AUTH-TEXT = USR13-ATEXT.
APPEND W_AUTH.
ENDSELECT.
CHECK SY-SUBRC = OK.
CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY'
EXPORTING
ENDPOS_COL = 90
ENDPOS_ROW = 15
STARTPOS_COL = 10
STARTPOS_ROW = 10
TITLETEXT = 'Autorisationer'
IMPORTING
CHOISE = CHOISE
TABLES
VALUETAB = W_AUTH
EXCEPTIONS
BREAK_OFF = 1
OTHERS = 2.
IF CHOISE NE SPACE.
READ TABLE W_AUTH INDEX CHOISE.
PERFORM MAINTAIN_AUTHORIZATION USING P_OBJCT W_AUTH-AUTH.
ENDIF.
ENDFORM. " LIST_AUTHORIZATION