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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Блокируется заказ после вызова BAPI_BILLINGDOC_CREATEMULTIPLE
СообщениеДобавлено: Пн, сен 20 2021, 12:01 
Начинающий
Начинающий

Зарегистрирован:
Ср, янв 21 2015, 14:58
Сообщения: 5
Всем привет.

Предпосылка.
Надо создать 2 СФ для одной поставки(заказа).
Смысл в чем. При сохранении транспортировки в определенном статусе в экзите создавался СФ.
Изначально был процесс создания одной фактуры из точки А в Б. Сейчас же процесс усложнили и надо создавать одну фактуру из А в В, а потом еще одну из В в Б. Я 2 раза вызываю ФМ 'BAPI_BILLINGDOC_CREATEMULTIPLE' для одного и того же поставки(поставок, если в транспортировке их несколько). При первом вызове я не обновляю VBUK/VBUP, чтобы система дала создать второй СФ и уже на втором этапе обновляю VBUK/VBUP чтобы "закрыть" процесс фактурирования.

Проблема:
Все работает как надо, но только в фореграунде. При запуске этого процесса JOBом вторая СФ иногда не создаётся по причине того что заказ из поставки еще блокирован(при первом создании СФ). JOB запускается каждые 5 минут и при последующем вызове как правило создаются 2 СФ корректно. Проблема в том что при первом запуске JOBа уже создалась одна СФ и при повторном создаются еще две. Итого первый СФ получается "лишним" в процессе. Я предложил сторнировать первый СФ если второй не создался, но бизнесу эта идея не понравилась.

Как избежать блокировки заказа? Пробовал WAIT(пробуем пересоздать 2й СФ каждые 10 секунд и так 15 раз, итого 1.5 минуты ожидания) и COMMIT WORK - не помогает.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Блокируется заказ после вызова BAPI_BILLINGDOC_CREATEMULTIPLE
СообщениеДобавлено: Пн, сен 20 2021, 14:08 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4842
Откуда: Москва
Пол: Мужской
Ну, первое что приходит в голову - дописать логику вашей программы, чтобы она анализировала ранее проведенные документы.
Если уже есть первая фактура, но нет второй, значит надо только вторую создать.
Это общее правило при проводке цепочек документов в SAP - отслеживать на каком месте цепочка оборвалась в прошлый раз и начинать с этого момента.

По поводу запуска новой бапи после только после окончания второй - обсуждали уже много раз.
Используйте:
1 commit work and wait (или что более правильно ФМ BAPI_TRANSACTION_COMMIT с параметром WAIT = 'X') после вызова бапи
2. при необходимости SET UPDATE TASK LOCAL перед вызовом bapi.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блокируется заказ после вызова BAPI_BILLINGDOC_CREATEMULTIPLE  Тема решена
СообщениеДобавлено: Пн, сен 20 2021, 14:14 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4842
Откуда: Москва
Пол: Мужской
Посмотрел свои материалы, можно использовать ФМ RV_INVOICE_CREATE с параметром with_posting = 'F'.
BAPI_BILLINGDOC_CREATEMULTIPLE передает with_posting = 'B' и это зашито в коде (

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блокируется заказ после вызова BAPI_BILLINGDOC_CREATEMULTIPLE
СообщениеДобавлено: Пн, сен 20 2021, 15:14 
Начинающий
Начинающий

Зарегистрирован:
Ср, янв 21 2015, 14:58
Сообщения: 5
LKU написал:
Ну, первое что приходит в голову - дописать логику вашей программы, чтобы она анализировала ранее проведенные документы.
Если уже есть первая фактура, но нет второй, значит надо только вторую создать.
Это общее правило при проводке цепочек документов в SAP - отслеживать на каком месте цепочка оборвалась в прошлый раз и начинать с этого момента.

По поводу запуска новой бапи после только после окончания второй - обсуждали уже много раз.
Используйте:
1 commit work and wait (или что более правильно ФМ BAPI_TRANSACTION_COMMIT с параметром WAIT = 'X') после вызова бапи
2. при необходимости SET UPDATE TASK LOCAL перед вызовом bapi.


COMMIT + WAIT уже пробовал, не помогло.

Буду пробовать остальные предложенные варианты, спасибо!


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Блокируется заказ после вызова BAPI_BILLINGDOC_CREATEMULTIPLE
СообщениеДобавлено: Пн, сен 20 2021, 17:18 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4842
Откуда: Москва
Пол: Мужской
Поле with_posting обрабатывается в последних строках ФМ RV_INVOICE_REFRESH, вызываемого из ФМ RV_INVOICE_CREATE.
Посмотрите, там всё довольно прозрачно.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блокируется заказ после вызова BAPI_BILLINGDOC_CREATEMULTIPLE
СообщениеДобавлено: Ср, окт 12 2022, 11:15 
Начинающий
Начинающий

Зарегистрирован:
Ср, янв 21 2015, 14:58
Сообщения: 5
Задачка попала в беклог на год, но решение вроде бы нашлось:)

Да, всё решилось через параметр POSTING. Как я писал выше мне надо было создавать 2 СФ подряд. Помог тип проводки 'D', синхронный Commit. Т.е. сперва создавался первый СФ, COMMIT AND WAIT в самом ФМнике, потом второй СФ с таким же коммитом.

@LKU, спасибо за советы!

Оставлю памятку по POSTING параметру здесь, вдруг кому-нибудь будет полезно.

' ' = do not update directly (this is done separately using the function module RV_INVOICE_DOCUMENT_ADD)
'A' = update directly without error log (VBSK,VBFS) - asynchronous
'B' = update directly with error log (VBSK,VBFS) - asynchronous
'C' = update directly without error log (VBSK,VBFS) - synchronous
'D' = update directly with error log (VBSK,VBFS) - synchronous
'E' = update directly without error log (VBSK,VBFS) - without commit
'F' = update directly without error log (VBSK,VBFS) - without commit
'G' = only for internal use by the POS interface no billing document update, accounting and info system is updated.
'H' = do not update directly, simulation of billing doc creation and transfer to FI, no final data initialization.


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

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


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

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


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

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