控制位置:增强函数EXIT_SAPLSUSF_001中
控制思路:根据FM:TH_USER_INFO获取登录信息,然后根据IP进行控制(rounter/vpn登录则记录的是这两种方式进入内网的IP地址),这个增强点只能检测GUI登录,不能检测RFC登录。
*&---------------------------------------------------------------------*
*& 包含 ZXUSRU01
*&---------------------------------------------------------------------*
data:lv_terminal type usr41-terminal.
data lv_ip type char11.
* 获取用户终端信息
CALL FUNCTION 'TH_USER_INFO'
IMPORTING
addrstr = lv_ip " like UINFO-HOSTADR (hex)
terminal = lv_terminal. " like UINFO-TERM
"判断router登录
if lv_ip = 'XXX.XXX.XXX.XXX'."router进入内网的ip地址
message i001(00) with '不允许此种方式登录' display like 'E'.
*终止登录
call function 'TH_DELETE_MODE'
* EXPORTING
* MODE = -1
.
endif.
针对RFC登录,目前没有找到系统预留的增强位置。找了一个标准函数SYSTEM_REMOTE_LOGIN,在其上做隐士增强。如下code
ENHANCEMENT 2 ZIM_SYSTEM_REMOTE_LOGIN. "active version
*
data:zlogoninfo TYPE zlogoninfo.
IF sy-uname eq 'POUSER' . " PO接口账号,只允许PO系统IP登录
call function 'TH_USER_INFO'
importing
addrstr = zlogoninfo-ip "like UINFO-HOSTADR (hex)
terminal = zlogoninfo-hostname. "like UINFO-TERM
IF ( sy-SYSID EQ 'S4D' AND zlogoninfo-ip EQ '172.20.16.17' ) OR " S4 D系统 只允许 PO的D系统连接
( sy-SYSID EQ 'S4Q' AND zlogoninfo-ip EQ '172.20.16.18' ) OR " S4 Q系统 只允许 PO的Q系统连接
( sy-SYSID EQ 'S4P' AND zlogoninfo-ip EQ '172.21.5.15' ) . " S4 P系统 只允许 PO的P系统连接
else.
MESSAGE e001(00) WITH 'PO接口账号,只允许SAP系统 对应的PO系统登录' into error_message.
RAISE CANNOT_START.
ENDIF.
ENDIF.
ENDENHANCEMENT.