SAP ABAP Programming, Functional and Basis Components Books


Mass Lock/Unlock SAP users

REPORT ZUSR02 NO STANDARD PAGE HEADING LINE-SIZE 120
              LINE-COUNT 90(3).

TABLES: USR02,
                USR03.

* XCLASS - User Class
* S_CLASS
* XBNAME - User Name
* S_BNAME
* XLOCK  - Lock User
* XNLOCK - Unlock User
* Put an unknown default in case you press the execute button too fast
SELECT-OPTIONS: XCLASS FOR USR02-CLASS DEFAULT 'XXX'.
SELECT-OPTIONS: XBNAME FOR USR02-BNAME.
SELECTION-SCREEN SKIP.
PARAMETERS: XLOCK  RADIOBUTTON GROUP X1,
            XNLOCK RADIOBUTTON GROUP X1 DEFAULT 'X'.
SELECTION-SCREEN SKIP.
PARAMETERS: S_CLASS RADIOBUTTON GROUP R1,
            S_BNAME RADIOBUTTON GROUP R1.
DATA: WCLASS LIKE USR02-CLASS,
      WLOCK(6).
 

IF     XNLOCK = 'X'.
   UPDATE USR02 SET UFLAG = ''
          WHERE     BNAME IN XBNAME.
ELSEIF XLOCK  = 'X'.
   UPDATE USR02 SET UFLAG = ' 64'
          WHERE     BNAME IN XBNAME
* User not lock (include yours, just in case)
            AND     BNAME <> 'SAP*'
            AND     BNAME <> 'DDIC'.
ENDIF.

IF S_BNAME = 'X'.
  PERFORM BNAMERTN.
ELSE.
  PERFORM CLASSRTN.
ENDIF.

*---------------------------------------------------------------------*
*       FORM BNAMERTN                                                 *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM BNAMERTN.
  SELECT * FROM USR02 WHERE CLASS IN XCLASS
         ORDER BY BNAME.

    IF XLOCK = 'X'.
      CHECK USR02-UFLAG = ' 64'.
    ENDIF.
    IF XNLOCK = 'X'.
      CHECK USR02-UFLAG = ''.
    ENDIF.
    IF USR02-UFLAG = '64'.
      WLOCK = 'Lock'.
    ELSE.
      WLOCK = 'Unlock'.
    ENDIF.
    SELECT SINGLE * FROM USR03 WHERE BNAME = USR02-BNAME.
    IF SY-SUBRC EQ 0.
      WRITE:/001 USR02-CLASS,
             016 USR02-BNAME,
             031 USR03-NAME1,
             064 WLOCK,
             071(4) USR03-KOSTL,
             078 USR03-ABTLG,
             093 USR03-ORT01.
    ELSE.
      WRITE:/001 USR02-CLASS,
             016 USR02-BNAME,
             064 WLOCK.
    ENDIF.
  ENDSELECT.
ENDFORM.

*---------------------------------------------------------------------*
*       FORM CLASSRTN                                                 *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM CLASSRTN.
  SELECT * FROM USR02 WHERE CLASS IN XCLASS
         ORDER BY CLASS BNAME.
    IF XLOCK = 'X'.
      CHECK USR02-UFLAG = ' 64'.
    ENDIF.
    IF XNLOCK = 'X'.
      CHECK USR02-UFLAG = ''.
    ENDIF.
    IF USR02-UFLAG = '64'.
      WLOCK = 'Lock'.
    ELSE.
      WLOCK = 'Unlock'.
    ENDIF.
    SELECT SINGLE * FROM USR03 WHERE BNAME = USR02-BNAME.
    IF SY-SUBRC EQ 0.
      WRITE:/001 USR02-CLASS,
             016 USR02-BNAME,
             031 USR03-NAME1,
             064 WLOCK,
             071(4) USR03-KOSTL,
             078 USR03-ABTLG,
             093 USR03-ORT01.
    ELSE.
      WRITE:/001 USR02-CLASS,
             016 USR02-BNAME,
             064 WLOCK.
    ENDIF.
  ENDSELECT.
ENDFORM.

TOP-OF-PAGE.
  WRITE:/ SY-DATUM,SY-UZEIT,
         50 'XXX PTE LTD',
        105 'Page', SY-PAGNO.
  WRITE: / SY-REPID, 'SAP User-IDs'.
  SKIP.
  ULINE.
  WRITE: /001 'User Group',
          016 'User-ID',
          031 'Name',
          064 'Sts',
          071 'SBU',
          078 'Dept',
          093 'Location'.
  ULINE.

Back to Previous

Return to SAP Hints and Tips on Configuration and ABAP/4 Programming