以下是关于SAP事务代码SM58的详细说明,结合其在系统中的功能、应用场景及操作方法:
一、SM58的核心功能
SM58是SAP系统中用于管理和监控异步RFC(Remote Function Call)错误日志的关键事务代码。其主要功能包括:
- 错误日志查看:显示异步RFC调用的执行状态(成功/失败)及相关错误信息。
- 手动重试处理:允许用户针对失败的RFC条目逐条或批量重新执行。
- 状态管理:支持重置RFC作业状态(如取消挂起的任务或标记已完成的任务)。
二、常见应用场景与操作步骤
1. 数据传输异常排查
当系统间数据传输失败(例如WMS收货凭证未同步到SAP时),通过以下步骤排查:
- 输入查询条件:在SM58界面中指定时间范围、目标系统(Destination)、用户或状态筛选失败条目。
- 分析错误日志:查看具体报错信息(如
Commit fault
或HTTP访问异常
),定位问题根源。 - 执行重试:
- 单个条目:选中条目后点击 Execute LUW 手动重试。
- 批量处理:使用事务代码 RSARFCEX 批量执行失败任务。
2. 错误类型与处理建议
- 临时性错误(如网络中断):直接重试。
- 数据一致性错误(如IDoc结构异常):需检查源系统数据格式。
- 系统配置问题(如RFC目标未激活):通过 SM59 检查目标系统配置。
三、相关事务代码与工具
SM58通常需与其他RFC管理工具配合使用:
- SM59:维护RFC目标系统配置。
- SMQ1/SMQ2:监控出站/入站队列的RFC任务。
- ST22:查看ABAP运行时错误日志,辅助分析复杂问题。
四、最佳实践
- 定期监控:在高峰期或关键业务节点后检查SM58日志。
- 错误分类:根据错误频率和类型制定处理优先级(如高频错误优先排查配置问题)。
- 自动化处理:通过后台作业或脚本定期调用 RSARFCEX 减少人工干预。
五、注意事项
- 权限控制:SM58涉及系统间通信,需限制敏感操作权限。
- 日志保留:定期归档旧日志(通过SM58界面删除或归档功能)以避免性能问题。
如需进一步了解RFC机制或配置细节,可参考事务代码 SM59 或系统文档。
六、程序实现自动重启任务:
TABLES:arfcsstate.
DATA: BEGIN OF acttid.
INCLUDE STRUCTURE arfctid.
DATA: END OF acttid.
DATA:
td_arfc TYPE TABLE OF arfcsstate,
th_arfc TYPE arfcsstate.
获得有错误的队列
SELECT *
INTO TABLE td_arfc
FROM arfcsstate
WHERE arfcstate IN ('SYSFAIL','CPICERR')
AND arfcuser IN benutzer
AND arfcdatum IN zeitraum.
IF sy-subrc <> 0.
MESSAGE '没有查询到队列' TYPE 'S'.
RETURN.
ENDIF.
然后执行
LOOP AT td_arfc INTO th_arfc WHERE arfcuser = th_arfc_user-arfcuser.
*-- T 使用 TCP/IP 启动外部程序 这种处理不了,继续下一条
SELECT COUNT(*)
FROM rfcdes
WHERE rfcdest = th_arfc-arfcdest
AND rfctype = 'T'.
IF sy-dbcnt = 1.
CONTINUE.
ENDIF.
acttid = th_arfc(24).
SUBMIT rsarfcse AND RETURN WITH tid = acttid
WITH forced = 'X'.
IF sy-subrc = 0.
"处理成功
ENDIF.
ENDLOOP.
设置后台作业定时执行即可。