You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何强制注销通过Fiori launchpad及SAP GUI登录的所有用户

问题原因说明

你之前使用的TH_DELETE_USER仅支持注销DIAG协议的SAP GUI会话,Fiori Launchpad基于HTTP/HTTPS协议,会话存储在ICF层和安全会话上下文中,不在该函数的处理范围内,因此无法生效。

优先推荐ABAP实现方案

方案1:标准会话注销API组合使用

这是最稳定的官方推荐方案,可同时覆盖GUI和Fiori全场景用户注销:

  1. 调用函数TH_GET_USER_LIST获取当前系统所有在线用户清单,按需筛选待注销的用户范围
  2. 对每个目标用户依次执行以下操作:
    • 调用函数SUSR_USER_LOGOFF_ALL_SESSIONS,传入目标用户ID,该函数会自动终止用户所有类型的会话,包括GUI、RFC、ICF HTTP(Fiori底层依赖的会话类型)
    • 若存在残留Fiori会话,额外调用类CL_HTTP_SERVER的静态方法DELETE_ALL_SESSIONS_FOR_USER,传入用户名直接作废该用户所有ICF层的HTTP会话
    • 若系统启用了SAP Logon Ticket(MYSAPSSO2 cookie)单点登录,可更新USR02表中对应用户的PWDCHGDATE和PWDCHGTIME为当前时间戳,所有已签发的SSO票据会自动校验失效,强制用户重新登录,该操作不会修改用户实际密码

方案2:全局会话清理API

如需一次性注销所有Fiori用户,可直接调用会话管理标准函数SESS_DELETE_ALL_SESSIONS_OF_USER,传入*作为通配符即可清理所有用户的全类型会话,包含SM04、SM05、ICF会话在内的所有用户上下文,实测对Fiori用户生效。
如果是S/4HANA 1909及以上版本,可直接使用Fiori专用会话管理类CL_FIORI_LAUNCHPAD_SESSION的静态方法LOGOFF_ALL_USERS,实现更轻量化的Fiori用户批量注销

其他可选技术方案

方案1:ICF服务临时禁用

如果是执行需要全局下线用户的维护操作,可暂时禁用Fiori Launchpad对应的ICF服务节点/sap/bc/ui5_ui5/ui2/ushell,所有Fiori访问请求会直接返回403状态码,用户必须重新登录,维护完成后再恢复服务即可。

方案2:网关层拦截

如果有前置API网关、WAF或反向代理服务,可在网关层删除所有请求携带的MYSAPSSO2、SAP_SESSIONID_<SID>_<CLIENT>相关cookie,或添加认证强制刷新规则,也可快速实现所有Fiori用户的强制注销。

注意:执行批量用户注销操作前建议先备份当前在线用户会话清单,避免误操作影响正常业务;涉及表更新的操作建议放在更新任务中执行,避免锁表阻塞其他业务流程。

内容的提问来源于stack exchange,提问作者Chad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 13:36:03