Текущее время: Сб, май 18 2024, 22:52

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: фм в режиме in update task
СообщениеДобавлено: Пн, янв 25 2021, 10:35 
Специалист
Специалист

Зарегистрирован:
Пн, мар 12 2012, 08:40
Сообщения: 226
Добрый день!
Есть z* ФМ, в котором создаётся запись в z*таблице Базы данных.
Вызываю этот ФМ(Модуль обновления->Немедленный запуск) в режиме in update task. После ФМ идёт команда COMMIT WORK AND WAIT.
И почему-то не всегда после COMMIT WORK AND WAIT есть запись созданная в БД ФМ. Запись может создаваться и после команды COMMIT WORK AND WAIT. Есть ли команда в abap, которая гарантирует создание записей в Базе данных? Или придётся насильно после commit work and wait проверять, что запись в БД появилась?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: фм в режиме in update task
СообщениеДобавлено: Пн, янв 25 2021, 12:01 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4842
Откуда: Москва
Пол: Мужской
Приведите пример кода, с вызовом ФМ и commit work and wait.
Вообще commit work and wait как раз гарантирует, что будет ждать пока не отработают все V1 процессы обновления, запущенные в update task.

Если вы наблюдаете другую картину, скорее всего у вас между вызовом ФМ и commit work and wait стоит еще спрятанный где-то паразитный вызов commit work (без wait).
Такой паразитный вызов проще всего отследить, использовав в отладчике функцию установки точки прерывания на операторе commit work.

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: фм в режиме in update task
СообщениеДобавлено: Пн, янв 25 2021, 12:19 
Специалист
Специалист

Зарегистрирован:
Пн, мар 12 2012, 08:40
Сообщения: 226
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. И она появится чуть позже.



Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: фм в режиме in update task
СообщениеДобавлено: Пн, янв 25 2021, 13:03 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4842
Откуда: Москва
Пол: Мужской
Цитата:
Бывают случаи, когда после commit пока ещё нет записи в таблице ztable. И она появится чуть позже.

Такого быть не может.
Вы как проверяете наличие записей в таблице?
Помечена ли таблица как буферизованная?

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: фм в режиме in update task
СообщениеДобавлено: Пн, янв 25 2021, 13:06 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4842
Откуда: Москва
Пол: Мужской
То есть условно если вы после commit work and wait напишите
Code:
select from ztable bypassing buffer
where <id записи = id в отправленной на сохранение строки>.

,то такой селект обязан вернуть результат

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: фм в режиме in update task
СообщениеДобавлено: Пн, янв 25 2021, 13:16 
Специалист
Специалист

Зарегистрирован:
Пн, мар 12 2012, 08:40
Сообщения: 226
LKU написал:
То есть условно если вы после commit work and wait напишите
Code:
select from ztable bypassing buffer
where <id записи = id в отправленной на сохранение строки>.

,то такой селект обязан вернуть результат

LKU, спасибо! Наверное, bypassing buffer не хватало. ztable буферизованная таблица.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: фм в режиме in update task
СообщениеДобавлено: Пн, янв 25 2021, 20:06 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4842
Откуда: Москва
Пол: Мужской
skaa написал(а):
LKU, спасибо! Наверное, bypassing buffer не хватало. ztable буферизованная таблица.


Ну да, тогда все понятно.
"commit work and wait" гарантирует, что дождется окончания транзакции в БД, но вот немедленного обновления буфера на уровне сервера приложений вам никто не обещал )

_________________
Удача - результат нашего желания (© А. Нортон)


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

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


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

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


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

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