1. SAP SM66增强版本解析:从标准工具到效能提升利器
作为SAP系统管理员,每天早上的第一件事就是打开SM66查看全系统进程状态。这个内置的工作进程监控工具就像系统的"心电图",能直观展示每个应用服务器的负载分配、用户会话和后台作业运行情况。但用久了就会发现,标准SM66的功能实在太过基础——无法保存筛选条件、缺少批量操作选项、历史数据对比困难,每次排查问题都要重复进行大量手工操作。
最近在客户现场实施了一套SM66增强版本,通过ABAP开发扩展了原工具的核心功能。现在不仅能一键导出所有异常进程的详细信息,还能设置自动监控规则,当出现长时间运行的RFC调用或CPU占用过高的会话时直接触发邮件告警。这个改造让原本需要半小时的日常巡检缩短到5分钟完成,解放了运维团队大量生产力。
2. 标准SM66的功能局限与增强方向
2.1 原生日志分析工具的痛点清单
标准SM66提供的基础功能包括:
- 实时显示所有应用服务器的DIA/BTC/SPO工作进程
- 查看每个进程正在执行的程序、用户和耗时
- 基本的进程终止(Delete)和日志查看(Log)操作
但在实际运维中会遇到诸多不便:
- 筛选条件无法保存:每次都要重新输入服务器名、用户名等条件
- 批量操作缺失:无法同时终止多个异常进程
- 历史记录空白:进程结束后无法追溯之前的运行状态
- 预警机制薄弱:只能被动查看,无法主动发现异常
- 数据导出困难:需要手动截图或复制表格内容
2.2 增强版本的核心改进点
基于这些痛点,我们设计的增强功能包括:
| 功能模块 | 技术实现方式 | 业务价值 |
|---|---|---|
| 条件模板保存 | 使用Z表存储用户自定义筛选条件 | 减少90%的重复操作时间 |
| 批量进程管理 | 扩展ALV表格的多选功能+后台批量处理 | 同时处理多个异常会话效率提升5倍 |
| 运行历史归档 | 开发定时Job将SM66数据存档到ZSM66_HIST | 支持问题回溯和性能趋势分析 |
| 智能监控告警 | 基于后台Job的周期性检查+ALERT框架通知 | 主动发现CPU超限/长事务等异常情况 |
| Excel导出增强 | OLE自动化生成带格式的进程分析报告 | 直接用于运维周报和问题记录 |
3. 关键增强功能的技术实现
3.1 智能筛选模板的ABAP实现
通过CL_SALV_TABLE创建可配置的筛选面板:
abap复制" 保存用户自定义条件到Z表
METHOD save_filter_template.
DATA: ls_filter TYPE zsm66_filter.
ls_filter-uname = sy-uname.
ls_filter-servers = p_server. " 应用服务器范围
ls_filter-wptypes = p_wptype. " 进程类型筛选
ls_filter-min_runtime = p_runtime. " 最小运行时间
MODIFY zsm66_filter FROM ls_filter.
MESSAGE '筛选条件已保存' TYPE 'S'.
ENDMETHOD.
3.2 批量操作的安全控制逻辑
为防止误杀关键进程,增加了双重确认机制:
- 首次选择进程时检查权限对象S_ADMI_FCD(值'JOBADM')
- 执行前弹出对话框显示即将终止的所有进程详情
- 记录操作日志到ZSM66_AUDIT表备查
重要提示:批量终止操作会跳过属于SAP*、DDIC等特权用户的进程,避免系统故障
3.3 历史数据分析的CDS视图
创建核心分析视图供BW/BO使用:
sql复制@AbapCatalog.sqlViewName: 'ZSM66HISTVIEW'
define view Z_SM66_History_Analysis as select from zsm66_hist {
key server_name,
key wp_id,
key start_time,
end_time,
runtime_seconds,
user_name,
program_name,
@Semantics.currencyCode: true
currency,
@Semantics.amount.currencyCode: 'currency'
memory_used
}
4. 典型使用场景与避坑指南
4.1 月末结账期间的进程监控
配置示例:
- 创建名为"MONTH_CLOSE"的监控模板
- 服务器范围:生产环境所有APP服务器
- 进程类型:DIA+BTC
- 阈值设置:CPU>70% 或 运行>30分钟
- 设置每5分钟自动检查的后台Job
- 告警接收人:FICO运维团队DL
实际案例:某次月结时通过该方案提前发现了FAGL_FCV报表进程堆积,及时扩容避免了系统阻塞。
4.2 常见问题排查技巧
问题现象:某个用户会话长时间显示"Running"但无实际进展
排查步骤:
- 在增强版中右键选择"Technical Analysis"
- 查看ST05跟踪是否启用了SQL跟踪
- 检查SM12是否有该用户的锁条目
- 通过ST22查看是否有隐式dump发生
问题现象:批量导出时Excel文件损坏
解决方案:
- 检查GUI本地目录剩余空间 >500MB
- 在事务码SICF中激活ZSM66_EXPORT服务
- 改用"Download as CSV"替代OLE导出
5. 扩展开发建议与系统集成
5.1 与Solution Manager的集成
通过RFC调用SAP标准接口将关键事件同步到SolMan:
abap复制CALL FUNCTION 'SOLMAN_EVENT_CREATE'
EXPORTING
event_class = 'ZSM66_ALERT'
event_type = ls_alert->event_type
short_text = ls_alert->short_text
EXCEPTIONS
comm_failure = 1.
IF sy-subrc = 0.
" 更新本地告警状态为已同步
ENDIF.
5.2 移动端适配方案
基于Fiori Elements开发适配版本:
- 使用CDS视图作为数据源
- 通过注解实现移动端特殊控制:
xml复制<Annotation Term="UI.PresentationVariant">
<Record>
<PropertyValue Property="SortOrder">
<Collection>
<Record Type="UI.SortOrder">
<PropertyValue Property="Property" PropertyPath="RUNTIME_SECONDS"/>
<PropertyValue Property="Descending" Bool="true"/>
</Record>
</Collection>
</PropertyValue>
</Record>
</Annotation>
6. 性能优化实测数据
在S4HANA 2022环境中的测试对比:
| 操作类型 | 标准SM66耗时 | 增强版耗时 | 提升效果 |
|---|---|---|---|
| 筛选10个服务器 | 12.8秒 | 1.2秒 | 91%↓ |
| 导出100条记录 | 手动复制45秒 | 自动导出3秒 | 93%↓ |
| 发现长事务 | 需人工检查 | 自动告警 | 100%↓ |
| 历史数据查询 | 不可用 | 0.5秒响应 | N/A |
这套增强方案已在3个客户环境稳定运行超过18个月,平均每月帮助节省40+人工小时。对于计划升级到SAP新版的企业,建议在测试环境先验证兼容性,特别是检查与新一代工作进程管理服务(如SM_WORKCENTER)的交互是否正常。
