Текущее время: Чт, июн 05 2025, 18:04

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 42 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Блокировка
СообщениеДобавлено: Пт, ноя 12 2004, 16:26 
Гость
Уважаемые Знатоки!!
Подскажите плз, как программно управлять блокировками записей:
1. существует объект блокировки
2. при вызове некоторой программы устанавливается блокировка на запись согласно этому объекту блокировки
3. по завершению выполнения данной проги, блокировка автоматом снимается с записи
Требуется: создавать блокировку таким образом, чтобы она существовала до тех пор, пока ее принудительно не снимешь, т.е. не зависимо от того отработала прога или нет. При чем снимать блокировку требуется из другой программы.
Может быть кто-дь знает что нужно делать?
спасибо


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 12 2004, 16:35 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
А в SAP'е блокировками только программно и управляют.
Хочешь - ставишь блокировку. Не хочешь - не ставишь. Хочешь - проверяешь, есть ли чужие блокировки. Не хочешь - игнорируешь их. Все исключительно на совести программера :-).

Не сделано в SAP'е блокировок на низком уровне :-( . Не знаю, почему.

А для убивания любых чужих блокировок транзакция специальная есть. SM12 называется.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 12 2004, 16:36 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
111 написал(а):
Хочешь - ставишь блокировку. Не хочешь - не ставишь. Хочешь - проверяешь, есть ли чужие блокировки. Не хочешь - игнорируешь их.


...хочешь - снимаешь блокировку. Не хочешь - не снимаешь. Автоматом там ничего не ставится и не снимается.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 12 2004, 16:40 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
Технически это выглядит так.
Находишь любой ФМ, блокирующий записи, по маске *ENQUEUE*.
Потом находишь любой ФМ, снимающий блокировку, по маске *DEQUEUE*.
Изучаешь их работу - там все просто до дебилизма.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 12 2004, 16:42 
Гость
а кто-дь может мне пример привести установки и удаления блокировок минуя транзакцию sm12.
т.к. я ею проверяла наличие блокировок: когда прога работает - блокировка есть, прога отработала - и блокировка удалилась, что мне как раз не нужно
спасибо


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 12 2004, 16:44 
Гость
111 написал(а):
Технически это выглядит так.
Находишь любой ФМ, блокирующий записи, по маске *ENQUEUE*.
Потом находишь любой ФМ, снимающий блокировку, по маске *DEQUEUE*.
Изучаешь их работу - там все просто до дебилизма.


как раз этот способ и не прокатил, именно так и делаю...


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 12 2004, 16:45 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
deep shark написал(а):
а кто-дь может мне пример привести установки и удаления блокировок минуя транзакцию sm12.
т.к. я ею проверяла наличие блокировок: когда прога работает - блокировка есть, прога отработала - и блокировка удалилась, что мне как раз не нужно
спасибо


Блокировка удалилась только потому, что эта программа "убрала за собой" - внутри нее вызвался ФМ, удаляющий блокировку, которую эта же программа поставила раньше. И все.
Пример установки и удаления см. в любом ФМ, о которых я говорил выше.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 12 2004, 16:47 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
deep shark написал(а):
111 написал(а):
Технически это выглядит так.
Находишь любой ФМ, блокирующий записи, по маске *ENQUEUE*.
Потом находишь любой ФМ, снимающий блокировку, по маске *DEQUEUE*.
Изучаешь их работу - там все просто до дебилизма.


как раз этот способ и не прокатил, именно так и делаю...


Что значит - "не прокатил"?
Что именно не прокатило? Например, в этом ФМ:
===========================
FUNCTION ENQUEUE_ARRAY.
*"----------------------------------------------------------------------
*"Lokale Schnittstelle:
*" IMPORTING
*" DEQUEUE DEFAULT SPACE
*" GOBJ LIKE SEQG3-GOBJ DEFAULT 'ENQARRAY'
*" EXPORTING
*" COLLISION_GOBJ LIKE SEQG3-GOBJ
*" COLLISION_GUNAME LIKE SEQG3-GUNAME
*" TABLES
*" ENQ_ARRAY STRUCTURE SEQTA
*" EXCEPTIONS
*" ARGUMENT_ERROR
*" FOREIGN_LOCK
*" OWN_LOCK
*" SYSTEM_FAILURE
*" TABLE_OVERFLOW
*"----------------------------------------------------------------------

DATA: SEQTA_SEND LIKE SEQTA OCCURS 50,
OPCODE LIKE SEQAREA-OPCODE,
SCOPE LIKE SEQAREA-SCOPE,
RC LIKE SY-SUBRC.

CASE DEQUEUE.
WHEN ' '.
OPCODE = '1'.
SCOPE = '2'.
WHEN 'X'.
OPCODE = '2'.
SCOPE = '3'.
WHEN OTHERS.
MESSAGE A114 RAISING ARGUMENT_ERROR.
* Fehlerhafter Aufruf-Parameter
ENDCASE.
PERFORM ADD_MANDT TABLES ENQ_ARRAY SEQTA_SEND.
PERFORM FLUSH_LIST(SAPLSENA)
TABLES SEQTA_SEND
USING OPCODE SCOPE ' ' ' ' GOBJ ' '
CHANGING RC COLLISION_GUNAME COLLISION_GOBJ.
CASE RC.
WHEN 0.
WHEN 1.
MESSAGE A111 RAISING OWN_LOCK.
* Bereits bestehende eigene Sperre verhindert weitere eigene Sperren
WHEN 2.
MESSAGE A110 WITH COLLISION_GUNAME RAISING FOREIGN_LOCK.
* Objekt ist momentan gesperrt durch User &
WHEN 4.
MESSAGE A112 RAISING TABLE_OVERFLOW.
* Sperrtabelle ist momentan ќbergelaufen
WHEN OTHERS.
MESSAGE A113 RAISING SYSTEM_FAILURE.
* Systemfehler bei Sperroperation (Bitte in SM12 Diagnose ausfќhren)
ENDCASE.

ENDFUNCTION.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 12 2004, 16:49 
Гость
111 написал(а):
deep shark написал(а):
а кто-дь может мне пример привести установки и удаления блокировок минуя транзакцию sm12.
т.к. я ею проверяла наличие блокировок: когда прога работает - блокировка есть, прога отработала - и блокировка удалилась, что мне как раз не нужно
спасибо


Блокировка удалилась только потому, что эта программа "убрала за собой" - внутри нее вызвался ФМ, удаляющий блокировку, которую эта же программа поставила раньше. И все.
Пример установки и удаления см. в любом ФМ, о которых я говорил выше.

конечно спасибо, но именно таким образом и поступила... ФМ, который бы удалял блокировку я не вызываю... проверяла много раз...
... будем искать.... :((((


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 12 2004, 16:51 
Гость
111 написал(а):
deep shark написал(а):
111 написал(а):
Технически это выглядит так.
Находишь любой ФМ, блокирующий записи, по маске *ENQUEUE*.
Потом находишь любой ФМ, снимающий блокировку, по маске *DEQUEUE*.
Изучаешь их работу - там все просто до дебилизма.


как раз этот способ и не прокатил, именно так и делаю...


Что значит - "не прокатил"?
Что именно не прокатило? Например, в этом ФМ:
===========================
FUNCTION ENQUEUE_ARRAY.
*"----------------------------------------------------------------------
*"Lokale Schnittstelle:
*" IMPORTING
*" DEQUEUE DEFAULT SPACE
*" GOBJ LIKE SEQG3-GOBJ DEFAULT 'ENQARRAY'
*" EXPORTING
*" COLLISION_GOBJ LIKE SEQG3-GOBJ
*" COLLISION_GUNAME LIKE SEQG3-GUNAME
*" TABLES
*" ENQ_ARRAY STRUCTURE SEQTA
*" EXCEPTIONS
*" ARGUMENT_ERROR
*" FOREIGN_LOCK
*" OWN_LOCK
*" SYSTEM_FAILURE
*" TABLE_OVERFLOW
*"----------------------------------------------------------------------

DATA: SEQTA_SEND LIKE SEQTA OCCURS 50,
OPCODE LIKE SEQAREA-OPCODE,
SCOPE LIKE SEQAREA-SCOPE,
RC LIKE SY-SUBRC.

CASE DEQUEUE.
WHEN ' '.
OPCODE = '1'.
SCOPE = '2'.
WHEN 'X'.
OPCODE = '2'.
SCOPE = '3'.
WHEN OTHERS.
MESSAGE A114 RAISING ARGUMENT_ERROR.
* Fehlerhafter Aufruf-Parameter
ENDCASE.
PERFORM ADD_MANDT TABLES ENQ_ARRAY SEQTA_SEND.
PERFORM FLUSH_LIST(SAPLSENA)
TABLES SEQTA_SEND
USING OPCODE SCOPE ' ' ' ' GOBJ ' '
CHANGING RC COLLISION_GUNAME COLLISION_GOBJ.
CASE RC.
WHEN 0.
WHEN 1.
MESSAGE A111 RAISING OWN_LOCK.
* Bereits bestehende eigene Sperre verhindert weitere eigene Sperren
WHEN 2.
MESSAGE A110 WITH COLLISION_GUNAME RAISING FOREIGN_LOCK.
* Objekt ist momentan gesperrt durch User &
WHEN 4.
MESSAGE A112 RAISING TABLE_OVERFLOW.
* Sperrtabelle ist momentan ќbergelaufen
WHEN OTHERS.
MESSAGE A113 RAISING SYSTEM_FAILURE.
* Systemfehler bei Sperroperation (Bitte in SM12 Diagnose ausfќhren)
ENDCASE.

ENDFUNCTION.

спасибо, попробую топорно повторить...


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 12 2004, 17:15 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
deep shark написал(а):
спасибо, попробую топорно повторить...


Да вообще-то, можно и не повторять топорно - а просто использовать этот ФМ :-).
Аргументы только правильно заполнить. А именно, поля ENQ_ARRAY-GARG .

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 12 2004, 17:19 
Гость
111 написал(а):
deep shark написал(а):
спасибо, попробую топорно повторить...


Да вообще-то, можно и не повторять топорно - а просто использовать этот ФМ :-).
Аргументы только правильно заполнить. А именно, поля ENQ_ARRAY-GARG .

я именно это и сделала, и что вы думаете !?!?!?
эффект тот же!!! : пока ФМ, из которого я этот ФМ вызываю, активен - блокировка ЕСТЬ, выхожу из ФМ - блокировки НЕТ.
вы сами <я не знать русский языка>?


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 12 2004, 17:24 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, ноя 12 2004, 10:44
Сообщения: 370
Откуда: Москва
пробовали, такого не бывает :-) это фантастика...


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 12 2004, 17:32 
Гость
holocron написал(а):
пробовали, такого не бывает :-) это фантастика...

значит вы еще не все видели :))))
всю эту лабуду я вызываю из RFC, которую, с свою очередь, запускаю из транзакции SE80. и у меня стандартно блокировка убивается когда эта RFC - не активна.
вот так...
и все-таки, какой-дь дельный совет будет?
все предложенное не катит...
спасибо


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:   Тема решена
СообщениеДобавлено: Пт, ноя 12 2004, 17:38 
Гость
1) При создании объекта блокировки генерируется модули, которые собственно и создают блокировку 'ENQUEUE' -установить, 'DEQUEUE' -снять блокировку
2) При завершении программы блокировка снимается автоматом. Все дело в том, что инфа по блокированию хранится в памяти системы, нет таблицы куда бы она писалась.
3) Как вариант для "поставили в одной программе - сняли в другой" - написание собственных таблиц для учета блокирования. Только геморрой это.


Пометить тему как нерешенную
Вернуться к началу
  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 42 ]  На страницу 1, 2, 3  След.

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


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

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


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

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