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'.
       WRITETEXT- 300  TO DEST( 40).
       WRITE ZCOUNT  TO DEST+ 41( 3).
     ENDIF.
   ELSE.
     WRITETEXT- 400.
   ENDIF.

   LOOP  AT Z_USR02.
     WRITE: /3 Z_USR02-BNAME.
   ENDLOOP.

TOP- OF- PAGE.
   WRITE: /1 DEST  COLOR  3.

转载于:https://www.cnblogs.com/elegantok/archive/2009/11/12/1601745.html

你可能感兴趣的:(Lock and Unlock Users)