[출처 : http://yongandju.tistory.com/ ]
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개 로그인만 허용하도록 한 코드 입니다.
*&---------------------------------------------------------------------*
*& 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.
댓글 없음:
댓글 쓰기