Текущее время: Пт, апр 19 2024, 02:25

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


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

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


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

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