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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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