加个屏幕
*&---------------------------------------------------------------------*
*& Report YDEMO2
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ydemo2." 长文本对象容器
DATA: gr_ctn_text TYPE REF TO cl_gui_custom_container,gr_textedit TYPE REF TO cl_gui_textedit,gt_tline TYPE STANDARD TABLE OF tline,gs_tline TYPE tline,gs_thead TYPE thead,gt_textline TYPE TABLE OF textline,gv_edit TYPE c.CALL SCREEN 9001.*&---------------------------------------------------------------------*
*& Module STATUS_9001 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_9001 OUTPUT.gs_thead = VALUE #( tdid = 'Z001'tdname = '10000001'tdspras = '1'tdobject = 'ZGTS01' ).PERFORM frm_set_ltext.ENDMODULE.*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9001 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_9001 INPUT.PERFORM frm_save_ltext.ENDMODULE.*&---------------------------------------------------------------------*
*& Form frm_set_ltext
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_set_ltext .*&-- 构建容器和文本框IF gr_ctn_text IS INITIAL.gr_ctn_text = NEW #( container_name = 'CC_BZ' ).gr_textedit = NEW #( wordwrap_mode = cl_gui_textedit=>wordwrap_at_fixed_positionwordwrap_to_linebreak_mode = cl_gui_textedit=>trueparent = gr_ctn_text )." 去掉状态栏和工具栏gr_textedit->set_statusbar_mode( statusbar_mode = cl_gui_textedit=>false ).gr_textedit->set_toolbar_mode( toolbar_mode = cl_gui_textedit=>false )." 显示/编辑gr_textedit->set_readonly_mode( readonly_mode = COND #( WHEN gv_edit = 'X' THEN '0'ELSE '1' ) ).ENDIF.*&-- 全局文本IF gt_tline IS INITIAL." 读取初始长文本CALL FUNCTION 'READ_TEXT'EXPORTINGid = gs_thead-tdidlanguage = gs_thead-tdsprasname = gs_thead-tdnameobject = gs_thead-tdobjectTABLESlines = gt_tlineEXCEPTIONSOTHERS = 1.IF gt_tline IS NOT INITIAL." 转换流文本CALL FUNCTION 'CONVERT_ITF_TO_STREAM_TEXT'EXPORTINGlanguage = '1'TABLESitf_text = gt_tlinetext_stream = gt_textlineEXCEPTIONSOTHERS = 1." 回显编辑框gr_textedit->set_text_as_stream( text = gt_textline ).ENDIF.ENDIF.ENDFORM.*&---------------------------------------------------------------------*
*& Form frm_save_ltext
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_save_ltext .DATA: lv_input_check TYPE c,lv_subrc TYPE i,lt_table TYPE STANDARD TABLE OF tdline,lv_modify TYPE i.*&-- 写入长文本CALL METHOD gr_textedit->get_text_as_r3table(IMPORTINGtable = lt_tableis_modified = lv_modify).IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.EXIT.ELSEIF lv_modify = 1.CLEAR gt_tline[].LOOP AT lt_table INTO gs_tline-tdline.APPEND gs_tline TO gt_tline.ENDLOOP.
*&-- 调用方法创建保存文本对象CALL FUNCTION 'CREATE_TEXT'EXPORTINGfid = gs_thead-tdidflanguage = gs_thead-tdsprasfname = gs_thead-tdnamefobject = gs_thead-tdobjectTABLESflines = gt_tlineEXCEPTIONSno_init = 1no_save = 2OTHERS = 3.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.EXIT.ENDIF.ENDIF.ENDFORM.
效果