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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Yandex [Bot]


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

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