Текущее время: Сб, июл 19 2025, 21:16

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Блокировка партии.
СообщениеДобавлено: Ср, июн 26 2013, 07:54 
Председатель
Председатель

Зарегистрирован:
Чт, май 10 2007, 09:15
Сообщения: 1558
Добрый день.
Необходима консультация.
Выполняю 4-е проводки по одной партии материала.
Сначала приход по акту, потом расход по акту, потом приход по акту, потом расход по акту.
Партия одна и та же.
Проблема в том, что бывает, когда при выполнении проводки, партия еще блокируется предыдущей операцией.
В связи с этим вопрос, выполнять следующую проводку только в том случае, если блокировки партии нет.
Или есть какой-либо другой механизм для этого?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Блокировка партии.
СообщениеДобавлено: Ср, июн 26 2013, 08:36 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
hub2002 написал(а):
В связи с этим вопрос, выполнять следующую проводку только в том случае, если блокировки партии нет.
Или есть какой-либо другой механизм для этого?

Проблема решается с помощью проверки блокировки партии в цикле с задержкой.
Обычно 300 попыток блокировки с перерывом в секунду между ними достаточно для большинства случаев. В особо тяжелых случаях приходилось увеличивать количество попыток до 500...

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блокировка партии.
СообщениеДобавлено: Ср, июн 26 2013, 08:40 
Председатель
Председатель

Зарегистрирован:
Чт, май 10 2007, 09:15
Сообщения: 1558
Так и предполагал, спасибо


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Блокировка партии.
СообщениеДобавлено: Ср, июн 26 2013, 09:11 
Председатель
Председатель

Зарегистрирован:
Чт, май 10 2007, 09:15
Сообщения: 1558
Господа, а такой вопрос, проверять ФМ
Code:
        CALL FUNCTION 'ENQUEUE_EMMCH1E'
          EXPORTING
            mode_mch1      = 'E'
            matnr          = w_matnr
            charg          = w_lgort
          EXCEPTIONS
            foreign_lock   = 1
            system_failure = 2
            OTHERS         = 99.

По другому не получится?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Блокировка партии.
СообщениеДобавлено: Ср, июн 26 2013, 22:41 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Вообще, в таких случаях должен помочь LOCAL UPDATE, а не блокировка.
Если проводки делаете при помощи BAPI, то перед каждой транзакцией нужно сказать
Code:
SET UPDATE TASK LOCAL.

а если через CALL TRANSACTION USING, то нужно добавить UPDATE 'L'.
Хорошо тем, что процесс детерминирован - после успешного окончания транзакции у вас гарантированно будут обновлены данные и сняты блокировки.

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блокировка партии.
СообщениеДобавлено: Чт, июн 27 2013, 13:37 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Сергей Королев написал:
Вообще, в таких случаях должен помочь LOCAL UPDATE, а не блокировка.

Может помочь, но не в 100% случаев.
В случае вызова в обновлении ФМ ..IN BACKGROUND TASK такой вариант может не пройти.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блокировка партии.
СообщениеДобавлено: Пт, июн 28 2013, 09:10 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июн 01 2005, 07:11
Сообщения: 223
Откуда: Нижневартовск->Москва
Пол: Женский
Удав написал(а):
Проблема решается с помощью проверки блокировки партии в цикле с задержкой.
Обычно 300 попыток блокировки с перерывом в секунду между ними достаточно для большинства случаев. В особо тяжелых случаях приходилось увеличивать количество попыток до 500...

300-500 секунд при проводке ДМ?
Секундная задержка, ИМХО, очень сурово. Можно просто в цикле вызывать вызывать ФМ блокировки пока дело не увенчается успехом. Нужно только ограничть количество итераций очень большим числом, чтобы насовсем не застрять в цикле.
Можно еще с параметром _wait фм блокировки вызывать. Только я не знаю сколько у него продолжительность _wait

_________________
Всегда открыта новым авантюрам!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блокировка партии.
СообщениеДобавлено: Пт, июн 28 2013, 09:25 
Председатель
Председатель

Зарегистрирован:
Чт, май 10 2007, 09:15
Сообщения: 1558
Пробую, но пока не помогает.

точнее не помогает update 'L' для CALL TRANSACTION USING
а SET UPDATE TASK LOCAL. - работает.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Блокировка партии.
СообщениеДобавлено: Пт, июн 28 2013, 09:28 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
superbizon написала:
Удав написал(а):
Проблема решается с помощью проверки блокировки партии в цикле с задержкой.
Обычно 300 попыток блокировки с перерывом в секунду между ними достаточно для большинства случаев. В особо тяжелых случаях приходилось увеличивать количество попыток до 500...

300-500 секунд при проводке ДМ?
Секундная задержка, ИМХО, очень сурово.

300-500 секунд - это при обработке документа транспортировки со 100 поставками или при обработке документа FM с большим количеством позиций со ссылками на другие документы ;)
Кроме этого, если включена внешняя проверка доступности запасов (ATP), то и сохранение документа материала может затянуться.
Секундная задержка при вводе данных - это не "сурово" :D

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блокировка партии.
СообщениеДобавлено: Пт, июн 28 2013, 10:24 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, окт 22 2009, 12:41
Сообщения: 473
Мы тоже остановились на использовании в таких случаях цикла с попыткой заблокировать объект с параметром _wait. Как именно система будет пытаться ждать определяют системные параметры enque/delay_max, enque/delay_max_refine, enque/delay_jitter (задаются в профиле аппликейшн сервера).
Code:
enque/delay_max - длительность попыток блокировки (в секундах) (по умолчанию 5)
enque/delay_max_refine - количество попыток блокировки в секунду (по умолчанию 1)
enque/delay_jitter - время (в мс) в пределах которого будет отклоняться время ожидания (по умолчанию 200)
Т.е. при параметрах по умолчанию система будет пытаться заблокировать объект в течение 5 секунд, с рандомным временем между попытками от 800мс до 1200мс.
Источник: нота 654328 (она не совсем по этой теме, но похожая информация уже не раз встречалась).


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

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


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

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


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

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