2014년 7월 15일 화요일

SAP 멀티 로그인 횟수 제어하기

[출처 : http://yongandju.tistory.com/ ]

SAP 로그인시 최대 로그인 세션을 지정하여 제한하기

◆ Exit으로 제어
  - Function 그룹 : XUSR
  - Module          : EXIT_SAPLSUSF_001
  - INCLUDE       : ZXUSRU01

◆ 제어 조건
  - 동시 접속 4개 이상을 초과시 강제 로그아웃
  - 현재 접속한 내역 안내 팝업창 표시
  - 리스트에 등록한 계정은 중복 로그인 허용

※ 소스보기
*&---------------------------------------------------------------------*
*&  Include           ZXUSRU01
*&---------------------------------------------------------------------*

TABLES: UINFO.
DATA: TYPE VALUE 5.         "<- 최대 허용 중복 로그인 수치
DATA: OPCODE TYPE 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 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 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.
    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 >= N.

    N_C 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.




댓글 없음:

댓글 쓰기