Текущее время: Ср, июл 02 2025, 12:58

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: появление записи в таблице и блокировки
СообщениеДобавлено: Ср, май 31 2006, 12:14 
Ассистент
Ассистент

Зарегистрирован:
Вт, фев 01 2005, 15:01
Сообщения: 25
Здравствуйте, коллеги.

Помогите разобраться в вопросах сессии, коммитах и блокировках.

Вот если бы я законнектился к sql-серверу, сделал insert/update/delete, но не сказал commit, то, как я понимаю, изменения я в рамках коннекта к базе видеть буду, но в прочих коннектах изменения не видны, пока я не скажу commit.

Теперь в r/3. Я делаю batch-input, получаю через get parameter номер созданного документа и делаю по нему select из таблицы заголовка. Вот если я получаю данные заголовка (ну и subrc = 0 соответственно), то могу я быть уверенным, что commit закончился успешно и окончательно и блокировки тоже сняты? Или единственно надежным способом является использование логики программы RSENQRR2 (как вариант, ее же и от-submit-ить)? Мне надо после этого batch-input-а сразу же еще один сделать с этими же объектами (материалами в моем случае). Не хотелось бы на блокировки нарваться.

Спасибо.
Константин


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 31 2006, 12:35 
Специалист
Специалист

Зарегистрирован:
Чт, авг 19 2004, 07:31
Сообщения: 234
Откуда: Нижнекамск
блокировок не будет точно
а если получаешь subrc = 0 после селекта то прошел и COMMIT потому как CALL TRANSACTION запускается вроде как в другом LUW
ну если конечно всё происходит в синхронном режиме, а в случае асинхронного можешь не получить subrc = 0 потому как не прошел UPDATE еще


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 31 2006, 12:37 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Делайте batch-input в режиме UPDATE 'L', тогда обновление (и сброс блокировок) будет происходить в той же задаче, и после выхода из транзакции у вас гарантированно данные будут уже в базе, а блокировки будут сняты.
Была какая-то нота, после применения которой с тем же успехом можно использовать UPDATE 'S', но номер не помню. Без этой ноты UPDATE 'S' иногда не успевает сбросить блокировки.
Через GET PARAMETER не оч. хорошо номер документа считывать, лучше собрать сообщения и там найти.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 31 2006, 13:14 
Ассистент
Ассистент

Зарегистрирован:
Вт, фев 01 2005, 15:01
Сообщения: 25
Стало быть, факт наличия записи - гарантия неотвала последующего batch-input-а по причине блокировки из-за предшественника. В моем случае именно это важно. Так и сделаю (и UPDATE-атрибут задействую обязательно).

Большое спасибо за помощь!
Константин.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 02 2006, 14:43 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
Сергей Королев написал:
Делайте batch-input в режиме UPDATE 'L', тогда обновление (и сброс блокировок) будет происходить в той же задаче, и после выхода из транзакции у вас гарантированно данные будут уже в базе, а блокировки будут сняты.


Очень спорная техника. Особенно для использования в чужих больших транзакциях. Вот что пишет хелп:

This statement specifies that the high-priority update function modules - registered during the current SAP LUW using CALL FUNCTION ... IN UPDATE TASK - are registered in the ABAP memory instead of the VBLOG database table. In addition, it specifies that the current work process and not the update work process run these modules during the current database LUW, when the COMMIT WORK statement is executed. This statement has no effect on low-priority update function modules.

Я бы выделил здесь два "скользких" момента:
1. This statement has no effect on low-priority update function modules.
2. ... and not the update work process run these modules during the current database LUW, when the COMMIT WORK statement is executed.

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


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 02 2006, 14:59 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Ну все-таки надо учитывать, что основные таблицы будут обновлены с высоким приоритетом, т.е. в том же LUW. И блокировки будут сняты тогда же. Во всяком случае, бывали ситуации, когда нужно было создать цепочку документов и без режима 'L' не получалось.
В чужих больших транзакциях? Вы имеет в виду вызывать CALL TRANSACTION в юзер-экзитах? Согласен, что не стоит этого делать.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 02 2006, 16:42 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
Сергей Королев написал:
Ну все-таки надо учитывать, что основные таблицы будут обновлены с высоким приоритетом, т.е. в том же LUW. И блокировки будут сняты тогда же. Во всяком случае, бывали ситуации, когда нужно было создать цепочку документов и без режима 'L' не получалось.


Конечно, с большой долей вероятности этот способ сработает, однако надо учитывать и то, что есть вероятность, что он либо не сработает, либо - что ещё хуже - сработает некорректно.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июн 05 2006, 05:51 
Специалист
Специалист

Зарегистрирован:
Вт, ноя 02 2004, 10:06
Сообщения: 136
А вот эта ветка вас не устроит?
http://sapboard.ru/forum/viewtopic.php?t=15449


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июн 05 2006, 10:11 
Ассистент
Ассистент

Зарегистрирован:
Вт, фев 01 2005, 15:01
Сообщения: 25
EGF написал(а):
Конечно, с большой долей вероятности этот способ сработает, однако надо учитывать и то, что есть вероятность, что он либо не сработает, либо - что ещё хуже - сработает некорректно.

Блокировки интересовали для ракурсов материала и клиента, а они в V1-секции, насколько я понимаю.
Практически ситуация такая: надо по одной кнопке последовательно сделать отпуск материала, потом его же двинуть по складам, и затем на клиента нарисовать счет. Технически будет последовательность: batch-input для поставки, bapi для перемещения и batch-input для счета. Наверное для этих целей следовало бы использовать воркфлоу (я неправ?), но по ряду причин было принято решение сделать экран выбора заказов-позиций и по кнопке запустить процесс из трех транзакций.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июн 05 2006, 10:11 
Ассистент
Ассистент

Зарегистрирован:
Вт, фев 01 2005, 15:01
Сообщения: 25
qq написал(а):
А вот эта ветка вас не устроит?
http://sapboard.ru/forum/viewtopic.php?t=15449

Спасибо, попробую.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июн 05 2006, 10:42 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
platonov написал(а):
Наверное для этих целей следовало бы использовать воркфлоу (я неправ?)
Хорошая мысль, кстати. Там и встроенный механизм ожидания разблокировки есть. Так что рекомендую Workflow (на будущее, по крайней мере).

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


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

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


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

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


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

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