REPORT YUSRLOCK NO STANDARD PAGE HEADING.

TABLES: TRDIR, USR02.
DATA: MARK,CNTR TYPE I,
      ACCNT LIKE USR02-ACCNT, ERDAT LIKE USR02-ERDAT,
      ANAME LIKE USR02-ANAME, CLI(3) VALUE 'AAA', SZIN TYPE I,
      SYDATUM LIKE SY-DATUM, FLAG(3).
TABLES: UINFO.
DATA: OPCODE TYPE X VALUE 2.
DATA: BEGIN OF USR_TABL OCCURS 10.
        INCLUDE STRUCTURE UINFO.
DATA: END OF USR_TABL.

START-OF-SELECTION.
  CALL 'ThUsrInfo' ID 'OPCODE' FIELD OPCODE
    ID 'TAB' FIELD USR_TABL-*SYS*.
  SELECT * FROM USR02 CLIENT SPECIFIED ORDER BY MANDT BNAME.
    IF USR02-MANDT <> CLI.
      SZIN = SZIN + 1. SZIN = SZIN MOD 2.
      CLI = USR02-MANDT.
    ENDIF.
    IF USR02-UFLAG = 0.
      MARK = ' '.
    ELSE.
      MARK = 'X'.
    ENDIF.
    CLEAR FLAG.
    LOOP AT USR_TABL.
      IF USR_TABL-BNAME = USR02-BNAME AND USR_TABL-MANDT = USR02-MANDT.
        FLAG = '!!!'.
      ENDIF.
    ENDLOOP.
    SYDATUM = SY-DATUM - 30.
    IF SYDATUM < USR02-TRDAT.
      IF SZIN = 0.
        WRITE:/ ' ', MARK AS CHECKBOX,' ', USR02-BNAME COLOR 2,
              ' ',USR02-MANDT COLOR 2,
              '   ',USR02-USTYP COLOR 2,
              ' ',USR02-TRDAT COLOR 2, USR02-LTIME COLOR 2,
              ' ',FLAG COLOR 6.
      ELSE.
        WRITE:/ ' ', MARK AS CHECKBOX,' ', USR02-BNAME COLOR 3,
              ' ',USR02-MANDT COLOR 2,
              '   ',USR02-USTYP COLOR 2,
              ' ',USR02-TRDAT COLOR 2, USR02-LTIME COLOR 2,
              ' ',FLAG COLOR 6.
      ENDIF.
    ELSE.
      IF SZIN = 0.
        WRITE:/ ' ', MARK AS CHECKBOX,' ', USR02-BNAME COLOR 2,
              ' ',USR02-MANDT COLOR 2,
              '   ',USR02-USTYP COLOR 2,
              ' ',USR02-TRDAT COLOR 4, USR02-LTIME COLOR 4,
              ' ',FLAG COLOR 6.
      ELSE.
        WRITE:/ ' ', MARK AS CHECKBOX,' ', USR02-BNAME COLOR 3,
              ' ',USR02-MANDT COLOR 2,
              '   ',USR02-USTYP COLOR 2,
              ' ',USR02-TRDAT COLOR 4, USR02-LTIME COLOR 4,
              ' ',FLAG COLOR 6.
      ENDIF.
    ENDIF.
    HIDE: USR02-BNAME, USR02-MANDT.
  ENDSELECT.
  CLEAR USR02.

TOP-OF-PAGE.
 WRITE:/ 'LOCK   USER         CLIENT  TYPE     LAST lOGIN     ' COLOR 6.
  SKIP.

AT USER-COMMAND.
  IF SY-UCOMM = 'SEL'.
    DO.
      CLEAR MARK.
      READ LINE SY-INDEX FIELD VALUE MARK.
      IF SY-SUBRC NE 0.  EXIT. ENDIF.
      IF USR02-BNAME IS INITIAL.CONTINUE.ENDIF.
      SELECT SINGLE * FROM USR02 CLIENT SPECIFIED WHERE
      MANDT = USR02-MANDT AND BNAME = USR02-BNAME.
      IF MARK = 'X' AND USR02-UFLAG = 0.
        USR02-UFLAG = 64.
        UPDATE USR02 CLIENT SPECIFIED SET: UFLAG = 64 WHERE
        MANDT = USR02-MANDT AND
        BNAME = USR02-BNAME.
        COMMIT WORK.
      ENDIF.
      IF MARK = ' ' AND USR02-UFLAG = 64.
        USR02-UFLAG = 0.
        UPDATE USR02 CLIENT SPECIFIED SET: UFLAG = 0 WHERE
        MANDT = USR02-MANDT AND
        BNAME = USR02-BNAME.
        COMMIT WORK.
      ENDIF.
    ENDDO.
    CLEAR USR02.
  ENDIF.