Каков будет эффект использования «BAPI_TRANSACTION_COMMIT» с параметром «WAIT», если он равен «X» внутри BADi? Должен ли я ожидать, что SAP зафиксирует данные, когда LUW зафиксирует?
Я знаю, что внутри 'BAPI_TRANSACTION_COMMIT' происходит 'COMMIT WORK' или 'COMMIT WORK AND WAIT', если вы укажете параметр 'WAIT' = 'X'.
Я также знаю, что неправильно делать «COMMIT WORK» внутри BADi, но если я использую «COMMIT WORK AND WAIT» через BAPI?
В документации SAP, касающейся COMMIT, говорится:
При этом выполняются все высокоприоритетные (VB1) функциональные модули обновления в порядке их регистрации и в общей базе данных LUW. Если вы не укажете дополнение AND WAIT, программа не будет ждать, пока рабочий процесс обновления выполнит ее (асинхронное обновление), а возобновится сразу после COMMIT WORK. Однако, если указано дополнение AND WAIT, обработка программы после COMMIT WORK не будет продолжаться до тех пор, пока рабочий процесс обновления не выполнит высокоприоритетные функциональные модули обновления (синхронное обновление).
Когда все высокоприоритетные функциональные модули обновления успешно завершены, оператор выполняет низкоприоритетные (VB2) функциональные модули обновления в порядке регистрации вместе в общей базе данных LUW.
Мое замешательство возникает из-за того, что у нас есть реализация BADi, в которой есть вызов упомянутой функции с параметром «WAIT» = «X», и мы нашли SAP-ноты, в которых запрещается использование «COMMIT WORK» внутри этого BADi, однако он говорит «ЗАВЕРШИТЬ РАБОТУ», а не «ЗАВЕРШИТЬ РАБОТУ И ЖДАТЬ».
Поэтому я мог подумать, что реализация правильная, потому что эти данные будут зафиксированы, когда LUW завершится... или нет. Любые комментарии?