Текущее время: Ср, июл 30 2025, 21:38

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: блокировка
СообщениеДобавлено: Вт, сен 22 2009, 15:35 
Специалист
Специалист

Зарегистрирован:
Вс, янв 11 2009, 11:05
Сообщения: 152
Пол: Мужской
Господа!
есть множество таблиц всяких A551, A553 с условиями всякими.
таких таблиц много.
нужно сделать их блокировку по полям KAPPL/KSCHL/VKORG/VTWEG/SPART/AUBEL.
ну естественно по тем полям из указанных, которые присуствуют в этих таблицах.
есть ФМ ENQUEUE_E_TABLE, в который типа передаешь название таблицы и ключ.

поля KAPPL/KSCHL/VKORG/VTWEG/SPART вроде как во все таблицах идут без разрывов
а вот AUBEL может находиться еще через какие нить ключевые поля.
как для ENQUEUE_E_TABLE в таком случае строится должен ключ?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: блокировка
СообщениеДобавлено: Ср, сен 23 2009, 11:48 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, май 14 2007, 13:05
Сообщения: 561
Откуда: Москва
IMHO - поле AUBEL никак не включить, так как VARKEY можно построить только ключевыми полями по порядку без разрывов. (f1, f2, f3...)

_________________
Sapere aude!


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: блокировка
СообщениеДобавлено: Ср, сен 23 2009, 16:39 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 13 2006, 16:44
Сообщения: 55
Пол: Мужской
Можно зачитать структуру очередной A* таблицы ФМ DDIF_NAMETAB_GET, и определить ключевые поля по DFIES_TAB-KEYFLAG. Там же будут и длины и оффсеты полей.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: блокировка
СообщениеДобавлено: Ср, сен 23 2009, 21:47 
Специалист
Специалист

Зарегистрирован:
Вс, янв 11 2009, 11:05
Сообщения: 152
Пол: Мужской
поля-то получить я могу, но как узнавать какие значения подставлять в ключ для блокировки, поля обозначенные точками
KAPPL/KSCHL/VKORG/VTWEG/SPART/..../AUBEL?
Можно конечно делать динамическую табличку структуры соответствующей А*-таблицы. Зачитывать в нее данные по нужным мне KAPPL/KSCHL/VKORG/VTWEG/SPART/AUBEL и вызывать блокировку заполняя поля обозначенные точками значениями из выборки.
Но таблиц много, а динамически сап не дает бесконечно таблицы создавать.
Да и как-то это.....

Я думал может есть какая-нить возможность блокировки типа по заданной маске...


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: блокировка
СообщениеДобавлено: Пт, сен 25 2009, 16:11 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 13 2006, 16:44
Сообщения: 55
Пол: Мужской
Во-первых, если задача требует одновременной блокировки такого количества таблиц да еще и по всем значениям, то задача явно поставлена некорректно.

Во-вторых, получив описание таблицы можно динамически делать со структурами данных практически что угодно, используя field-symbols.

В-третьих, чтобы заблокировать все содержимое таблицы, надо вызывать фм блокировки не передавая никаких значений полей, поле VARKEY там OPTIONAL.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: блокировка  Тема решена
СообщениеДобавлено: Вс, сен 27 2009, 02:12 
Специалист
Специалист

Зарегистрирован:
Чт, июн 21 2007, 09:14
Сообщения: 166
Откуда: Москва
Пол: Мужской
можно попробовать на месте "пропусков" забить символ "собака" @, количество собак равно длине поля, VARKEY будет выглядеть примерно так (пусть ключ состоит из 3-х атрибутов f1 f2 f3 длины 6 5 4, "пропускаем" второй атрибут):
'ABCDEF@@@@@FGHJ'.
Но при этом нужно учесть, что блокировка будет "родовая" (generic), т.е. блокироваться будут все записи по предикату
f1 = 'ABCDEF' and f2 = '%' and f3 = 'FGHJ'.
Вот, что-то типа того.
Можно заполнять не полностью собаками, т.е. фомировать маски не полностью по всему атрибуту, а по некоторому подмножеству:
'ZXC@@' соответствует условию f2 = 'ZXC__', т.е все записи, начинающиеся с ZXC, имеющие любые последние два символа.

Цитата:
Зачитывать в нее данные по нужным мне KAPPL/KSCHL/VKORG/VTWEG/SPART/AUBEL и вызывать блокировку заполняя поля обозначенные точками значениями из выборки.

этот вариант может не прокатить, если записей в таблице очень много - будет переполнение таблицы блокировок на сервере приложений: при вызове ФМ ENQUEUE_XXX вы получите исключение типа system_failure (при n-м вызове ФМ, если блокируете по одиночке, или сразу, если используется FLUSH_ENQUEUE). Встречал переполнение всего-то при 50 тыс. записей блокирования.


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

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


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

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


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

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