SAP BC-프로그램
SAPGUI 중복 로그인 제한 USER-EXIT
샙하나
2024. 3. 11. 23:54
모듈 : BC
기능 설명 : SAPGUI 중복 로그인 제한
사용 예시 : SAPGUI 를 통해서 중복 로그인을 제한하기 위한 USER-EXIT
SAP Enhancements (SMOD) : SUSR0001
Function Group : XUSR
Function Module : EXIT_SAPLSUSF_001
Include : ZXUSRU01
1. 소스코드
"### 최대 중복 로그인 허용 수치
DATA: Login_MAX TYPE I VALUE 2.
DATA: A(60), Current_N(3), TEMP_A(250), TEMP_B(250), TEMP_C(250), TEMP_D(250).
DATA: Login_N TYPE I VALUE 4.
DATA: GT_USR41 LIKE USR41 OCCURS 0 WITH HEADER LINE.
IF SY-SYSID = '<SID>'.
"### 제한 예외 SAP ID
IF SY-UNAME <> 'SAP*'
AND SY-UNAME <> 'DDIC'
AND SY-UNAME <> 'TMSADM'
"### 로그인 사용자 정보 체크 및 카운팅 (SAP 직접 로그인 사용자 테이블 체크)
SELECT * INTO TABLE GT_USR41
FROM USR41
WHERE BNAME = SY-UNAME.
Login_N = 0. " 현재 로그인 사용자 테이블 건수
TEMP_C = ' '. " 화면 팝업창에서 로그인 정보 2개 표시
TEMP_D = ' '. " 화면 팝업창에서 로그인 정보 4개 표시할경우 사용
LOOP AT GT_USR41.
TEMP_A = GT_USR41-TERMINAL.
TEMP_B = ' / '.
Login_N = Login_N + 1.
IF Login_N < 3.
CONCATENATE TEMP_A TEMP_B TEMP_C INTO TEMP_C.
ELSEIF Login_N < 5.
CONCATENATE TEMP_A TEMP_B TEMP_D INTO TEMP_D.
ENDIF.
ENDLOOP.
"### Login_MAX 값 2 설정 시, 중복 로그인 불가
IF Login_N >= Login_MAX.
Current_N = Login_N - 1.
CONCATENATE ' ' SY-UNAME ' 계정이 현재 ' Current_N ' 개가 로그인 되어 있습니다' INTO A.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
TITEL = 'SAP ID 정책 위반 안내'
TXT1 = A
TXT2 = '중복 로그인 정책에 위반되어 종료합니다, 접속된 PC명 : '
TXT3 = TEMP_C
TXT4 = TEMP_D.
"### 추가로 로그인한 SAP GUI 창은 위의 팝업을 보여준 후, Close 시킴
IF sy-subrc = 0.
CALL FUNCTION 'TH_DELETE_MODE'
EXPORTING
mode = -1.
ENDIF.
ENDIF.
ENDIF.
ENDIF.