标签:
不同于一般的屏幕字段,Text Editor可以保存多行文本,它是SAP各种凭证中常用的控件之一,比如采购订单中,凭证头和行项目中都应用到text editor控件,如下:

下面介绍如何在dailog程序中创建一个text editor控件,
Tcode:se80,创建一个dialog程序,并且添加一个屏幕100

在屏幕100的layout上,创建一个custom control,并输入名字Text_editor

PBO:


数据对象定义:
DATA:
go_editor TYPE REF TO cl_gui_textedit,
go_editor_container TYPE REF TO cl_gui_custom_container,
ok_code LIKE sy-ucomm. " return code from screen
CONSTANTS: c_line_length TYPE i VALUE 256.
* 定义保存长文本用的内表
TYPES: BEGIN OF ty_mytable_line,
line(c_line_length) TYPE c,
END OF ty_mytable_line.
DATA:git_mytable TYPE TABLE OF ty_mytable_line.
* necessary to flush the automation queue
CLASS cl_gui_cfw DEFINITION LOAD.
module pbo_0100中代码如下:
IF go_editor IS INITIAL.
* 创建控件容器
CREATE OBJECT go_editor_container
EXPORTING
container_name = ‘TEXTEDITOR1‘
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
IF sy-subrc NE 0.
* add your handling
ENDIF.
* 将Text editor和控件容器对象连接起来
CREATE OBJECT go_editor
EXPORTING
parent = go_editor_container
wordwrap_mode = cl_gui_textedit=>wordwrap_at_fixed_position
wordwrap_to_linebreak_mode = cl_gui_textedit=>true
EXCEPTIONS
OTHERS = 1.
ENDIF.
PAI:创建Module user_command_0100

Module user_command_0100中的代码:
代码如下:
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN ‘&F03‘.
IF NOT go_editor IS INITIAL.
CALL METHOD go_editor->free
EXCEPTIONS
OTHERS = 1.
* free ABAP object also
FREE go_editor.
ENDIF.
* destroy container
IF NOT go_editor_container IS INITIAL.
CALL METHOD go_editor_container->free
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
ENDIF.
* free ABAP object also
FREE go_editor_container.
ENDIF.
* finally flush
CALL METHOD cl_gui_cfw=>flush
EXCEPTIONS
OTHERS = 1.
LEAVE PROGRAM.
WHEN ‘&DATA_SAVE‘.
* retrieve table from control
CALL METHOD go_editor->get_text_as_r3table
IMPORTING
table = git_mytable
EXCEPTIONS
OTHERS = 1.
CALL METHOD cl_gui_cfw=>flush
EXCEPTIONS
OTHERS = 1.
* no flush here:
* the automatic flush at the end of PBO does the job
ENDCASE.
ENDMODULE.
2.5, 创建Tcode

运行Tcode ztextedit, 在text editor控件中输入长文本,

点击保存按钮,在debug模式中,可以看到内表git_mytable中输入的内容line1,line2,line3.

以上。
标签:
原文地址:http://www.cnblogs.com/baidusap/p/5859488.html