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

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


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

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


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

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