본문 바로가기

SAP BC-프로그램

SAPGUI 중복 로그인 제한 USER-EXIT

모듈 : 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.