Текущее время: Вт, апр 16 2024, 09:21

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Какой GUI контрол для ввода текста поддерживает событие onMouseOver или как сделать свой
СообщениеДобавлено: Вт, апр 30 2019, 07:07 
Специалист
Специалист

Зарегистрирован:
Пн, мар 12 2012, 09:38
Сообщения: 170
Osm написал(а):
HTML+javascript было бы хорошо.
В cl_gui_html_viewer есть событие sapevent, т.е. я мы мог обработать его через javascript, но мне нужно документ редактировать, а не отображать
Но вот в cl_gui_html_editor нет события sapevent.
Просмотрел все классы cl_gui_*edit*. Нужное мне событие есть только в sourceedit, но он мне совсем не подходит по внешнему виду.
Кто-нибудь видел в sap транзакцию с подобной функциональностью? Кроме редактора кода.

А вам и не нужен редактор html, вам нужен редактор текста, написанный на html, для чего вполне достаточно cl_gui_html_viewer.
Делаете контрол вместо стандартного поля ввода саповского, выводите туда html, в html рисуете один textarea и растягиваете его на весь контрол. Можно еще там шрифтами поиграться есть есть желание.
Для передачи событий в SAP используете любую имитацию сабмита. Если прям в лоб: делаем форму, в ней делаем textarea и input, input скрываем, по событию mouseover находим слово в textarea(тут уж сами думайте как это делать), кладем это слово в инпут и делаем сабмит формы. В abap части делаем обработчик событий html'ки, в методе on_sapevent получаем значение нашего инпута, делаем магию, формируем данные(например, json), и передаем это обратно в html. Как вариант отнаследоваться от стандартного cl_gui_html_viewer, сделать там свой метод(например, run_js):
Code:
    CALL METHOD me->set_script
      EXPORTING
        script = script.

    CALL METHOD me->execute_script.


Далее все что нам нужно это сформировать код и передать его в этот метод.
Code:
lv_source_code = |showHint("{ lv_search_word }",{ json });|.

   WHILE strlen( lv_source_code ) > 30000.
      CLEAR: lv_line.
      CALL FUNCTION 'TEXT_SPLIT'
        EXPORTING
          length = 30000
          text   = CONV ze_30k( lv_source_code(30000) )
        IMPORTING
          line   = lv_line.

      lv_len = strlen( lv_line ).
      lv_source_code = lv_source_code+lv_len.

      APPEND lv_line TO lt_source_code.
    ENDWHILE.

    IF lv_source_code IS NOT INITIAL.
      lt_source_code = VALUE #( BASE lt_source_ code ( CONV #( lv_source_code ) ) ).
    ENDIF.

    go_html_viewer->run_script_on_demand( script = lt_source_code ).

Реализация же метода showHint уже чисто JS задача, и отношения к вопросу не имеет.
Для формирования html'ки можно использовать XSLT.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Какой GUI контрол для ввода текста поддерживает событие onMouseOver или как сделать свой
СообщениеДобавлено: Вт, апр 30 2019, 11:05 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
По результатам запостите готовый код, глянуть что получилось в итоге, для каких целей :wink:


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу Пред.  1, 2

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


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

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


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

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