REPORT ZUSRAPP NO STANDARD PAGE HEADING.
************************************************************************
* AUTOMATED AUTHORIZATION APPROVAL SYSTEM
*
*The table zapprove has the following key fields: system, client, job
* title, and ten data fields for approver name. The table has to
* be maintained before using this program.
*When a person, permitted to approve a creation of users with certain
* job titles in certain systems and clients (zapprove), runs the
* program, he has to define a list of users as the first step.
* Then in the second step, the program lists the job titles,
* available to approve by the person. By selecting one
* job title/system/client combination he appends this information
* to a file in /usr/sap/trans. This file documents the request and
* will be used by the user administrators to set up the appropriate
* users in the requested systems.
*
************************************************************************
TABLES: USR02, SSCRFIELDS, ZAPPROVE.
DATA: OUTPUT_FILE(30) VALUE '/usr/sap/trans/users_appr'.
DATA: LIN TYPE I, T0(50), T1(50), T2(50), T3(50), T4(500), I TYPE I.
DATA: BEGIN OF RECORD,
SEP1(2) VALUE '# ',
DATE LIKE SY-DATUM,
SEP2 VALUE ' ',
TIME LIKE SY-UZEIT,
SEP3 VALUE ' ',
APPROUVER LIKE SY-UNAME,
SEP4 VALUE ' ',
SYSTEM LIKE ZAPPROVE-SAPSYSTEM,
SEP5 VALUE ' ',
CLIENT LIKE ZAPPROVE-CLIENT,
SEP6 VALUE ' ',
JTITLE LIKE ZAPPROVE-JTITLE,
END OF RECORD.
* Create a list of users
INITIALIZATION.
RECORD-TIME = SY-UZEIT.
RECORD-DATE = SY-DATUM.
RECORD-APPROUVER = SY-UNAME.
SELECTION-SCREEN BEGIN OF BLOCK A WITH FRAME.
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN COMMENT 1(35) TEXT-001.
SELECTION-SCREEN SKIP 2.
SELECT-OPTIONS USER FOR USR02-BNAME NO INTERVALS.
SELECTION-SCREEN SKIP 3.
SELECTION-SCREEN PUSHBUTTON 1(24) TEXT-000 USER-COMMAND AAA.
SELECTION-SCREEN PUSHBUTTON 52(24) TEXT-002 USER-COMMAND BBB.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN END OF BLOCK A.
* Finishing the first step
AT SELECTION-SCREEN.
IF SSCRFIELDS-UCOMM = 'AAA'.
DESCRIBE TABLE USER LINES LIN.
IF LIN = 0.
CALL FUNCTION 'POPUP_TO_INFORM' "No user selected
EXPORTING
TITEL = 'ERROR'
TXT1 = 'No user selected'
TXT2 = ' '.
ELSE.
SET SCREEN 0. LEAVE SCREEN.
ENDIF.
ELSEIF SSCRFIELDS-UCOMM = 'BBB'.
LEAVE PROGRAM.
ENDIF.
* Display the job title/system/client combinations
START-OF-SELECTION.
SELECT * FROM ZAPPROUVE WHERE
APPROUVER0 = SY-UNAME OR
APPROUVER1 = SY-UNAME OR
APPROUVER2 = SY-UNAME OR
APPROUVER3 = SY-UNAME OR
APPROUVER4 = SY-UNAME OR
APPROUVER5 = SY-UNAME OR
APPROUVER6 = SY-UNAME OR
APPROUVER7 = SY-UNAME OR
APPROUVER8 = SY-UNAME OR
APPROUVER9 = SY-UNAME . "only the ones available for sy-uname!
WRITE: /2(22) ZAPPROVE-JTITLE COLOR 2,
24(8) ZAPPROVE-SAPSYSTEM COLOR 2,
32(8) ZAPPROVE-CLIENT COLOR 2.
HIDE: ZAPPROVE-JTITLE, ZAPPROVE-SAPSYSTEM, ZAPPROVE-CLIENT.
CLEAR ZAPPROUVE.
ENDSELECT.
* Page header
TOP-OF-PAGE.
SKIP.
WRITE: / 'STEP 2' COLOR 3.
SKIP.
WRITE: / 'You are an approver for the following job titles'.
WRITE: 'in the corresponding systems and clients' NO-GAP.
SKIP.
WRITE: / 'Doubleclick on the job title to assign it to the users'.
SKIP.
WRITE: /2(22) 'JOB TITLE' COLOR 4,
24(8) 'SYSTEM' COLOR 4,
32(8) 'CLIENT' COLOR 4.
SKIP.
* When a job title is selected:
AT LINE-SELECTION.
IF NOT ( ZAPPROVE-JTITLE IS INITIAL ). "click on a valid line
OPEN DATASET OUTPUT_FILE FOR APPENDING IN TEXT MODE.
RECORD-JTITLE = ZAPPROVE-JTITLE.
RECORD-SYSTEM = ZAPPROVE-SAPSYSTEM.
RECORD-CLIENT = ZAPPROVE-CLIENT.
TRANSFER RECORD TO OUTPUT_FILE.
LOOP AT USER.
TRANSFER USER-LOW TO OUTPUT_FILE.
ENDLOOP.
* Approuval notice
CLOSE DATASET OUTPUT_FILE.
T0 = 'APPROVAL NOTICE'. T0+18 = SY-DATUM. T0+28 = SY-UZEIT.
T1 = 'Approver: ________ System: ___ Client: ___'.
T1+10(8) = SY-UNAME. T1+29(3) = ZAPPROVE-SAPSYSTEM.
T1+42(3) = ZAPPROVE-CLIENT.
T2 = 'Job Title:'. T2+13 = ZAPPROVE-JTITLE.
T3 = ' '.
T4 = 'Users:'.
I = 2.
LOOP AT USER.
I = I + 10.
T4+I(8) = USER-LOW.
ENDLOOP.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
TITEL = T0
TXT1 = T1
TXT2 = T2
TXT3 = T3
TXT4 = T4.
LEAVE PROGRAM.
ENDIF.