SAP_AI助手智能分析系统错误

SAP AI 助手智能分析系统错误

💡本文背景
介绍 SAP ST22 事务码集成 SAP_AI助手的方法,实现运行时错误的智能分析,协助 BASIS 快速定位和解决问题。测试环境为 SAP ECC 6.0 EHP8,不同版本的隐式增强位置可能有差异,思路相同,自行 Debug 查找合适的增强点即可。

效果演示

集成后,在 ST22 的 ALV 列表中右键即可调用 SAP_AI助手,AI 会根据错误信息自动生成分析结果和解决建议,协助 BASIS 完成问题查询。

ST22 右键调用 SAP_AI助手 分析结果

DeepSeek AI 详细分析报告


程序实现

实现分为两个核心步骤:添加右键菜单触发事件调用 AI

步骤一:添加 ALV 右键菜单选项

在 ST22 的 ALV 框架中,利用类 CL_GUI_ALV_GRIDINIT_CONTEXT_MENU 方法,通过隐式增强添加自定义右键选项。

增强位置INIT_CONTEXT_MENU 方法(隐式增强)

INIT_CONTEXT_MENU 方法 Debug 定位

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 方法(隐式增强)

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[返回分析结果]

📋核心思路
  1. 通过 隐式增强 在标准 ALV 框架中注入自定义菜单和行为
  2. 读取 ALV 当前行的关键字段(错误、例外、程序名)
  3. 拼装上下文 Prompt,调用独立的 SAP_AI助手程序完成分析
  4. 该模式可复用到其他需要 AI 辅助分析的事务码场景