SAPфорум.RU https://sapboard.ru/forum/ |
|
фм в режиме in update task https://sapboard.ru/forum/viewtopic.php?f=13&t=99303 |
Страница 1 из 1 |
Автор: | skaa [ Пн, янв 25 2021, 10:35 ] |
Заголовок сообщения: | фм в режиме in update task |
Добрый день! Есть z* ФМ, в котором создаётся запись в z*таблице Базы данных. Вызываю этот ФМ(Модуль обновления->Немедленный запуск) в режиме in update task. После ФМ идёт команда COMMIT WORK AND WAIT. И почему-то не всегда после COMMIT WORK AND WAIT есть запись созданная в БД ФМ. Запись может создаваться и после команды COMMIT WORK AND WAIT. Есть ли команда в abap, которая гарантирует создание записей в Базе данных? Или придётся насильно после commit work and wait проверять, что запись в БД появилась? |
Автор: | LKU [ Пн, янв 25 2021, 12:01 ] |
Заголовок сообщения: | Re: фм в режиме in update task |
Приведите пример кода, с вызовом ФМ и commit work and wait. Вообще commit work and wait как раз гарантирует, что будет ждать пока не отработают все V1 процессы обновления, запущенные в update task. Если вы наблюдаете другую картину, скорее всего у вас между вызовом ФМ и commit work and wait стоит еще спрятанный где-то паразитный вызов commit work (без wait). Такой паразитный вызов проще всего отследить, использовав в отладчике функцию установки точки прерывания на операторе commit work. |
Автор: | skaa [ Пн, янв 25 2021, 12:19 ] |
Заголовок сообщения: | Re: фм в режиме in update task |
LKU написал: Приведите пример кода, с вызовом ФМ и commit work and wait. Вообще commit work and wait как раз гарантирует, что будет ждать пока не отработают все V1 процессы обновления, запущенные в update task. Если вы наблюдаете другую картину, скорее всего у вас между вызовом ФМ и commit work and wait стоит еще спрятанный где-то паразитный вызов commit work (без wait). Такой паразитный вызов проще всего отследить, использовав в отладчике функцию установки точки прерывания на операторе commit work. Code: FUNCTION ZUPDATE_ZTABLE
*" IMPORTING *" VALUE(IS_ZTABLE) TYPE ZTABLE INSERT ztable FROM is_ztable. ENDFUNCTION. Программа: CALL FUNCTION 'ZUPDATE_ZTABLE' IN UPDATE TASK EXPORTING IS_ZTABLE = ls_ztable. COMMIT WORK AND WAIT. Бывают случаи, когда после commit пока ещё нет записи в таблице ztable. И она появится чуть позже. |
Автор: | LKU [ Пн, янв 25 2021, 13:03 ] |
Заголовок сообщения: | Re: фм в режиме in update task |
Цитата: Бывают случаи, когда после commit пока ещё нет записи в таблице ztable. И она появится чуть позже. Такого быть не может. Вы как проверяете наличие записей в таблице? Помечена ли таблица как буферизованная? |
Автор: | LKU [ Пн, янв 25 2021, 13:06 ] |
Заголовок сообщения: | Re: фм в режиме in update task |
То есть условно если вы после commit work and wait напишите Code: select from ztable bypassing buffer where <id записи = id в отправленной на сохранение строки>. ,то такой селект обязан вернуть результат |
Автор: | skaa [ Пн, янв 25 2021, 13:16 ] |
Заголовок сообщения: | Re: фм в режиме in update task |
LKU написал: То есть условно если вы после commit work and wait напишите Code: select from ztable bypassing buffer where <id записи = id в отправленной на сохранение строки>. ,то такой селект обязан вернуть результат LKU, спасибо! Наверное, bypassing buffer не хватало. ztable буферизованная таблица. |
Автор: | LKU [ Пн, янв 25 2021, 20:06 ] |
Заголовок сообщения: | Re: фм в режиме in update task |
skaa написал(а): LKU, спасибо! Наверное, bypassing buffer не хватало. ztable буферизованная таблица. Ну да, тогда все понятно. "commit work and wait" гарантирует, что дождется окончания транзакции в БД, но вот немедленного обновления буфера на уровне сервера приложений вам никто не обещал ) |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |