Текущее время: Вт, июл 22 2025, 22:09

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Ожидание сохранения изменений в БД.
СообщениеДобавлено: Вт, окт 09 2012, 14:51 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 06 2012, 10:00
Сообщения: 63
Итак, есть проблема:

Для проводок надо открывать и закрывать год. Делать это надо только на момент проводки, чтобы пользователи не могли вопсользоваться случаем и в закрытом периоде проводок не сделать.

Реализовано так:

Начало цикла по позициям проводки

1. Вызывается ФМ открытия года.
а - блокируется запись
б - меняется запись
в - в фоне запускается ФМ, проверяющий, закрылся ли наш год

2. запускается проводка

3. Вызывается ФМ закрытия года.
а) изменяется запись
б) деблокируется запись

Конец цикла

Если где-то между пунктами 1в и 3б программа "вылетит" - проверяющий ФМ закроет год.

Так вот, если выбираем несколько записей для проводки, то где-то после 4-5 циклов в пункте 1а вываливается ошибка, что объект ещё блокирован пользователем. По одной записи всё отлично отрабатывает.

Вопрос: Как убедиться, что запись уже деблокирована, кроме как
WHILE sy-subrc <> 0.
деблокировать
ENDWHILE.

и WAIT UP TO 1000 SECONDS.

????


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Ожидание сохранения изменений в БД.
СообщениеДобавлено: Вт, окт 09 2012, 15:24 
Специалист
Специалист

Зарегистрирован:
Пт, авг 24 2012, 11:48
Сообщения: 200
А у вас один и тот же объект блокируется получается в цикле столько раз сколько цикл идет? Если да, то это не совсем верно, его надо один раз заблочить и в цикле с этим объектом работать.
Если вы работаете допустим с 1000 позициями заказа, не надо 1000 раз позиции лочить, залочьте заказ и в цикле обрабатывайте позиции.

В ином случае конечно самое распространенное, что вы перечислили - WAIT и WHILE.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Ожидание сохранения изменений в БД.
СообщениеДобавлено: Вт, окт 09 2012, 15:34 
Специалист
Специалист

Зарегистрирован:
Пт, авг 24 2012, 11:48
Сообщения: 200
И кстати еще не забываем про параметр _SYNCHRON у ФМ DEQUEUE*

Controlling Deletion of the Lock Entry (DEQUEUE only)

The DEQUEUE function module also has the parameter _SYNCHRON.

If X is passed, the DEQUEUE function waits until the entry has been removed from the lock table. Otherwise it is deleted asynchronously, that is, if the lock table of the system is read directly after the lock is removed, the entry in the lock table may still exist.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Ожидание сохранения изменений в БД.
СообщениеДобавлено: Вт, окт 09 2012, 16:54 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 06 2012, 10:00
Сообщения: 63
К сожалению, у меня нет возможность заблокировать один раз. Посмотрю по поводу параметров синхронизации...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Ожидание сохранения изменений в БД.
СообщениеДобавлено: Ср, окт 10 2012, 11:43 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
попробуйте поставить wait с таймаутом в начале ,на блокирование записи,
при условии что блокировка своя.
с другой стороны, если она своя, то можно сбросить


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

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


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

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


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

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