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

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


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

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


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

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