SAP AI 助手智能分析系统错误 介绍 SAP ST22 事务码集成 SAP_AI助手的方法,实现运行时错误的智能分析,协助 BASIS 快速定位和解决问题。测试环境为 SAP ECC 6.0 EHP8 ,不同版本的隐式增强位置可能有差异,思路相同,自行 Debug 查找合适的增强点即可。
效果演示 集成后,在 ST22 的 ALV 列表中右键即可调用 SAP_AI助手,AI 会根据错误信息自动生成分析结果和解决建议,协助 BASIS 完成问题查询。
程序实现 实现分为两个核心步骤:添加右键菜单 和 触发事件调用 AI 。
步骤一:添加 ALV 右键菜单选项 在 ST22 的 ALV 框架中,利用类 CL_GUI_ALV_GRID 的 INIT_CONTEXT_MENU 方法,通过隐式增强添加自定义右键选项。
增强位置 :INIT_CONTEXT_MENU 方法(隐式增强)
1 2 3 4 5 6 7 8 9 10 11 12 " 增加右键按钮:调用SAP_AI助手 IF SY-cprog = 'RSSHOWRABAX'. " READ TABLE it_toolbar_excluding INTO DATA(ls_toolbar_excluding) WITH KEY table_line = '&ZAIAS'. IF sy-subrc NE 0. CALL METHOD m_cl_context_menu->add_function EXPORTING fcode = '&ZAIAS' text = text-m03. " 访问DeepSeek平台 ENDIF. ENDIF.
SY-cprog = 'RSSHOWRABAX' 确保仅在 ST22 程序中生效
&ZAIAS 为自定义 FCODE,需避免与标准功能冲突
text-m03 为文本元素,内容为”调用SAP_AI助手”
步骤二:添加菜单触发事件 在 EXECUTE_FCODE 方法中通过隐式增强,添加 &ZAIAS 的触发逻辑:获取当前行的错误信息,构造 Prompt,调用 AI 程序。
增强位置 :EXECUTE_FCODE 方法(隐式增强)
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 WHEN '&ZAIAS'. " 取得光标位置 CALL METHOD me->get_current_cell IMPORTING es_row_no = DATA(ls_row_no). " 取得错误信息(第7列) READ TABLE mt_data INTO DATA(ls_error) WITH KEY row_pos = ls_row_no-row_id col_pos = 7. IF sy-subrc <> 0. CLEAR ls_error. ENDIF. " 取得例外信息(第8列) READ TABLE mt_data INTO DATA(ls_exception) WITH KEY row_pos = ls_row_no-row_id col_pos = 8. IF sy-subrc <> 0. CLEAR ls_exception. ENDIF. " 取得程序信息(第9列) READ TABLE mt_data INTO DATA(ls_report) WITH KEY row_pos = ls_row_no-row_id col_pos = 9. IF sy-subrc <> 0. CLEAR ls_report. ENDIF. " 构造AI提示词 DATA(lv_prompt) = |我是一个SAP顾问,目前在SAP GUI系统,| & |SAP BASIS Component为755,操作系统为Linux,| & |数据库为HDB,Schema为SAPHANADB,| & |正在使用事务码ST22查询系统错误,| & |运行时错误为{ ls_error-value },| & |例外为{ ls_exception-value },| & |已取消程序为{ ls_report-value },| & |请帮我分析这个错误发生的原因,并告诉我应该怎么处理该问题?|. " 调用已开发好的SAP_AI助手程序 SUBMIT zidtr_ai_assistant AND RETURN WITH p_r15 = abap_true WITH p_prompt = lv_prompt.
col_pos 值对应 ALV 列的位置,如果 ST22 的 ALV 结构发生变化需要调整
zidtr_ai_assistant 程序需提前开发完成(参见 SAP 集成 SAP_AI助手程序调用 API 章节)
实现原理总结
flowchart LR
A[ST22 ALV 右键] --> B["选择 '调用SAP_AI助手'"]
B --> C[读取当前行错误/例外/程序]
C --> D[构造 Prompt]
D --> E["SUBMIT zidtr_ai_assistant"]
E --> F[调用 DeepSeek API]
F --> G[返回分析结果]
通过 隐式增强 在标准 ALV 框架中注入自定义菜单和行为
读取 ALV 当前行的关键字段(错误、例外、程序名)
拼装上下文 Prompt,调用独立的 SAP_AI助手程序完成分析
该模式可复用到其他需要 AI 辅助分析的事务码场景