SAPфорум.RU https://sapboard.ru/forum/ |
|
Вызов сабмита формы из ABAP в CL_GUI_HTML_VIEWER https://sapboard.ru/forum/viewtopic.php?f=13&t=95817 |
Страница 1 из 1 |
Автор: | Saperx [ Чт, ноя 30 2017, 20:09 ] |
Заголовок сообщения: | Вызов сабмита формы из ABAP в CL_GUI_HTML_VIEWER |
Народ, добрый день. Столкнулся с такой напастью. Есть транзакция, на весь экран растянут контейнер с cl_gui_html_viewer. На всю страницу одна форма: Code: <FORM method="POST" action="SAPEVENT:SUBMIT_PAGE" id="cardForm"> ... куча полей <input type="submit" name="save" value="Сохранить" id="save" /> </FORM> По нажатию этой кнопки происходит сохранение полей в таблицу, в этом плане все работает корректно. Задача в следующем: пользователям хочется по кнопкам в статусе не просто выходить из транзакции, а получать уведомление о том, что есть не сохраненные изменения и если понадобится сохранять их перед выходом. Проблема в том, что не понятно каким образов из PAI можно вызвать событие сабмита формы или клика по кнопке, которое потом отловится в on_sapevent. Пробовал наследоваться от cl_gui класса и использовать методы set_script и execute_script. Скрипты вида Code: alert("It's alive!"); и Code: document.getElementById('save').value = "asdf"; выполняет без проблем, но при попытке выполнить Code: document.getElementById('save').click(); нифига не происходит. На Code: document.getElementById('cardForm').submit(); тоже ноль внимания...Может кто что подскажет? |
Автор: | Kengur [ Пт, дек 01 2017, 11:39 ] |
Заголовок сообщения: | Re: Вызов сабмита формы из ABAP в CL_GUI_HTML_VIEWER |
Можно попробовать вызвать рефреш и вот с этим поиграться https://developer.mozilla.org/en-US/doc ... foreunload |
Автор: | Daw [ Пт, дек 01 2017, 12:51 ] |
Заголовок сообщения: | Re: Вызов сабмита формы из ABAP в CL_GUI_HTML_VIEWER |
Для объекта cl_gui_html_viewer вызывается метод set_registered_events. После этого в on_sapevent отлавливается action c данными формы. Пример в SAPHTML_EVENTS_DEMO |
Автор: | Saperx [ Пт, дек 01 2017, 20:48 ] |
Заголовок сообщения: | Re: Вызов сабмита формы из ABAP в CL_GUI_HTML_VIEWER |
Daw написал(а): Для объекта cl_gui_html_viewer вызывается метод set_registered_events. После этого в on_sapevent отлавливается action c данными формы. Пример в SAPHTML_EVENTS_DEMO Событие в on_sapevent отлавливается корректно. С этим все в порядке. Вопрос в том как вызвать это событие по нажатию на кнопку в gui статусе. Хак через onbeforeunload работает частично. Во первых, имеет странную особенность не работать если не вставить в функцию alert() перед вызовом document.getElementById. Во вторых, он все таки вызывается при refresh, а при рефреше сам факт обновления происходит до вызова обработчика в on_sapevent, так что перед сохранением и выходом пользователь успевает увидеть странную картину, что его данные перезатираются старыми данными при рефреше, хотя в БД сохраняется все корректно. Если же попытаться сделать e.preventDefault, то появляется окно с ошибкой... В общем, пробы продолжаются. |
Автор: | AFH [ Пн, дек 04 2017, 05:03 ] |
Заголовок сообщения: | Re: Вызов сабмита формы из ABAP в CL_GUI_HTML_VIEWER |
Может быть повесить какой-то обработчик чтобы при потере фокуса срабатывал sapevent и передавались данные есть сохраненные данные или нет. Тогда при клике на кнопку не пришлось бы лезть в html_viewer чтобы узнать есть ли внетри не сохраненные данные. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |