CL TEXTEDIT 使用

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 70 .

  • 定义保存长文本用的内表
    TYPES: BEGIN OF TY_MYTABLE_LINE,
    LINE(C_LINE_LENGTH) TYPE C,
    END OF TY_MYTABLE_LINE.
    DATA:GIT_MYTABLE TYPE TABLE OF ZSLINES.
    DATA:GIT_MYTABLE2 TYPE TABLE OF ZSLINES.
    DATA:GIT_MYTABLE3 TYPE TABLE OF ZSLINES.

START-OF-SELECTION .

CALL SCREEN 100 .

&---------------------------------------------------------------------
*& Module STATUS_0100 OUTPUT
&---------------------------------------------------------------------
*&
&---------------------------------------------------------------------
MODULE STATUS_0100 OUTPUT.

SET PF-STATUS ‘PF_STATUS’.

  • SET TITLEBAR ‘xxx’.

    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.

    APPEND ‘测试测试1’ TO GIT_MYTABLE2 .
    APPEND ‘测试测试2’ TO GIT_MYTABLE2 .
    APPEND ‘测试测试3’ TO GIT_MYTABLE2 .
    APPEND ‘测试测试4’ TO GIT_MYTABLE2 .
    APPEND ‘测试测试5’ TO GIT_MYTABLE2 .
    APPEND ‘测试测试6’ TO GIT_MYTABLE2 .
    IF GIT_MYTABLE2 IS NOT INITIAL .

    CALL METHOD GO_EDITOR->SET_TEXT_AS_R3TABLE
    EXPORTING
    TABLE = GIT_MYTABLE2
    EXCEPTIONS
    OTHERS = 1.

    ENDIF.

*** 上面工具条条
CALL METHOD GO_EDITOR->SET_TOOLBAR_MODE
EXPORTING
TOOLBAR_MODE = 0.

*** 设置状态
CALL METHOD GO_EDITOR->SET_READONLY_MODE
EXPORTING
READONLY_MODE = ‘1’ .

ENDIF.

ENDMODULE.
&---------------------------------------------------------------------
*& Module USER_COMMAND_0100 INPUT
&---------------------------------------------------------------------

  •   text
    

----------------------------------------------------------------------
MODULE USER_COMMAND_0100 INPUT.

CASE OK_CODE.

WHEN '&BACK'.  " &BACK
  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 ‘&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.
    
    CALL TRANSFORMATION ID SOURCE  ZPLMXD = GIT_MYTABLE
    RESULT XML DATA(XMLSSS) .
    
    CALL TRANSFORMATION ID SOURCE XML XMLSSS
    RESULT ZPLMXD  = GIT_MYTABLE3  .
    
  • no flush here:

  • the automatic flush at the end of PBO does the job

ENDCASE.

ENDMODULE.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值