*&---------------------------------------------------------------------* *& Report ZPUPRC00_LOGOUT * *& * *& Der Report löscht User-Sessions, die Personalnummern sperren * *& * *&---------------------------------------------------------------------* *& Änderung Datum Änderer Inhalt * *& * *&---------------------------------------------------------------------* REPORT ZPUPRC00_LOGOUT . DATA: N TYPE I. DATA: BEGIN OF BDCDATA OCCURS 10. INCLUDE STRUCTURE BDCDATA. DATA END OF BDCDATA. DATA: MSGTAB LIKE BDCMSGCOLL OCCURS 1 WITH HEADER LINE. DATA: BEGIN OF LOCKERS OCCURS 0. INCLUDE STRUCTURE SEQG3. DATA: END OF LOCKERS. PARAMETERS: TEST TYPE X_FLAG. INITIALIZATION. START-OF-SELECTION. * Testlauf IF TEST EQ 'X'. BDCDATA-PROGRAM = 'RSENQRR2'. BDCDATA-DYNPRO = '1100'. BDCDATA-DYNBEGIN = 'X'. BDCDATA-FNAM = 'SEQG3-GUNAME'. BDCDATA-FVAL = '*'. APPEND BDCDATA. CLEAR BDCDATA. BDCDATA-FNAM = 'SEQG3-GNAME'. BDCDATA-FVAL = 'PREL'. APPEND BDCDATA. CLEAR BDCDATA. BDCDATA-FNAM = 'BDC_OKCODE'. BDCDATA-FVAL = 'GO'. APPEND BDCDATA. CLEAR BDCDATA. CALL TRANSACTION 'SM12' USING BDCDATA MODE 'E' MESSAGES INTO MSGTAB. IF SY-SUBRC NE 0. LOOP AT MSGTAB. MESSAGE ID MSGTAB-MSGID TYPE MSGTAB-MSGTYP NUMBER MSGTAB-MSGNR WITH MSGTAB-MSGV1 MSGTAB-MSGV2 MSGTAB-MSGV3 MSGTAB-MSGV4. ENDLOOP. ENDIF. ELSE. * Produktivlauf CLEAR LOCKERS. REFRESH LOCKERS. * Sperreinträge lesen für Tabelle 'PREL' CALL FUNCTION 'ENQUEUE_READ' EXPORTING GCLIENT = SY-MANDT GNAME = 'PREL' GARG = ' ' GUNAME = '*' * LOCAL = ' ' * IMPORTING * NUMBER = * SUBRC = TABLES ENQ = LOCKERS * EXCEPTIONS * COMMUNICATION_FAILURE = 1 * SYSTEM_FAILURE = 2 * OTHERS = 3 . IF SY-SUBRC <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. * Sind Personalnummern gesperrt? DESCRIBE TABLE LOCKERS LINES N. IF N NE 0. * Wenn ja dann User ausloggen LOOP AT LOCKERS. CALL FUNCTION 'TH_DELETE_USER' EXPORTING USER = LOCKERS-GUNAME CLIENT = SY-MANDT * ONLY_POOLED_USER = ' ' * TID = -1 * EXCEPTIONS * AUTHORITY_ERROR = 1 * OTHERS = 2 . IF SY-SUBRC <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ELSE. ENDIF. ENDLOOP. WAIT UP TO 5 SECONDS. * Ausgabe Ergebnis WRITE:/ 'Es wurden ', N, ' User-Sessions gelöscht'. ENDIF. ENDIF. END-OF-SELECTION.