SAP与AI大模型-ST22集成AI
CL_GUI_ALV_GRID,经debug发现在方法INIT_CONTEXT_MENU中可以增强实现右键初始化的内容,显示隐式增强,创建一个增强点,输入代码,该类是SAP全局的框架,针对ST22使用的话,需要加事务码的判断才行。触发事件,经debug发现,在方法EXECUTE_FCODE下可以添加FCODE事件处理,同样显示隐式增强,创建增强,输入代码即可。当系统出现异常报错时,ST22中有各种
·
当系统出现异常报错时,ST22中有各种异常信息,可以使用AI协助BASIS完成问题排查,提供解决问题的方法。
效果展示:
解答的精准度取决于集成AI大模型的训练能力。

程序实现:
在GUI界面右键添加选项,这个是ALV框架的一部分,SAP中使用的是类CL_GUI_ALV_GRID,经debug发现在方法INIT_CONTEXT_MENU中可以增强实现右键初始化的内容,显示隐式增强,创建一个增强点,输入代码,该类是SAP全局的框架,针对ST22使用的话,需要加事务码的判断才行。
IF sy-tcode = 'ST22'.
DATA: L_TEXT TYPE GUI_TEXT.
READ TABLE it_toolbar_excluding INTO DATA(ls_toolbar_excluding) WITH KEY table_line = '&ZAI'.
IF sy-subrc NE 0.
l_text = '访问AI平台'.
CALL METHOD m_cl_context_menu->add_function
EXPORTING
fcode = '&ZAI'
TEXT = l_text. "Copy
ENDIF.
ENDIF.
触发事件,经debug发现,在方法EXECUTE_FCODE下可以添加FCODE事件处理,同样显示隐式增强,创建增强,输入代码即可。
ENHANCEMENT 2 ZEN_ASK_AI. "active version
CASE i_ucomm.
WHEN '&ZAI' .
DATA:ls_row_no TYPE lvc_s_roid.
CALL METHOD me->get_current_cell
IMPORTING es_row_no = ls_row_no.
IF sy-tcode = 'ST22'.
DATA:LV_ST22_INFO TYPE STRING,
lv_answer TYPE string,
LS_MT_DATA TYPE LVC_S_DATA.
CLEAR:LV_ST22_INFO.
LV_ST22_INFO = '我是一名SAP BASIS顾问,使用事务码ST22查询到以下报错,'.
READ TABLE mt_data INTO LS_MT_DATA WITH KEY ROW_POS = ls_row_no-ROW_ID
col_pos = 7.
IF sy-subrc = 0.
CONCATENATE LV_ST22_INFO '运行时错误:' LS_MT_DATA-VALUE ';'
INTO LV_ST22_INFO.
CLEAR LS_MT_DATA.
ENDIF.
READ TABLE mt_data INTO LS_MT_DATA WITH KEY ROW_POS = ls_row_no-ROW_ID
col_pos = 8.
IF sy-subrc = 0.
CONCATENATE LV_ST22_INFO '例外:' LS_MT_DATA-VALUE ';' INTO LV_ST22_INFO.
CLEAR LS_MT_DATA.
ENDIF.
READ TABLE mt_data INTO LS_MT_DATA WITH KEY ROW_POS = ls_row_no-ROW_ID
col_pos = 8.
IF sy-subrc = 0.
CONCATENATE LV_ST22_INFO '程序名:' LS_MT_DATA-VALUE '。'
INTO LV_ST22_INFO.
CLEAR LS_MT_DATA.
ENDIF.
CONCATENATE LV_ST22_INFO ',以上问题请用中文回答,谢谢' INTO LV_ST22_INFO.
"调用AI接口
CALL FUNCTION 'ZINT_AI_POST'
EXPORTING
input_str = LV_ST22_INFO
IMPORTING
output_str = lv_answer.
SUBMIT zcall_ai WITH p_input = LV_ST22_INFO WITH p_input2 = lv_answer AND RETURN.
ENDIF.
ENDCASE.
ENDENHANCEMENT.
更多推荐

所有评论(0)