定义新的长文本对象并用cl_gui_textedit编辑

*&---------------------------------------------------------------------*
*& Report Y_PCITCAO_TEST_TEXTEDIT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT Y_PCITCAO_TEST_TEXTEDIT.
TABLES: sscrfields.
DATA: x_docking TYPE REF TO cl_gui_docking_container,
x_editor TYPE REF TO cl_gui_textedit,
lines TYPE STANDARD TABLE OF tline ,
header LIKE thead .

TYPES: BEGIN OF textline,
line(255) TYPE c,
END OF textline .
DATA texttable TYPE TABLE OF textline .

PARAMETERS:p_name(70) DEFAULT '12345678'.
SELECTION-SCREEN FUNCTION KEY 1.
SELECTION-SCREEN FUNCTION KEY 2.

INITIALIZATION.
sscrfields-functxt_01 = 'Save'.
sscrfields-functxt_02 = 'Read'.

AT SELECTION-SCREEN OUTPUT.
IF x_docking IS INITIAL .
CREATE OBJECT x_docking
EXPORTING
repid = sy-repid
dynnr = sy-dynnr
side = 4
extension = '255'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.

CREATE OBJECT x_editor
EXPORTING
parent = x_docking
wordwrap_mode = 2
wordwrap_position = 72
max_number_chars = 100000.
ENDIF .

AT SELECTION-SCREEN.
header-tdobject = 'TEXT'.
header-tdname = p_name.
header-tdid = 'ST'.
header-tdspras = sy-langu.

CASE sy-ucomm .
WHEN 'FC01'.
PERFORM savetext.
WHEN 'FC02'.
PERFORM readtext.
ENDCASE.

*&---------------------------------------------------------------------*
*& Form savetext
*&---------------------------------------------------------------------*
FORM savetext.
CALL METHOD x_editor->get_text_as_stream
IMPORTING
text = texttable
EXCEPTIONS
error_dp = 1
error_cntl_call_method = 2
OTHERS = 3.

CALL FUNCTION 'CONVERT_STREAM_TO_ITF_TEXT'
EXPORTING
language = sy-langu
TABLES
text_stream = texttable
itf_text = lines.

CALL FUNCTION 'SAVE_TEXT'
EXPORTING
header = header
savemode_direct = 'X'
TABLES
lines = lines
EXCEPTIONS
id = 1
language = 2
name = 3
object = 4
OTHERS = 5.
IF sy-subrc = 0.
MESSAGE s000(oo) WITH '保存成功'.
COMMIT WORK.
ELSE.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. "savetext

*&---------------------------------------------------------------------*
*& Form readtext
*&---------------------------------------------------------------------*
FORM readtext.
CLEAR:texttable,texttable[].

CALL FUNCTION 'READ_TEXT'
EXPORTING
id = header-tdid
language = sy-langu
name = p_name
object = header-tdobject
TABLES
lines = lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

CALL FUNCTION 'CONVERT_ITF_TO_STREAM_TEXT'
EXPORTING
language = sy-langu
TABLES
itf_text = lines
text_stream = texttable.

CALL METHOD x_editor->set_text_as_stream
EXPORTING
text = texttable
EXCEPTIONS
error_dp = 1
error_dp_create = 2
OTHERS = 3.
ENDFORM. "readtext

注:本例中长文本object是系统自带的,如本例的tdobject(TEXT)和tdid(ST),也可以在需要在表TTXOB和TTXID中维护(TCODE:SE75)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值