Текущее время: Пт, июл 18 2025, 06:54

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Запись подробного текста в переменую, класс CL_GUI_TEXTEDIT
СообщениеДобавлено: Чт, июл 03 2014, 07:15 
Ассистент
Ассистент

Зарегистрирован:
Вт, мар 26 2013, 19:24
Сообщения: 41
Добрый день!

Создал в контейнере текстовый редактор с помощью класса 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


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запись подробного текста в переменую, класс CL_GUI_TEXTEDIT
СообщениеДобавлено: Чт, июл 03 2014, 07:31 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, сен 09 2004, 07:32
Сообщения: 777
Откуда: Москва
Пол: Мужской
:!: Используйте метод GET_TEXT_AS_STREAM, или поставьте в PAI-логике вызов cl_gui_cfw=>flush.
Посмотрите тестовые программы из пакета SABAPDEMOS.

_________________
"Прежде чем сделать что-то, подумай, к чему это может привести..."


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запись подробного текста в переменую, класс CL_GUI_TEXTEDIT
СообщениеДобавлено: Чт, июл 03 2014, 08:07 
Ассистент
Ассистент

Зарегистрирован:
Вт, мар 26 2013, 19:24
Сообщения: 41
Спасибо, помогло!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запись подробного текста в переменую, класс CL_GUI_TEXTEDIT
СообщениеДобавлено: Пт, июл 04 2014, 07:28 
Ассистент
Ассистент

Зарегистрирован:
Вт, мар 26 2013, 19:24
Сообщения: 41
А можно тут же еще один вопрос, впринципе тоже про подробный текст, считываю его у сообщения с помощью фм READ_TEXT, и происходят чудеса)
как такое вообще может быть?
Code:
  CALL FUNCTION 'READ_TEXT'
          EXPORTING
            ID                            = ID
            LANGUAGE                      = 'R'
            NAME                          = NAME
            OBJECT                        = OBJECT
*           ARCHIVE_HANDLE                = 0
*           LOCAL_CAT                     = ' '
          IMPORTING
            HEADER                        = <HEADER>
          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 LINES[] is NOT INITIAL.
            LOOP AT LINES ASSIGNING <LINES>.
              CONCATENATE TEXT <LINES>-TDLINE INTO TEXT.
            ENDLOOP.
          ELSEIF sy-subrc <> 0.
            TEXT = 'Подробный текcт не найден!'.
          Endif.


Смотрю в отдаке таблицу полностью Lines, там корректно записанное значение - Подробное ##описание##,
нажимаю в отладке на конкретную строчку в таблице и получаю - Podrobnoie ##opisaniie##, как он так грамотно
его перевел на русско/английский? и в переменную записывается это корявое название!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB