本文档是关于SAP集成AI的一个实操,集成百炼大模型平台-通义千问,在云平台上注册获取密钥即可调用接口。
本文包括问询平台,F1工具栏集成AI,GUI编辑器集成AI等实操。
100屏幕逻辑流
PROCESS BEFORE OUTPUT.
**********************************************************************
* 屏幕显示前
* 设置工具栏,标题
**********************************************************************
MODULE pbo.
PROCESS AFTER INPUT.
**********************************************************************
* 命令相应
**********************************************************************
** 各屏幕实现
MODULE pai.
**********************************************************************
* Exit 命令相应/
**********************************************************************
** 各屏幕实现
* MODULE user_exit_9000 AT EXIT-COMMAND.
问询程序实现
*&---------------------------------------------------------------------*
*& Report ZTEXT_DEMO
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ztext_demo.
DATA: ok_code TYPE sy-ucomm.
DATA: lv_input TYPE string,
lv_output TYPE string.
PARAMETERS: p_input1 TYPE string NO-DISPLAY,
p_input2 TYPE string NO-DISPLAY.
CLASS lcl_hlp DEFINITION.
PUBLIC SECTION.
TYPES: BEGIN OF t_source,
line TYPE char255,
END OF t_source.
TYPES: tt_source TYPE STANDARD TABLE OF t_source WITH DEFAULT KEY.
DATA:
results TYPE string,
source_editor TYPE REF TO cl_gui_textedit,
dest_editor TYPE REF TO cl_gui_textedit,
abap_editor TYPE REF TO cl_gui_abapedit.
METHODS: create_source_editor.
METHODS: create_dest_editor.
METHODS: f_query.
METHODS: pai IMPORTING VALUE(i_okcode) TYPE sy-ucomm.
ENDCLASS.
START-OF-SELECTION.
DATA(hlp) = NEW lcl_hlp( ).
CALL SCREEN 0100.
*&---------------------------------------------------------------------*
*& Module PBO OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE pbo OUTPUT.
SET PF-STATUS 'STATUS_0100'.
SET TITLEBAR 'TITLE' WITH 'AI问询平台'.
hlp->create_source_editor( ).
hlp->create_dest_editor( ).
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module PAI INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE pai INPUT.
hlp->pai( ok_code ).
ENDMODULE.
CLASS lcl_hlp IMPLEMENTATION.
METHOD create_source_editor.
IF source_editor IS INITIAL.
source_editor = NEW #( parent = NEW cl_gui_docking_container( side = cl_gui_docking_container=>dock_at_top
no_autodef_progid_dynnr = abap_true
extension = 150 ) ) .
ENDIF.
*将输入信息返回倒界面上
IF p_input1 IS NOT INITIAL.
CALL METHOD source_editor->set_textstream
EXPORTING
text = p_input1
EXCEPTIONS
OTHERS = 1.
ENDIF.
ENDMETHOD.
METHOD create_dest_editor.
IF dest_editor IS INITIAL.
dest_editor = NEW #( parent = NEW cl_gui_docking_container( side = cl_gui_docking_container=>dock_at_bottom
no_autodef_progid_dynnr = abap_true
extension = 320 ) ) .
ENDIF.
"隐藏输出文本框菜单栏
CALL METHOD dest_editor->set_toolbar_mode
EXPORTING
toolbar_mode = 0
EXCEPTIONS
error_cntl_call_method = 1
invalid_parameter = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
*将输入信息返回倒界面上
IF p_input2 IS NOT INITIAL.
CALL METHOD dest_editor->set_textstream
EXPORTING
text = p_input2
EXCEPTIONS
OTHERS = 1.
ENDIF.
ENDMETHOD.
METHOD f_query.
DATA: source TYPE soli_tab.
source_editor->get_text_as_stream(
IMPORTING
text = source
EXCEPTIONS
error_cntl_call_method = 1
OTHERS = 3
).
IF sy-subrc EQ 0.
IF source IS INITIAL.
MESSAGE s001(00) WITH '请输入查询信息' DISPLAY LIKE 'E' ##MG_MISSING ##NO_TEXT.
RETURN.
ENDIF.
lv_input = cl_bcs_convert=>txt_to_string( it_soli = source ).
*调用阿里AI接口
CALL FUNCTION 'ZINT_AI_POST'
EXPORTING
pi_input = lv_input
IMPORTING
pe_output = lv_output.
*将接口返回信息返回倒界面上
CALL METHOD dest_editor->set_textstream
EXPORTING
text = lv_output
EXCEPTIONS
OTHERS = 1.
ENDIF.
ENDMETHOD.
METHOD pai.
i_okcode = sy-ucomm.
CLEAR sy-ucomm.
CASE i_okcode.
WHEN 'BACK' .
LEAVE TO SCREEN 0. "返回上一个屏幕
WHEN 'CANCEL'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE PROGRAM. "返回程序
WHEN 'BUT1'.
f_query( ).
ENDCASE.
CLEAR: i_okcode.
ENDMETHOD.
ENDCLASS.
*GUI Texts
*----------------------------------------------------------
* TITLE --> AI问询平台
* TITLE --> AI问询平台
创建AI接口函数
接口中需要添加AI平台的授权密钥,和正常接口调用是一致的
CALL METHOD LC_HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = 'Authorization'
VALUE = 'sk-c8***********************'.
详细代码
FUNCTION ZINT_AI_POST.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(PI_INPUT) TYPE STRING OPTIONAL
*" VALUE(PI_FLAG) TYPE CHAR1 OPTIONAL
*" EXPORTING
*" VALUE(PE_OUTPUT) TYPE STRING
*" TABLES
*" PT_OUTPUT STRUCTURE ZAIS1001
*"----------------------------------------------------------------------
DATA: LV_LEN TYPE I, "发送报文长度
LV_URL TYPE STRING, "接口地址
LC_HTTP_CLIENT TYPE REF TO IF_HTTP_CLIENT, "http客户端
LV_AUTHORIZATION TYPE STRING,
LV_CODE TYPE I, "HTTP 返回状态
LV_REASON TYPE STRING. " HTTP 状态描述
DATA: L_SYSUBRC TYPE I,
L_ERROR_TEXT TYPE STRING.
DATA: LV_TOKEN TYPE STRING.
DATA: L_JSON_DATA TYPE STRING,
L_MSG TYPE STRING,
LV_AUTH TYPE STRING.
DATA: I_REQUEST TYPE STRING,
E_RESPONSE TYPE STRING.
CLEAR: LV_URL,I_REQUEST.
"输入结构
DATA: BEGIN OF LS_INPUT_MES,
ROLE TYPE STRING,
CONTENT TYPE STRING,
END OF LS_INPUT_MES.
DATA: BEGIN OF LS_INPUT,
MODEL TYPE STRING,
MESSAGES LIKE TABLE OF LS_INPUT_MES,
END OF LS_INPUT.
DATA: LS_REQ LIKE LS_INPUT_MES.
"输出结构
DATA: BEGIN OF T_MESSAGE3,
ROLE TYPE STRING,
CONTENT TYPE STRING,
END OF T_MESSAGE3.
DATA: BEGIN OF T_CHOICES2,
MESSAGE LIKE T_MESSAGE3,
END OF T_CHOICES2.
DATA: BEGIN OF LS_OUTPUT,
CHOICES LIKE TABLE OF T_CHOICES2,
END OF LS_OUTPUT.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
TEXT = '正在通过AI获取数据......'.
LS_INPUT-MODEL = 'qwen-plus'.
LS_REQ-ROLE = 'user'.
LS_REQ-CONTENT = PI_INPUT.
APPEND LS_REQ TO LS_INPUT-MESSAGES.
I_REQUEST = /UI2/CL_JSON=>SERIALIZE( DATA = LS_INPUT
PRETTY_NAME = 'L' ).
LV_URL = 'https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions'.
*****创建http服务
CALL METHOD CL_HTTP_CLIENT=>CREATE_BY_URL
EXPORTING
URL = LV_URL
IMPORTING
CLIENT = LC_HTTP_CLIENT
EXCEPTIONS
ARGUMENT_NOT_FOUND = 1
PLUGIN_NOT_ACTIVE = 2
INTERNAL_ERROR = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
INTO L_MSG
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
EXIT.
ENDIF.
CALL METHOD LC_HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = 'Content-Type'
VALUE = 'application/JSON; charset=utf-8'.
LV_AUTH = 'sk-**************************'.
CALL METHOD LC_HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = 'Authorization'
VALUE = LV_AUTH.
CALL METHOD LC_HTTP_CLIENT->REQUEST->SET_METHOD( 'POST' ).
"发送前数据准备
LV_LEN = STRLEN( I_REQUEST ).
CALL METHOD LC_HTTP_CLIENT->REQUEST->SET_CDATA
EXPORTING
DATA = I_REQUEST
OFFSET = 0
LENGTH = LV_LEN.
*****发送http服务
CALL METHOD LC_HTTP_CLIENT->SEND
EXCEPTIONS
HTTP_COMMUNICATION_FAILURE = 1
HTTP_INVALID_STATE = 2
HTTP_PROCESSING_FAILED = 3
HTTP_INVALID_TIMEOUT = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
INTO L_MSG
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
EXIT.
ENDIF.
*****接收返回数据
CALL METHOD LC_HTTP_CLIENT->RECEIVE
EXCEPTIONS
HTTP_COMMUNICATION_FAILURE = 1
HTTP_INVALID_STATE = 2
HTTP_PROCESSING_FAILED = 3
OTHERS = 4.
CLEAR E_RESPONSE.
E_RESPONSE = LC_HTTP_CLIENT->RESPONSE->GET_CDATA( ).
"获取返回的状态信息
CLEAR: LV_CODE, LV_REASON.
CALL METHOD LC_HTTP_CLIENT->RESPONSE->GET_STATUS
IMPORTING
CODE = LV_CODE
REASON = LV_REASON.
/UI2/CL_JSON=>DESERIALIZE( EXPORTING JSON = E_RESPONSE
CHANGING DATA = LS_OUTPUT ).
IF LV_CODE = '200'.
SORT LS_OUTPUT-CHOICES[].
READ TABLE LS_OUTPUT-CHOICES[] INDEX 1 INTO DATA(LS_OUT) .
IF SY-SUBRC = 0.
PE_OUTPUT = LS_OUT-MESSAGE-CONTENT.
ENDIF.
ELSE.
PE_OUTPUT = '调用失败!'.
ENDIF.
IF PI_FLAG = 'Y'.
DATA: ES_OUTPUT LIKE ZAIS1001.
DATA: LT_TABLE TYPE TABLE OF STRING.
DATA: LV_ROW_NUMBER TYPE I,
LV_ROW_NUMBER_BEGIN TYPE I,
LV_ROW_NUMBER_END TYPE I.
SPLIT PE_OUTPUT AT CL_ABAP_CHAR_UTILITIES=>NEWLINE INTO TABLE LT_TABLE.
LV_ROW_NUMBER_BEGIN = 0.
LV_ROW_NUMBER_END = 0.
LOOP AT LT_TABLE INTO DATA(LS_TABLE).
LV_ROW_NUMBER = SY-TABIX.
IF LS_TABLE CS 'report' OR LS_TABLE CS 'REPORT'.
LV_ROW_NUMBER_BEGIN = LV_ROW_NUMBER.
EXIT.
ENDIF.
ENDLOOP.
LV_ROW_NUMBER_BEGIN = LV_ROW_NUMBER_BEGIN + 1.
LOOP AT LT_TABLE INTO LS_TABLE FROM LV_ROW_NUMBER_BEGIN.
ES_OUTPUT-TEXT = LS_TABLE.
APPEND ES_OUTPUT TO PT_OUTPUT.
ENDLOOP.
ENDIF.
"关闭接口
CALL METHOD LC_HTTP_CLIENT->CLOSE.
ENDFUNCTION.
当用户遇到系统报错,经常会拿报错信息(包括对消息类,消息号和消息内容)在网上搜索原因和解决方案,那将AI集成到F1工具栏实现一键查询,是个不错的选择。
获取到的结果
METHOD SET_BUTTON_STATE .
DATA: L_APPL TYPE EPSSAPPL,
L_EPSS_TOOLBAR TYPE REF TO CL_EPSS_TOOLBAR,
L_INFODOC TYPE EPSSDOC,
L_ENABLED type c.
* Get Toolbar handle
CALL METHOD EPSS->GIVE_APPLICATIONS
EXPORTING
APPLID = 'TOOLBAR'
IMPORTING
CONTROL = L_APPL-REF.
*
L_EPSS_TOOLBAR ?= L_APPL-REF.
*
CALL METHOD EPSS->GIVE_APPLICATIONS
EXPORTING
APPLID = 'EPSSHTML'
IMPORTING
CONTROL = L_APPL-REF.
* CHECK SY-SUBRC = 0.
*
* CALL METHOD L_APPL-REF->('GIVE_ACTUAL_DOCUMENT_INFO')
* IMPORTING
* INFODOC = L_INFODOC.
*
* CALL FUNCTION 'HELP_CUST_CHECK'
* EXPORTING
* HELP_INFOS = L_INFODOC-HELP_INFO
* IMPORTING
* ENABLED = L_ENABLED.
CALL METHOD L_EPSS_TOOLBAR->('SET_BUTTON_STATE')
EXPORTING
ENABLED = 'X' "L_ENABLED
CHECKED = SPACE
FCODE = 'ZAI'.
*
ENDMETHOD.
METHOD handle_event .
*
DATA: w_appl TYPE epssappl,
l_infodoc TYPE epssdoc,
l_object TYPE dokil-object.
DATA: ztcode TYPE syst_tcode.
DATA: zmsg TYPE text300.
DATA: zmsgtype TYPE epssmode.
DATA: lv_query TYPE string.
DATA: lv_answer TYPE string.
*
CALL METHOD epss->give_applications
EXPORTING
applid = 'EPSSHTML'
IMPORTING
control = w_appl-ref.
*
IF sy-subrc EQ 0.
CALL METHOD w_appl-ref->('GIVE_ACTUAL_DOCUMENT_INFO')
IMPORTING
infodoc = l_infodoc.
ENDIF.
* CALL FUNCTION 'HELP_CUST_SHOW'
* EXPORTING
* HELP_INFOS = L_INFODOC-HELP_INFO.
IF l_infodoc-help_info-messageid IS NOT INITIAL AND l_infodoc-help_info-messagenr IS NOT INITIAL.
CALL FUNCTION 'DOCU_OBJECT_NAME_CONCATENATE'
EXPORTING
docu_id = 'NA'
element = l_infodoc-help_info-messageid
addition = l_infodoc-help_info-messagenr
IMPORTING
object = l_object.
zmsg = l_infodoc-help_info-message. "<(>输入物料类型(>)
zmsg = shift_right( val = zmsg sub = |<)>| ).
zmsg = shift_left( val = zmsg sub = |<(>| ).
zmsgtype = l_infodoc-msgty.
ztcode = sy-tcode.
* LS_SOURCE_CODE-PROCGRAM_NAME
ENDIF.
lv_query = |我是一名SAP顾问,当我在运行事务码{ ztcode }的时候遇到报错,消息类型是:{ zmsgtype },消息号是{ l_object },消息内容是:{ zmsg },请告诉我是什么原因导致的并给出解决方案。|.
*调用阿里AI接口
CALL FUNCTION 'ZINT_AI_POST'
EXPORTING
pi_input = lv_query
IMPORTING
pe_output = lv_answer.
SUBMIT Z40535_DEMO WITH P_INPUT1 = lv_query WITH P_INPUT2 = lv_answer AND RETURN.
ENDMETHOD.
AI生成结果
*&---------------------------------------------------------------------*
*& Report ZTEXT_SE38
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z40535_SE38.
*用ABAP写一个简单的物料查询报表,输入参数是物料号
*输出ALV字段位物料号,创建日期,基本计量单位
TABLES: mara, makt.
* 定义内部表和工作区
DATA: gt_materials TYPE TABLE OF mara,
gs_material TYPE mara,
gt_makt TYPE TABLE OF makt,
gs_makt TYPE makt,
gt_final TYPE TABLE OF zmaterial_list,
gs_final TYPE zmaterial_list.
* 定义字段符号
FIELD-SYMBOLS: <fs_final> TYPE zmaterial_list.
* 定义自定义结构类型 (在DD04T中定义)
TYPES: BEGIN OF ty_material_list,
matnr TYPE mara-matnr,
ernam TYPE mara-ernam,
crdat TYPE mara-crdat,
meins TYPE makt-meins,
END OF ty_material_list.
* 定义参数:物料号
PARAMETERS: p_matnr TYPE mara-matnr OBLIGATORY.
* 选择物料主数据 (MARA)
SELECT * FROM mara INTO CORRESPONDING FIELDS OF TABLE @gt_materials
WHERE matnr = @p_matnr.
* 检查是否有数据
IF sy-subrc = 0.
LOOP AT gt_materials INTO gs_material.
" 获取物料描述 (MAKT)
SELECT SINGLE * FROM makt INTO CORRESPONDING FIELDS OF gs_makt
WHERE matnr = gs_material-matnr AND spras = sy-langu.
IF sy-subrc = 0.
" 填充最终输出表
CLEAR gs_final.
gs_final-matnr = gs_material-matnr.
gs_final-crdat = gs_material-crdat.
gs_final-meins = gs_makt-meins.
APPEND gs_final TO gt_final.
ENDIF.
ENDLOOP.
ENDIF.
* 如果没有找到物料,则提示错误信息
IF sy-subrc <> 0.
MESSAGE 'No material found with the given Material Number' TYPE 'E'.
ELSE.
* * 显示 ALV 报表
PERFORM display_alv USING gt_final.
ENDIF.
*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV
*&---------------------------------------------------------------------*
FORM display_alv USING et_materials TYPE TABLE OF zmaterial_list.
DATA: lt_fieldcat TYPE lvc_t_fcat,
ls_fieldcat TYPE lvc_s_fcat.
* * 创建字段目录
PERFORM build_fieldcatalog CHANGING lt_fieldcat.
* * 调用 ALV 函数模块
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
it_fieldcat = lt_fieldcat[]
TABLES
t_outtab = et_materials
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " DISPLAY_ALV
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
FORM build_fieldcatalog CHANGING ct_fieldcat TYPE lvc_t_fcat.
DATA: ls_fieldcat TYPE lvc_s_fcat.
* * 物料号
ls_fieldcat-fieldname = 'MATNR'.
ls_fieldcat-seltext_l = 'Material Number'.
APPEND ls_fieldcat TO ct_fieldcat.
* * 创建日期
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'CRDAT'.
ls_fieldcat-seltext_l = 'Creation Date'.
APPEND ls_fieldcat TO ct_fieldcat.
* * 计量单位
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'MEINS'.
ls_fieldcat-seltext_l = 'Base Unit of Measure'.
APPEND ls_fieldcat TO ct_fieldcat.
ENDFORM. " BUILD_FIELDCATALOG
*### 注意事项:
*1. **自定义结构类型**:确保你已经在数据字典(SE11)中定义了`ZMATERIAL_LIST`结构类型,包含`MATNR`, `CRDAT`, 和`MEINS`字段。
*2. **语言支持**:此示例假设使用当前用户的语言设置(`sy-langu`)。如果你需要支持多语言,请根据需要调整。
*3. **异常处理**:添加适当的异常处理以确保程序的健壮性。
*
*这个程序将允许用户输入一个物料号,并显示与该物料号相关的物料号、创建日期和基本计量单位。如果找不到匹配的物料,则会显示一条错误消息。
增强代码
*$*$-Start: (1)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 1 ZBC_ADD_AI. "active version
PERFORM add_menu IN PROGRAM zabap_sedi_core_prog IF FOUND USING menu.
IF sy-tcode = 'SE38'.
DATA: lo_sub_menu TYPE REF TO cl_ctmenu.
"创建子菜单对象
CREATE OBJECT lo_sub_menu.
"在子菜单中添加菜单选项
CALL METHOD lo_sub_menu->add_function
EXPORTING
fcode = 'ZAI1'
text = '通义千问'.
CALL METHOD lo_sub_menu->add_function
EXPORTING
fcode = 'ZAI2'
text = 'DeepSeek'.
CALL METHOD lo_sub_menu->add_function
EXPORTING
fcode = 'ZAI3'
text = 'ChatGPT'.
"添加分隔符
CALL METHOD MENU->add_separator.
"将子菜单添加到主菜单
CALL METHOD menu->add_submenu
EXPORTING
menu = lo_sub_menu
text = 'AI生成'.
ENDIF.
ENDENHANCEMENT.
CALLFUNCTION 'EXECUTE_FUNCTION'
EXPORTING
c_editor = c_editor
fcode_i = 'SETT'
TABLES
content = content.
该方法会将后台文本更新到SE38编辑器中显示。
当然这里还添加了一些校验只有可编辑转台可以点代码生成(通过edit-app_disp = 'A'.来判断,DEBUG发现)。
此外还有获取鼠标选中的行文本起始行和结尾行,为读取CONTENT[]拼接后作为AI接口输入请求。可以通过ZINT_AI_POST_OUT->get_selection_pos来获取鼠标选中起始行与结尾行。
ELSE. -> ENDIF. 之间
*{ INSERT S4HK907560 2
IF fcode(3) = 'ZAI'.
TRY.
IF edit-app_disp = 'A'.
IF fcode = 'ZAI1'.
DATA: text_from_line TYPE i.
DATA: text_end_line TYPE i.
DATA: line_text TYPE string.
DATA: lv_input TYPE string.
DATA: lv_output TYPE string.
DATA: ls_output LIKE zais1001.
DATA: lt_output LIKE TABLE OF zais1001.
DATA: abapref TYPE REF TO cl_gui_abapedit.
"获取光标选中的请求信息
IF c_editor IS INSTANCE OF cl_gui_abapedit.
abapref ?= c_editor.
ENDIF.
abapref->get_selection_pos( IMPORTING from_line = text_from_line to_line = text_end_line ).
LOOP AT content INTO DATA(ls_contect) FROM text_from_line to text_end_line.
line_text = ls_contect.
IF line_text(1) = '*'.
SHIFT line_text BY 1 PLACES LEFT.
ENDIF.
lv_input = lv_input && line_text.
ENDLOOP.
"调用阿里AI接口
CALL FUNCTION 'ZINT_AI_POST'
EXPORTING
PI_INPUT = lv_input
PI_FLAG = 'Y'
IMPORTING
PE_OUTPUT = lv_output
TABLES
PT_OUTPUT = lt_output.
"将返回信息写入到界面上
LOOP AT lt_output INTO ls_output.
APPEND ls_output-text TO content.
ENDLOOP.
CALL FUNCTION 'EXECUTE_FUNCTION'
EXPORTING
C_EDITOR = c_editor
fcode_i = 'SETT'
TABLES
CONTENT = content.
ELSE.
MESSAGE '该AI暂未接入' TYPE 'S' DISPLAY LIKE 'W'.
ENDIF.
ELSE.
MESSAGE '当前编辑器为只读状态' TYPE 'S' DISPLAY LIKE 'W'.
ENDIF.
CATCH CX_ROOT.
MESSAGE '调用AI失败' TYPE 'S' DISPLAY LIKE 'E'.
ENDTRY.
*} INSERT
rcode = fcode.
CLEAR fcode.
MESSAGE s598 WITH rcode.
EXIT.
*{ INSERT S4HK907560 1
ENDIF.
*} INSERT
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。