Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7185550
  • 博文数量: 655
  • 博客积分: 10264
  • 博客等级: 上将
  • 技术积分: 8278
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-04 17:47
个人简介

ABAP顾问

文章分类

全部博文(655)

文章存档

2017年(2)

2014年(8)

2013年(3)

2012年(2)

2011年(18)

2010年(102)

2009年(137)

2008年(274)

2007年(134)

分类:

2009-03-27 21:51:11

网友: ABAP 菜鸟
白:
你好,看了博客好久了,能否帮忙做个能实现文本输入的例子?
像me23n里抬头文本的样式,并且能设置对象和ID需要保存的!
                                               谢谢了!

 

REPORT  z_barry_test_textedit NO STANDARD PAGE HEADING .

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  = 'Z001'.
  header-tdname    = p_name.
  header-tdid      = '0001'.
  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(Z001)和tdid(0001),则需要在表TTXOB和TTXID中维护(TCODE:SE75)

关于SAVE_TEXT的更多帮助:

 
关于cl_gui_textedit的一些用法示例程序:SAPTEXTEDIT_*
阅读(10056) | 评论(17) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-06-01 12:02:52

搞一个保存按钮,统一保存。如果不保存,则在退出的时候提示

chinaunix网友2009-06-01 09:45:58

老白,请教个问题:如果是用FM实现的ALV报表中输出的一个可编辑字段,需要用SAVE_TEXT来保存用户输入内容,用什么方式能较为方便呢,目前我们是用双击字段触发,但是用户常常忘记双击,等到需要查询的时候才发现没有数据。

chinaunix网友2009-04-27 13:40:24

谢谢你的答复,呵呵! 以后有问题就来你的 博客提问了

qdbarry2009-04-13 09:06:57

我很少使用MSN,就不加你了,呵呵

chinaunix网友2009-04-13 09:06:05

FORM cleartext . CALL METHOD x_editor->delete_text EXCEPTIONS error_cntl_call_method = 1 OTHERS = 2. ENDFORM. " CLEARTEXT 其实,这样的小问题,你去CL_GUI_TEXTEDIT的Method列表里面找一下就能找到的