首页 > 代码库 > 控件之应用-创建Text Editor教程

控件之应用-创建Text Editor教程

原文地址 http://www.baidusap.com/abap/dialog/1627

1, Text Editor介绍

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

技术分享

2, 创建text editor控件

下面介绍如何在dailog程序中创建一个text editor控件,

2.1, SE80创建dialog程序

Tcode:se80,创建一个dialog程序,并且添加一个屏幕100

技术分享

2.2, 创建custom control

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

技术分享

2.3, 修改PBO代码

PBO:

  • 创建pf status,详细参照-->http://www.baidusap.com/abap/dialog/1516

技术分享

  • 创建object container GO_EDITOR_CONTAINER. 然后再创建 text editor控件对象go_editor

技术分享

数据对象定义:

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 screenCONSTANTS: 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 queueCLASS 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.

2.4, 修改PAI代码

PAI:创建Module user_command_0100

技术分享

Module user_command_0100中的代码:

  • 在退出程序的时候,free text editor控件以及控件容器的对象
  • 在保存的时候读取在text editor中输入的长文内容到内表git_mytable中

代码如下:

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

技术分享

2.5, 运行测试

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

技术分享

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

技术分享

以上。

 

控件之应用-创建Text Editor教程