需求:系统未启用SAP审计功能,要求自开发实现记录所有登陆用户的信息。
方案:SMOD -> EXIT_SAPLSUSF_001
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 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
*&---------------------------------------------------------------------* *& 包含 ZXUSRU01 *&---------------------------------------------------------------------* *SAP账号使用合规性审计. TABLES: zzuser_logon_inf. DATA: ls_uinfo TYPE zzuser_logon_inf, lv_addrnumber TYPE ad_addrnum, lv_persnumber TYPE ad_persnum, lv_name_first TYPE ad_namefir, lv_name_last TYPE ad_namelas, computer_name TYPE string, lt_guiversion TYPE filetable, lw_guiversion LIKE LINE OF lt_guiversion, lv_ostype TYPE i, lv_osuname TYPE string, lv_rc TYPE i VALUE 0. ls_uinfo-zdate = sy-datum. ls_uinfo-ztime = sy-uzeit. ls_uinfo-zuser = sy-uname. ***取用户名称(描述) SELECT SINGLE persnumber addrnumber INTO (lv_persnumber, lv_addrnumber) FROM usr21 WHERE bname = sy-uname. IF sy-subrc = 0. SELECT SINGLE name_first name_last INTO (lv_name_first,lv_name_last) FROM adrp WHERE persnumber = lv_persnumber. IF sy-subrc = 0. CONCATENATE lv_name_last lv_name_first INTO ls_uinfo-zname. CONDENSE ls_uinfo-zname NO-GAPS. ENDIF. ENDIF. *取用户IP. CALL METHOD cl_gui_frontend_services=>get_ip_address RECEIVING ip_address = ls_uinfo-zip. CALL METHOD cl_gui_cfw=>flush. *取用户hostname. CALL METHOD cl_gui_frontend_services=>get_computer_name( CHANGING computer_name = computer_name ). CALL METHOD cl_gui_cfw=>flush. ls_uinfo-zterminal = computer_name . *取用户IP. CALL METHOD cl_gui_frontend_services=>get_ip_address RECEIVING ip_address = ls_uinfo-zip. CALL METHOD cl_gui_cfw=>flush. *获取客户端版本. CALL METHOD cl_gui_frontend_services=>get_gui_version CHANGING version_table = lt_guiversion rc = lv_rc. CALL METHOD cl_gui_cfw=>flush. *获取客户端操作系统类型. CALL METHOD cl_gui_frontend_services=>get_platform RECEIVING platform = lv_ostype. CALL METHOD cl_gui_cfw=>flush. *获取客户端系统用户名. CALL METHOD cl_gui_frontend_services=>get_user_name CHANGING user_name = lv_osuname. CALL METHOD cl_gui_cfw=>flush. ls_uinfo-zos_uname = lv_osuname. CASE lv_ostype. WHEN 0. ls_uinfo-zostype = 'PLATFORM_UNKNOWN'. WHEN 1. ls_uinfo-zostype = 'PLATFORM_MAC'. WHEN 2. ls_uinfo-zostype = 'PLATFORM_NT40'. WHEN 3. ls_uinfo-zostype = 'PLATFORM_WINDOWS95'. WHEN 4. ls_uinfo-zostype = 'PLATFORM_WINDOWS98'. WHEN 5. ls_uinfo-zostype = 'PLATFORM_NT50'. WHEN 6. ls_uinfo-zostype = 'PLATFORM_OS2'. WHEN 7. ls_uinfo-zostype = 'PLATFORM_LINUX'. WHEN 8. ls_uinfo-zostype = 'PLATFORM_HPUX'. WHEN 9. ls_uinfo-zostype = 'PLATFORM_TRU64'. WHEN 10. ls_uinfo-zostype = 'PLATFORM_AIX'. WHEN 11. ls_uinfo-zostype = 'PLATFORM_SOLARIS'. WHEN 12. ls_uinfo-zostype = 'PLATFORM_MACOSX'. WHEN 13. ls_uinfo-zostype = 'PLATFORM_WINDOWSXP'. WHEN 14. ls_uinfo-zostype = 'PLATFORM_WINDOWS7/8/10'. WHEN OTHERS. ls_uinfo-zostype = 'PLATFORM_UNKNOWN'. ENDCASE. LOOP AT lt_guiversion INTO lw_guiversion. CONCATENATE ls_uinfo-zguiversio lw_guiversion ' / ' INTO ls_uinfo-zguiversio. CLEAR lw_guiversion. ENDLOOP. INSERT zzuser_logon_inf FROM ls_uinfo. COMMIT WORK AND WAIT. CLEAR ls_uinfo. CLEAR lv_addrnumber. CLEAR lv_persnumber. CLEAR lv_name_first. CLEAR lv_name_last. CLEAR computer_name. CLEAR lv_ostype. CLEAR lv_osuname. |
本文作者: GavinDong
版权属于: GavinDong博客
文章链接: https://gavindong.com/2567.html
如果使用过程中遇到问题,可 **点击此处** 交流沟通。
版权所有,转载时必须以链接形式注明作者和原始出处及本声明。
评论列表(3条)
注意:每一个Client中都需要进SMOD激活增强之后才会生效,否则代码过去了、但逻辑不生效。
常用GET***方法:
GET_CACHE_PROP Read Value of a Cache Property
GET_COMPUTER_NAME Get Computer Name
GET_DESKTOP_DIRECTORY Get Desktop Directory
GET_DRIVE_FREE_SPACE_MEGABYTE Returns Drive’s Free Space in MB
GET_DRIVE_TYPE Get Drive Type
GET_FILE_SEPARATOR Get File Separator
GET_FREE_SPACE_FOR_DRIVE Returns Free Space on Drive
GET_GUI_PROPERTIES Returns Stream of GUI Properties
GET_GUI_VERSION Returns the Upload/Download Paths
GET_IP_ADDRESS Gets IP Address
GET_LF_FOR_DESTINATION_GUI Destinations’ SAP GUI Line Feed
GET_PLATFORM Return Operating System Platform
GET_PROPERTY Get_Property
GET_PROPERTY_GUI_OBJECT GetProperty rc=GUI_OBJECT, You Can Check obj With ‘IS_VALID’
GET_SAPGUI_DIRECTORY Gets GUI Start Directory
GET_SAPGUI_WORKDIR Returns ..\\Documents and Settings\DNR\SAPWorkdir (Example)
GET_SAPLOGON_ENCODING Return to saplogon Codepage
GET_SYSTEM_DIRECTORY Get System Directory
GET_TEMP_DIRECTORY Returns the Path to the TEMP Directory
GET_UPLOAD_DOWNLOAD_PATH returns the upload/download paths
GET_USER_NAME Get User Name
GET_WINDOWS_DIRECTORY Get Windows Directory
在执行CL_GUI_FRONTEND_SERVICES的一些方法后,要加一个CALL METHOD CL_GUI_CFW=>FLUSH . 否则取不到数据!