Lock and Unlock Users
REPORT ZUSR_LOCK.
TABLES USR02.
DATA: Z_USR02 LIKE USR02 OCCURS 0 WITH HEADER LINE.
DATA: ZCOUNT TYPE I,
DEST(72).
*-- Select-Options-----------------------------------------------------
SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE TEXT-100.
SELECT-OPTIONS: S_BNAME FOR USR02-BNAME NO INTERVALS.
* S_CLASS FOR USR02-CLASS NO INTERVALS.
PARAMETER: ZTEST AS CHECKBOX DEFAULT 'X'.
selection-screen end of block 1.
SELECTION-SCREEN BEGIN OF BLOCK 2 WITH FRAME TITLE TEXT-110.
PARAMETERS: ZUFLAG_L RADIOBUTTON GROUP RADI,
ZUFLAG_U RADIOBUTTON GROUP RADI.
SELECTION-SCREEN END OF BLOCK 2.
*-- Select-Options-----------------------------------------------------
AT SELECTION-SCREEN.
IF SY-SUBRC NE 0.
MESSAGE I001(CJ) WITH TEXT-001.
EXIT.
ENDIF.
IF S_BNAME IS INITIAL.
* and S_CLASS IS INITIAL.
MESSAGE E001(CJ) WITH TEXT-003.
ENDIF.
START-OF-SELECTION.
IF ZUFLAG_L EQ 'X'.
SELECT * FROM USR02 INTO TABLE Z_USR02 WHERE BNAME IN S_BNAME
* AND CLASS IN S_CLASS
AND UFLAG EQ ' '.
ENDIF.
IF ZUFLAG_U EQ 'X'.
SELECT * FROM USR02 INTO TABLE Z_USR02 WHERE BNAME IN S_BNAME
* AND CLASS IN S_CLASS
AND UFLAG EQ '64'.
ENDIF.
IF SY-SUBRC <> 0.
MESSAGE I001(CJ) WITH TEXT-002.
EXIT.
ELSE.
IF ZTEST EQ ' '.
LOOP AT Z_USR02.
SELECT SINGLE * FROM USR02 WHERE BNAME EQ Z_USR02-BNAME.
IF ZUFLAG_L EQ 'X'.
USR02-UFLAG = '64'.
ENDIF.
IF ZUFLAG_U EQ 'X'.
USR02-UFLAG = '0'.
ENDIF.
MODIFY USR02.
IF SY-SUBRC EQ 0.
ZCOUNT = ZCOUNT + 1.
* z_usr02-zbvmaster = 'X'.
MODIFY Z_USR02.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
END-OF-SELECTION.
*Write result
IF NOT ZCOUNT IS INITIAL.
IF ZUFLAG_L EQ 'X'.
WRITE TEXT-200 TO DEST(40).
WRITE ZCOUNT TO DEST+41(3).
ENDIF.
IF ZUFLAG_U EQ 'X'.
WRITE: TEXT-300 TO DEST(40).
WRITE ZCOUNT TO DEST+41(3).
ENDIF.
ELSE.
WRITE: TEXT-400.
ENDIF.
LOOP AT Z_USR02.
WRITE: /3 Z_USR02-BNAME.
ENDLOOP.
TOP-OF-PAGE.
WRITE: /1 DEST COLOR 3.
TABLES USR02.
DATA: Z_USR02 LIKE USR02 OCCURS 0 WITH HEADER LINE.
DATA: ZCOUNT TYPE I,
DEST(72).
*-- Select-Options-----------------------------------------------------
SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE TEXT-100.
SELECT-OPTIONS: S_BNAME FOR USR02-BNAME NO INTERVALS.
* S_CLASS FOR USR02-CLASS NO INTERVALS.
PARAMETER: ZTEST AS CHECKBOX DEFAULT 'X'.
selection-screen end of block 1.
SELECTION-SCREEN BEGIN OF BLOCK 2 WITH FRAME TITLE TEXT-110.
PARAMETERS: ZUFLAG_L RADIOBUTTON GROUP RADI,
ZUFLAG_U RADIOBUTTON GROUP RADI.
SELECTION-SCREEN END OF BLOCK 2.
*-- Select-Options-----------------------------------------------------
AT SELECTION-SCREEN.
IF SY-SUBRC NE 0.
MESSAGE I001(CJ) WITH TEXT-001.
EXIT.
ENDIF.
IF S_BNAME IS INITIAL.
* and S_CLASS IS INITIAL.
MESSAGE E001(CJ) WITH TEXT-003.
ENDIF.
START-OF-SELECTION.
IF ZUFLAG_L EQ 'X'.
SELECT * FROM USR02 INTO TABLE Z_USR02 WHERE BNAME IN S_BNAME
* AND CLASS IN S_CLASS
AND UFLAG EQ ' '.
ENDIF.
IF ZUFLAG_U EQ 'X'.
SELECT * FROM USR02 INTO TABLE Z_USR02 WHERE BNAME IN S_BNAME
* AND CLASS IN S_CLASS
AND UFLAG EQ '64'.
ENDIF.
IF SY-SUBRC <> 0.
MESSAGE I001(CJ) WITH TEXT-002.
EXIT.
ELSE.
IF ZTEST EQ ' '.
LOOP AT Z_USR02.
SELECT SINGLE * FROM USR02 WHERE BNAME EQ Z_USR02-BNAME.
IF ZUFLAG_L EQ 'X'.
USR02-UFLAG = '64'.
ENDIF.
IF ZUFLAG_U EQ 'X'.
USR02-UFLAG = '0'.
ENDIF.
MODIFY USR02.
IF SY-SUBRC EQ 0.
ZCOUNT = ZCOUNT + 1.
* z_usr02-zbvmaster = 'X'.
MODIFY Z_USR02.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
END-OF-SELECTION.
*Write result
IF NOT ZCOUNT IS INITIAL.
IF ZUFLAG_L EQ 'X'.
WRITE TEXT-200 TO DEST(40).
WRITE ZCOUNT TO DEST+41(3).
ENDIF.
IF ZUFLAG_U EQ 'X'.
WRITE: TEXT-300 TO DEST(40).
WRITE ZCOUNT TO DEST+41(3).
ENDIF.
ELSE.
WRITE: TEXT-400.
ENDIF.
LOOP AT Z_USR02.
WRITE: /3 Z_USR02-BNAME.
ENDLOOP.
TOP-OF-PAGE.
WRITE: /1 DEST COLOR 3.