Текущее время: Пт, мар 29 2024, 02:42

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


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

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


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

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