Добрый день!
Создал в контейнере текстовый редактор с помощью класса CL_GUI_TEXTEDIT и хочу чтобы вводимое содержание в нем при нажатии на кнопку,
попадало в переменную, для этого использую метод GET_TEXTSTREAM.
Проблема в том что введеный текст попадает в переменную только при повторной генерации экрана, проще говоря, нажимаю совю кнопку ОК, смотрю в отладке, метод отрабатывает, переменная пуста, выхода из экрана специально не делал поэтому нажимаю опять кнопку ОК, даже до отработки метода GET_TEXTSTREAM, переменная заполнена текстом) Подскажите пож-та что делаю не так?
Code:
data ref_edit type REF TO CL_GUI_TEXTEDIT.
data exp_container TYPE REF TO cl_gui_custom_container. "
MODULE STATUS_0200 OUTPUT.
* if sy-ucomm <> 'OK'.
* CLEAR : DEF, DEF_PODR.
* ENDIF.
SET PF-STATUS '0200'.
if exp_container is INITIAL.
CREATE OBJECT exp_container
EXPORTING
container_name = 'PODROBNO'.
CREATE OBJECT ref_edit
EXPORTING
parent = exp_container
.
CALL METHOD ref_edit->set_toolbar_mode.
CALL METHOD ref_edit->set_statusbar_mode.
endif.
ENDMODULE. " STATUS_0200 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0200 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0200 INPUT.
CASE sy-ucomm.
WHEN 'CANCEL'.
LEAVE to SCREEN 0.
when 'OKEY' or 'OK'.
IF DEF is INITIAL.
MESSAGE I000(ZPM) WITH 'Не заполнили описание дефекта!'.
else.
* CALL METHOD ref_edit->DELETE_TEXT.
CALL METHOD ref_edit->GET_TEXTSTREAM
IMPORTING
text = def_podr
EXCEPTIONS
OTHERS = 1.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT