是否可以保存多个文本?

2020-08-21 16:01发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我想从一些自定义控件中保存文本。

当我双击SO Comm Head的简洁列时,将出现用于编辑和保存文本(文本标题和文本项)的模式对话框。

问题是我无法保存两个文本。 这是我的代码

案例SY-UCOMM。
     当"保存"时。
 *刷新gi_dis_longtext。
       调用方法gv_text_editor-> get_text_as_r3table
 *出口
 * ONLY_WHEN_MODIFIED = TRUE
         输入
           表格= gi_dis_longtext
 * IS_MODIFIED = IS_MODIFIED
         例外情况
           error_dp = 1
           error_cntl_call_method = 2
           error_dp_create = 3
           potential_data_loss = 4
           其他= 5。

       如果sy-subrc = 0。
         刷新it_lines。
         环回gi_dis_longtext INTO gw_dis_longtext。
           it_lines-tdformat ='/'。
           it_lines-tdline = gw_dis_longtext-tdline。
           APPEND it_lines。
         结局。
       万一。

       如果it_lines []是INITIAL。
         it_lines-tdformat ='*'。
         it_lines-tdline =''。
         APPEND it_lines。
       万一。

       呼叫方法cl_gui_cfw =>冲洗
         例外情况
           cntl_system_error = 1
           cntl_error = 2
           其他= 3。


         gv_header-tdname = wa_selected-vbeln。
         gv_header-tdid ='ZCOM'。
         gv_header-tdobject ='VBBK'。
         gv_header-tdspras = sy-langu。

         清除p_name_i。
         连接wa_selected-vbeln wa_selected-posnr INTO p_name_i。
         gv_header_i-tdname = p_name_i。
         gv_header_i-tdid ='ZCOM'。
         gv_header_i-tdobject ='VBBP'。
         gv_header_i-tdspras = sy-langu。


       通话功能" SAVE_TEXT"
         出口
           客户= sy-mandt
           标头= gv_header
 * INSERT =''
           savemode_direct ='X'
 * OWNER_SPECIFIED =''
 * LOCAL_CAT =''
 *进口
 *功能=
 * NEWHEADER =
         桌子
           行数= it_lines
         例外情况
           id = 1
           语言= 2
           名称= 3
           对象= 4
           其他= 5。

       通话功能" SAVE_TEXT"
         出口
           客户= sy-mandt
           标头= gv_header_i
 * INSERT =''
           savemode_direct ='X'
 * OWNER_SPECIFIED =''
 * LOCAL_CAT =''
 *进口
 *功能=
 * NEWHEADER =
         桌子
           行数= it_lines
         例外情况
           id = 1
           语言= 2
           名称= 3
           对象= 4
           其他= 5。
      
        
       IF sy-subrc均衡器0。
         执行f_clear_data。
         带有"成功保存"的显示s398(00)的消息,类似于" S"。
         设置屏幕0。
       其他。
         消息s398(00)与'将数据保存到数据库时出错'显示类似'E'。
       ENDIF。

(35.0 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我想从一些自定义控件中保存文本。

当我双击SO Comm Head的简洁列时,将出现用于编辑和保存文本(文本标题和文本项)的模式对话框。

问题是我无法保存两个文本。 这是我的代码

案例SY-UCOMM。
     当"保存"时。
 *刷新gi_dis_longtext。
       调用方法gv_text_editor-> get_text_as_r3table
 *出口
 * ONLY_WHEN_MODIFIED = TRUE
         输入
           表格= gi_dis_longtext
 * IS_MODIFIED = IS_MODIFIED
         例外情况
           error_dp = 1
           error_cntl_call_method = 2
           error_dp_create = 3
           potential_data_loss = 4
           其他= 5。

       如果sy-subrc = 0。
         刷新it_lines。
         环回gi_dis_longtext INTO gw_dis_longtext。
           it_lines-tdformat ='/'。
           it_lines-tdline = gw_dis_longtext-tdline。
           APPEND it_lines。
         结局。
       万一。

       如果it_lines []是INITIAL。
         it_lines-tdformat ='*'。
         it_lines-tdline =''。
         APPEND it_lines。
       万一。

       呼叫方法cl_gui_cfw =>冲洗
         例外情况
           cntl_system_error = 1
           cntl_error = 2
           其他= 3。


         gv_header-tdname = wa_selected-vbeln。
         gv_header-tdid ='ZCOM'。
         gv_header-tdobject ='VBBK'。
         gv_header-tdspras = sy-langu。

         清除p_name_i。
         连接wa_selected-vbeln wa_selected-posnr INTO p_name_i。
         gv_header_i-tdname = p_name_i。
         gv_header_i-tdid ='ZCOM'。
         gv_header_i-tdobject ='VBBP'。
         gv_header_i-tdspras = sy-langu。


       通话功能" SAVE_TEXT"
         出口
           客户= sy-mandt
           标头= gv_header
 * INSERT =''
           savemode_direct ='X'
 * OWNER_SPECIFIED =''
 * LOCAL_CAT =''
 *进口
 *功能=
 * NEWHEADER =
         桌子
           行数= it_lines
         例外情况
           id = 1
           语言= 2
           名称= 3
           对象= 4
           其他= 5。

       通话功能" SAVE_TEXT"
         出口
           客户= sy-mandt
           标头= gv_header_i
 * INSERT =''
           savemode_direct ='X'
 * OWNER_SPECIFIED =''
 * LOCAL_CAT =''
 *进口
 *功能=
 * NEWHEADER =
         桌子
           行数= it_lines
         例外情况
           id = 1
           语言= 2
           名称= 3
           对象= 4
           其他= 5。
      
        
       IF sy-subrc均衡器0。
         执行f_clear_data。
         带有"成功保存"的显示s398(00)的消息,类似于" S"。
         设置屏幕0。
       其他。
         消息s398(00)与'将数据保存到数据库时出错'显示类似'E'。
       ENDIF。

(35.0 kB)
付费偷看设置
发送
8条回答
Aaron 3364
1楼 · 2020-08-21 16:13.采纳回答

亲爱的萨达姆

执行例程

PERFORM f_read_text使用p_name_i'ZCOM''VBBP',PERFORM f_read_text使用p_name_i'ZCOM''VBBK'将结果存储在同一位置 it_lines []。

(刷新或附加)。

因此,请为每个标题和项目使用不同的it_lines,然后适当保存。

此致

Venkat

My梦
2楼-- · 2020-08-21 16:13

是的,save_text可以工作,但是只有一个(仅文本项),我想同时保存(单击保存时同时显示文本标题和文本项)。 因此,我尝试为每个字段保存文本,但还是一样。

这是我的PBO。

模块化pbo输出。
   数据:con_name(20)TYPE c。
   清除con_name。
   con_name ='SO_TXT_HEADER'。
   执行f_create_obj,使用con_name'true'。
   清除con_name。
   con_name ='SO_TXT_ITEM'。
   执行f_create_obj,使用con_name'true'。
 ENDMODULE。

 FORM f_create_obj使用p_con_name p_edit。
   DATA:lv_mode TYPE字符串。
   创建对象gv_editor_container
     出口
       container_name = p_con_name
     例外情况
       cntl_error = 1
       cntl_system_error = 2
       create_error = 3
       lifetime_error = 4
       lifetime_dynpro_dynpro_link = 5。

   创建对象gv_text_editor
     出口
       父母= gv_editor_container
       wordwrap_mode = cl_gui_textedit => wordwrap_at_fixed_position
       wordwrap_position = gv_line_length
       wordwrap_to_linebreak_mode = cl_gui_textedit => true。

   调用方法gv_text_editor-> set_toolbar_mode
     出口
       工具栏模式= cl_gui_textedit => false。

   呼叫方法gv_text_editor-> set_statusbar_mode
     出口
       statusbar_mode = cl_gui_textedit => false。

   如果p_edit EQ为'false'。
     调用方法gv_text_editor-> set_readonly_mode
       出口
         readonly_mode = 1。
   万一。

   清除p_name_h。

   案例p_con_name。
     当" SO_TXT_HEADER"时。
       p_name_h = wa_selected-vbeln。
       使用p_name_h'ZCOM''VBBK'来执行f_read_text。
     当" SO_TXT_ITEM"时。
       连接wa_selected-vbeln wa_selected-posnr INTO p_name_i。
       使用p_name_i'ZCOM''VBBP'执行f_read_text。
   结束。

   刷新gi_dis_longtext。
   清除gw_dis_longtext。

   环聊it_lines。
     gw_dis_longtext-tdline = it_lines-tdline。
     附加gw_dis_longtext至gi_dis_longtext。
     清除gw_dis_longtext。
   结局。

   调用方法gv_text_editor-> set_text_as_r3table
     出口
       表格= gi_dis_longtext
     例外情况
       其他= 1。
 ENDFORM。


 FORM f_read_text使用p_name p_id p_obj。

   通话功能" READ_TEXT"
     出口
       客户= sy-mandt
       id = p_id
       语言= sy-langu
       名称= p_name
       对象= p_obj
 * ARCHIVE_HANDLE = 0
 * LOCAL_CAT =''
 *重要
 *标题=
 * OLD_LINE_COUNTER =
     桌子
       行数= it_lines []
     例外情况
       id = 1
       语言= 2
       名称= 3
       not_found = 4
       对象= 5
       reference_check = 6
       错误_访问_存档= 7
       其他= 8。

 ENDFORM。
CJones
3楼-- · 2020-08-21 16:29

嗨,

请放心,Venkat建议也尝试一下。

悠然的二货
4楼-- · 2020-08-21 16:25

这是工作先生。 非常感谢您的帮助和分享。

我决定为文本标题和文本项设置不同的变量。

 *标头
     创建对象gv_editor_container
     出口
       container_name ='SO_TXT_HEADER'
     例外情况
       cntl_error = 1
       cntl_system_error = 2
       create_error = 3
       lifetime_error = 4
       lifetime_dynpro_dynpro_link = 5。
   创建对象gv_text_editor
     出口
       父母= gv_editor_container
       wordwrap_mode = cl_gui_textedit => wordwrap_at_fixed_position
       wordwrap_position = gv_line_length
       wordwrap_to_linebreak_mode = cl_gui_textedit => true。
   调用方法gv_text_editor-> set_toolbar_mode
     出口
       工具栏模式= cl_gui_textedit => false。
   呼叫方法gv_text_editor-> set_statusbar_mode
     出口
       statusbar_mode = cl_gui_textedit => false。
       p_name_h = wa_selected-vbeln。
       使用p_name_h'ZCOM''VBBK'来执行f_read_text。
       刷新gi_dis_longtext。
       清除gw_dis_longtext。
       环聊it_lines。
         gw_dis_longtext-tdline = it_lines-tdline。
         附加gw_dis_longtext至gi_dis_longtext。
         清除gw_dis_longtext。
       结局。

       调用方法gv_text_editor-> set_text_as_r3table
         出口
           表格= gi_dis_longtext
         例外情况
           其他= 1。
 *结束标题

 *项目
     创建对象gv_editor_container_i
     出口
       container_name ='SO_TXT_ITEM'
     例外情况
       cntl_error = 1
       cntl_system_error = 2
       create_error = 3
       lifetime_error = 4
       lifetime_dynpro_dynpro_link = 5。


   创建对象gv_text_editor_i
     出口
       父母= gv_editor_container_i
       wordwrap_mode = cl_gui_textedit => wordwrap_at_fixed_position
       wordwrap_position = gv_line_length_i
       wordwrap_to_linebreak_mode = cl_gui_textedit => true。

   调用方法gv_text_editor_i-> set_toolbar_mode
     出口
       工具栏模式= cl_gui_textedit => false。

   呼叫方法gv_text_editor_i-> set_statusbar_mode
     出口
       statusbar_mode = cl_gui_textedit => false。

   连接wa_selected-vbeln wa_selected-posnr INTO p_name_i。
       使用p_name_i'ZCOM''VBBP'执行f_read_text_i。

        刷新gi_dis_longtext_i。
       清除gw_dis_longtext_i。
       环上it_lines_i。
         gw_dis_longtext_i-tdline = it_lines_i-tdline。
         附加gw_dis_longtext_i至gi_dis_longtext_i。
         清除gw_dis_longtext_i。
       结局。

       呼叫方法gv_text_editor_i-> set_text_as_r3table
         出口
           表格= gi_dis_longtext_i
         例外情况
           其他= 1。
 *结束项目

此代码可以帮助您。 对于遇到同样问题的每个人。

全部感谢。

d56caomao
5楼-- · 2020-08-21 16:32

嗨,

您必须拨打不同的电话。

一个带有gv_header,一个带有gv_header_i。

但是it_lines是两次传递的相同变量/值吗?

奄奄一息的小鱼
6楼-- · 2020-08-21 16:34

很好,

然后标记答案并关闭线程

clasier
7楼-- · 2020-08-21 16:24
# p #

非常感谢先生。

一周热门 更多>