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.