Текущее время: Чт, мар 28 2024, 12:18

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Вызов сабмита формы из ABAP в CL_GUI_HTML_VIEWER
СообщениеДобавлено: Чт, ноя 30 2017, 20:09 
Специалист
Специалист

Зарегистрирован:
Пн, мар 12 2012, 09:38
Сообщения: 170
Народ, добрый день.
Столкнулся с такой напастью.
Есть транзакция, на весь экран растянут контейнер с 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();
тоже ноль внимания...
Может кто что подскажет?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вызов сабмита формы из ABAP в CL_GUI_HTML_VIEWER
СообщениеДобавлено: Пт, дек 01 2017, 11:39 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, дек 20 2007, 18:21
Сообщения: 1613
Можно попробовать вызвать рефреш и вот с этим поиграться https://developer.mozilla.org/en-US/doc ... foreunload

_________________
я твой сап эфай внедрял
BAdI-позитив
Взять немножечко абопу, сунь туда кошачью *опу, RFC лапки, БТ старой бабки, на медленном базиснике переносить, тестовое окружение материть, снимать SAT пенку, биться головой о стенку, охапка тайм-шитов, отчет готов!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вызов сабмита формы из ABAP в CL_GUI_HTML_VIEWER
СообщениеДобавлено: Пт, дек 01 2017, 12:51 
Специалист
Специалист

Зарегистрирован:
Вт, дек 06 2005, 13:24
Сообщения: 167
Для объекта cl_gui_html_viewer вызывается метод set_registered_events.
После этого в on_sapevent отлавливается action c данными формы.

Пример в SAPHTML_EVENTS_DEMO


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вызов сабмита формы из ABAP в CL_GUI_HTML_VIEWER
СообщениеДобавлено: Пт, дек 01 2017, 20:48 
Специалист
Специалист

Зарегистрирован:
Пн, мар 12 2012, 09:38
Сообщения: 170
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, то появляется окно с ошибкой... В общем, пробы продолжаются.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вызов сабмита формы из ABAP в CL_GUI_HTML_VIEWER
СообщениеДобавлено: Пн, дек 04 2017, 05:03 
Специалист
Специалист

Зарегистрирован:
Чт, мар 25 2010, 09:02
Сообщения: 207
Может быть повесить какой-то обработчик чтобы при потере фокуса срабатывал sapevent и передавались данные есть сохраненные данные или нет. Тогда при клике на кнопку не пришлось бы лезть в html_viewer чтобы узнать есть ли внетри не сохраненные данные.


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

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


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

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


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

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