加个屏幕
*&---------------------------------------------------------------------*
*& 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_position
wordwrap_to_linebreak_mode = cl_gui_textedit=>true
parent = 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'
EXPORTING
id = gs_thead-tdid
language = gs_thead-tdspras
name = gs_thead-tdname
object = gs_thead-tdobject
TABLES
lines = gt_tline
EXCEPTIONS
OTHERS = 1.
IF gt_tline IS NOT INITIAL.
" 转换流文本
CALL FUNCTION 'CONVERT_ITF_TO_STREAM_TEXT'
EXPORTING
language = '1'
TABLES
itf_text = gt_tline
text_stream = gt_textline
EXCEPTIONS
OTHERS = 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(
IMPORTING
table = lt_table
is_modified = lv_modify
).
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH 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'
EXPORTING
fid = gs_thead-tdid
flanguage = gs_thead-tdspras
fname = gs_thead-tdname
fobject = gs_thead-tdobject
TABLES
flines = gt_tline
EXCEPTIONS
no_init = 1
no_save = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
EXIT.
ENDIF.
ENDIF.
ENDFORM.
效果