본문 바로가기
ERP-SAP/ABAP

<ABAP> 라이센스 관리- 중복로그인 제한(Multi Logon)

by 행복한워니의 기록 2013. 7. 4.
728x90
반응형

 [SAP Audit] 라이센스(License) 관리하기 - 중복로그인(MultiLogon) 제한        

 
SAP를 운영하다 보면 빡빡한 라이센스(License) 정책으로 인해 골치가 조금 아픕니다.
도입 시점에서는 별 문제 없다가도, 불시에 라이센스 검사(Audit)가 나와서 추가 구매를 해야한다고 하니까요.
게다가 비용도 만만치 않습니다ㅜ
듀얼 모니터의 추세로 인해 창을 여러개 띄워놓고 작업을 하게 되는데, 하나의 로그인으로는 5개의 창 밖에는
띄울 수 없는 구조도 중복 로그인을 하게 만드는 이유가 됩니다.
물론, 라이선스 계약(1 User / 1 License)은 반드시 준수해야 합니다.

라이선스 계약이 문제가 될 것이라고 판단 된다면 도입을 보류하던지 협상을 통해 원하는 결과를 

이끌어 내야 합니다. 계약할 때는 몰랐다는 식의 대응은 기업의 신뢰도를 손상시키기 때문이죠.


여기서 어느 정도 유두리(?)를 SAP에서 인정해줘야 한다고 주장하는 것은 

1 User / 1 License 정책 안에서 1 User가 여러 작업을 할 수 있도록 해달라는 점 입니다.

5개 밖에 띄울 수 없는 창의 개수를 늘려 주던지, 동일 IP에 대한 복수의 로그인을 인정해 줘야 한다는거죠 : )


각설하고, 오늘은 멀티로그인을 허용한 기업에서 최대 로그인을 제한하는 방안을 소개하고자 합니다.



로그인 프로세스 안에 Exit을 걸어두고 다음과 같은 기능을 하게 만드는 것이죠   

  ▶ 동시접속 4개 이상을 초과할 경우 강제 로그아웃
  ▶ 현재 접속한 내역 안내 팝업창
  ▶ 특수 계정은 중복 로그인 허용(ADMIN, INTERFACE 등)


 

먼저, Exit을 거는 위치는 아래와 같습니다.

  ▶ Function 그룹 : XUSR
  ▶ 모듈 : EXIT_SAPLSUSF_001
  ▶ INCLUDE : ZXUSRU01


소스코드는 하기와 같습니다. 최대 4개 로그인만 허용하도록 한 코드 입니다.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
*&---------------------------------------------------------------------*
*&  Include           ZXUSRU01
*&---------------------------------------------------------------------*
 
TABLES: UINFO.
DATA: N TYPE I VALUE 5.         "<- 최대 허용 중복 로그인 수치
DATA: OPCODE TYPE X VALUE 2, I TYPE I, A(60), N_C(3), B(250), c(250), TEMP_A(250),
          TEMP_B(250), TEMP_C(250),TEMP_D(250).
DATA: I_n TYPE I VALUE 4.
DATA: BEGIN OF BDC_TAB1 OCCURS 5.
        INCLUDE STRUCTURE BDCDATA.
DATA: END OF BDC_TAB1.
 
DATA: BEGIN OF USR_TABL OCCURS 10.
        INCLUDE STRUCTURE UINFO.
DATA: END OF USR_TABL.
 
DATA: GT_USR41 LIKE USR41 OCCURS 0 WITH HEADER LINE.
 
* 예외처리할 ID있으면 아래에 표시
IF  SY-UNAME <> 'ADMIN'
      AND SY-UNAME <> 'SAP*'
      AND SY-UNAME <> 'INTERFACE'
      AND SY-UNAME <> 'DDIC'
      AND SY-UNAME <> 'DDID'
      AND SY-UNAME <> 'ALEREMOTE'
      AND SY-UNAME <> 'BWREMOTE'
      AND SY-UNAME <> 'IF_BIZTALK'
      AND SY-UNAME <> 'ALEREMOTE'
      AND SY-UNAME <> 'RSDUSER'
      AND SY-UNAME <> 'SAPCPIC'
      AND SY-UNAME <> 'TMSADM'.
 
CALL 'ThUsrInfo' ID 'OPCODE' FIELD OPCODE
  ID 'TAB' FIELD USR_TABL-*SYS*.
 
LOOP AT USR_TABL.
  IF SY-UNAME = USR_TABL-BNAME AND SY-MANDT = USR_TABL-MANDT.
    I = I + 1.
  ENDIF.
 
ENDLOOP.
 
 
  SELECT *
  INTO TABLE GT_USR41
  FROM USR41
  WHERE BNAME = SY-UNAME.
 
    I_n = 0.
    TEMP_C = ''.
    TEMP_D = ''.
 
  LOOP AT GT_USR41.
    TEMP_A  = GT_USR41-TERMINAL.
    TEMP_B  = '  /  '.
    I_n  = I_n + 1.
    IF I_n < 3 .
      CONCATENATE  TEMP_A TEMP_B TEMP_C INTO TEMP_C.
    ELSEIF I_N < 5.
      CONCATENATE  TEMP_A TEMP_B TEMP_D INTO TEMP_D.
    ENDIF.
  ENDLOOP.
 
IF I >= N.
 
    N_C = I - 1.
 
    CONCATENATE ''  SY-UNAME '  계정이 현재  '  N_C ' 개가  로그인  되어  있습니다' INTO A.
 
      CALL FUNCTION 'POPUP_TO_INFORM'
           EXPORTING
                TITEL = 'SAP ID 정책 위반 안내'
                TXT1  = A
                TXT2  = '중복 로그인 정책에 위반되어 종료 합니다, 접속된 PC명 : '
                TXT3  = TEMP_C
                TXT4 =  TEMP_D.
 
      MOVE: 'SAPMSSY0' TO BDC_TAB1-PROGRAM,
              '120' TO BDC_TAB1-DYNPRO,
              'X' TO BDC_TAB1-DYNBEGIN.
      APPEND BDC_TAB1.CLEAR BDC_TAB1.
      MOVE: 'BDC_OKCODE' TO BDC_TAB1-FNAM,
             '/nex' TO BDC_TAB1-FVAL.
      APPEND BDC_TAB1.CLEAR BDC_TAB1.
 
      CALL TRANSACTION 'SM04' USING BDC_TAB1 MODE 'N'.
 
ENDIF.
ENDIF.

db : usr41_mld 

728x90
반응형