目的:查询某账户什么时间使用过什么事务码
方法:
- ST03
- SM19\SM20 操作日志
- 自己开发增强保存后台表(可通过配置后台表进行事务码权限管控)
方法1:ST03(工作负载)
1)双击“业务事务分析”,进入页面输入条件,执行
方法2:SM19/SM20(审计日志)
BASIS方法,只记录待验证
sm19和sm20是个单独的配置,系统一般默认不开审计,需要先通过sm19开审计,然后再SM20才能查到用户操作日志(看下sm20能不能查不到,查不到就是没配置)
方法3:增强
类:CL_SBLM_SERVER_API (SE24)
方法:WILL_CAUSE_RABAX (在该方法里创建增强实施,如:ZCL_SBLM_SERVER_API)
代码:
(1)在该方法里创建增强实施,如:ZCL_SBLM_SERVER_API
METHOD WILL_CAUSE_RABAX.
try.
r_rabax_flag = cl_sblm_kernel_api=>_will_cause_rabax(
exporting i_type = i_type i_obj = i_obj i_name = i_name i_clas = i_clas ).
catch CX_SY_DYN_CALL_ILLEGAL_METHOD ##NO_HANDLER.
endtry.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Klasse CL_SBLM_SERVER_API, Methode WILL_CAUSE_RABAX, Ende A
*$*$-Start: (1)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 1 ZCL_SBLM_SERVER_API. "active version
CALL FUNCTION 'ZFMBASIS001'
EXPORTING
I_OBJ = I_OBJ.
ENDENHANCEMENT.
*$*$-End: (1)---------------------------------------------------------------------------------$*$*
ENDMETHOD.
(2)创建functionZFMBASIS001
FUNCTION zfmbasis001.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(I_OBJ) TYPE SBLM_OBJ OPTIONAL
*"----------------------------------------------------------------------
TABLES:ztbasis001.
DATA:ip TYPE string.
CALL METHOD cl_gui_frontend_services=>get_ip_address
RECEIVING
ip_address = ip.
DATA: opcode_usr_attr(1) TYPE x VALUE 5,
terminal TYPE usr41-terminal.
CALL 'ThUsrInfo' ID 'OPCODE' FIELD opcode_usr_attr ID 'TERMINAL' FIELD terminal.
ztbasis001-uname = sy-uname.
ztbasis001-ccmdatum = sy-datum.
ztbasis001-ccmsyuzeit = sy-uzeit.
ztbasis001-ipadr = ip.
ztbasis001-compname = terminal.
ztbasis001-tcode = i_obj.
MODIFY ztbasis001.
CHECK sy-sysid = 'S4P'.
CHECK terminal NE 'SK-20200309VTZQ'.
DATA:it_002 TYPE TABLE OF ztbasis002 WITH HEADER LINE.
SELECT * INTO CORRESPONDING FIELDS OF TABLE it_002 FROM ztbasis002 WHERE uname = sy-uname .
IF sy-subrc = 0.
READ TABLE it_002 WITH KEY tcode = i_obj+0(5) compname = ''.
IF sy-subrc = 0.
EXIT.
ENDIF.
READ TABLE it_002 WITH KEY tcode = i_obj+0(5) compname = terminal.
IF sy-subrc = 0.
EXIT.
ENDIF.
READ TABLE it_002 WITH KEY compname = terminal tcode = i_obj forbid = ''.
IF sy-subrc <> 0.
MESSAGE '您操作的事务码超出了工作范围,请勿进入' TYPE 'E'.
ENDIF.
ENDIF.
ENDFUNCTION.
说明:
1)ZTBASIS001(表001记录用户操作事务码的信息)
2)ztbasis002(表002用于管控用户有哪些事务码权限,根据计算机名来判断)