Текущее время: Пн, июл 28 2025, 17:31

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Блокировки и модуль обновления
СообщениеДобавлено: Ср, дек 26 2012, 08:02 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 20 2008, 16:29
Сообщения: 245
Откуда: RU->DE
Пол: Мужской
Добрый день.

Хочу написать по уму процедуру обновления таблицы.
Не могу понять как правильно это сделать.

Идея такая:
1. Блокирую запись (ENQUEUE_ЗАПИСЬ)
2. Запускаю ФМ делающий прямой DB-update (CALL FUNCTION IN UPDATE TASK)
3. Потом где нибудь делаю COMMIT или ROLLBACK в зависимости от разных условий

В связи с этим вопрос - когда и где нужно делать снятие блокировки?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блокировки и модуль обновления
СообщениеДобавлено: Ср, дек 26 2012, 08:27 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
Поглядите описание параметра _SCOPE
Function Modules for Lock Requests


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блокировки и модуль обновления
СообщениеДобавлено: Ср, дек 26 2012, 08:42 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 20 2008, 16:29
Сообщения: 245
Откуда: RU->DE
Пол: Мужской
Я так понимаю этот параметр контролирует поведение блокировки в случае, если блокирование было выполнено в UPDATE TASK.

У меня идея была другой (вполне допускаю что неверная):

Есть у меня ФМ (в 2х словах):

FUNCTION z_record_change.

CALL FUNCTION 'ENQUEUE_RECORD'.
IF sy-subrc <> 0.
RAISE EXCEPTION ay_ay_ay.
EXIT.
ENDIF.

CALL FUNCTION 'Z_RECORD_DB_UPDATE'
IN UPDATE TASK.

ENDFUNCTION.



Т.е. идея такая:
Устанавливая блокировку НЕ в UPDATE TASK я заранее узнаю не занята ли эта запись и блокирую её под себя. Таким образом запускающая программа сразу знает - была ли ошибка или нет.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блокировки и модуль обновления  Тема решена
СообщениеДобавлено: Ср, дек 26 2012, 08:54 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
BaBuin написал:
Я так понимаю этот параметр контролирует поведение блокировки в случае, если блокирование было выполнено в UPDATE TASK.

Неправильно понимаете. В вашем примере блокировка сама снимется после commit-а (по умолчанию _SCOPE = 2)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блокировки и модуль обновления
СообщениеДобавлено: Ср, дек 26 2012, 08:59 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
zsap написал:
BaBuin написал:
Я так понимаю этот параметр контролирует поведение блокировки в случае, если блокирование было выполнено в UPDATE TASK.

Неправильно понимаете. В вашем примере блокировка сама снимется после commit-а

Не совсем сразу после коммита.
Если в ФМ ENQUEUE_RECORD _scope указан '2' (обычно по умолчанию), то блокировка снимется после завершения приоритетных модулей обновления V1 (в том числе и Z_RECORD_DB_UPDATE, если он объявлен как V1)

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блокировки и модуль обновления
СообщениеДобавлено: Ср, дек 26 2012, 09:43 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 20 2008, 16:29
Сообщения: 245
Откуда: RU->DE
Пол: Мужской
Спасибо большое. Чувствую что пробелов в этом направлении у меня хватает. Пошёл изучать теорию.


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

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


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

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


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

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