Текущее время: Вс, июл 20 2025, 07:46

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


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

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


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

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