SAPфорум.RU
https://sapboard.ru/forum/

Объект блокировки
https://sapboard.ru/forum/viewtopic.php?f=13&t=83269
Страница 1 из 3

Автор:  skaa [ Ср, июл 17 2013, 16:53 ]
Заголовок сообщения:  Объект блокировки

Добрый день.
Подскажите как можно решить проблему.
Есть z-транзакция, в которой сбытовые заказы объединяются в группы. Когда сбытовой заказ добавляется в группу в этой z-транзакции, то на этой заказ должна ставиться блокировка, чтобы другой пользователь при работе с этой z-транзакцией не добавил этот заказ, в это же самое время в другую группу. Если использовать стандартый объект блокировки EVVBAKE, то при работе z-транзакции блокируется заказы и в стандартных транзакциях, а этого не нужно. Возможно ли как-то блокировать сбытовой заказ только для данной z-транзакции.

Автор:  weise [ Ср, июл 17 2013, 17:00 ]
Заголовок сообщения:  Re: Объект блокировки

Свой объект блокировки?

Автор:  skaa [ Ср, июл 17 2013, 17:04 ]
Заголовок сообщения:  Re: Объект блокировки

Пробовал, но всё-равно в своем объекте блокировки блокируется запись таблицы vbak с данным заказом, что приводит к тому что стандартные транзакции тоже видят мои блокировки.

Автор:  D.Krokhun [ Ср, июл 17 2013, 17:08 ]
Заголовок сообщения:  Re: Объект блокировки

A shared lock не подойдёт?

Автор:  skaa [ Ср, июл 17 2013, 17:16 ]
Заголовок сообщения:  Re: Объект блокировки

А что подразумеваете под shared lock?

Автор:  D.Krokhun [ Ср, июл 17 2013, 17:17 ]
Заголовок сообщения:  Re: Объект блокировки

Для объекта блокировки указать режим блокировки.
Цитата:
Shared lock

Several users can read the same data at the same time, but as soon as a user edits the data, a second user can no longer access this data. Requests for further shared locks are accepted, even if they are issued by different users, but exclusive locks are rejected.

Автор:  D.Krokhun [ Ср, июл 17 2013, 17:18 ]
Заголовок сообщения:  Re: Объект блокировки

Ну либо завести в программе таблицу в которую вносить записи блокировки пользователем. Т.е. реализовать некое подобие своего объекта блокировки.

Автор:  skaa [ Ср, июл 17 2013, 17:32 ]
Заголовок сообщения:  Re: Объект блокировки

Режим Shared lock не помог. Можно конечно реализовать свой аналог саповской блокировки, например через z-табличку, или через abap-память, но это на крайний случай.

Автор:  ArmAnn [ Ср, июл 17 2013, 17:42 ]
Заголовок сообщения:  Re: Объект блокировки

skaa написал(а):
Пробовал, но всё-равно в своем объекте блокировки блокируется запись таблицы vbak с данным заказом, что приводит к тому что стандартные транзакции тоже видят мои блокировки.

Что то вы не так понимаете и/или делаете - стандартные транзакции не знают про ваш объект блокировки, и соответственно они не обращают на него никакого внимания

Цитата:
Можно конечно реализовать свой аналог саповской блокировки, например через z-табличку, или через abap-память
Забудьте про это, лучше разберитесь со стандартным механизмом блокировок

Автор:  skaa [ Чт, июл 18 2013, 09:14 ]
Заголовок сообщения:  Re: Объект блокировки

Я делаю следующим образом:
Копирую стандартный объект блокировки EVVBAKE в свой z-объект блокировки EZVVBAKE.
Далее вызываю ФМ для своего z-объекта блокировки:
Code:
DATA vbeln TYPE vbeln.
vbeln = '0000000003'.
CALL FUNCTION 'ENQUEUE_EZVVBAKE'
  EXPORTING
    vbeln                =  vbeln
  EXCEPTIONS
    foreign_lock         = 1
    system_failure       = 2
    OTHERS               = 3
          .
break-point.


И на момент break-pointa захожу в стандартный заказ va02 который заблокировался(хотя в в стандарте используется свой объект блокировки). Что я делаю не так?

Автор:  nicky555 [ Чт, июл 18 2013, 09:31 ]
Заголовок сообщения:  Re: Объект блокировки

ФМ блокировки - средство внести запись в таблицу блокировок и ничего более. В таблице блокировок НЕТ ссылки на ФМ блокирования, но есть ссылка на таблицу данных, которые блокируются.
Скопировав стандартный объект блокирования (ФМ блокировок) и вызвав его, вы не поменяли таблицу - посмотрите SM12. Результат вызова стандартного объекта блокирования и вашей копии будет идентичен.
Сделайте какой-нибудь фиктивный объект блокирования, не связанный с таблицей стандартного объекта блокирования (на форуме эта тема поднималась неоднократно).

Автор:  skaa [ Чт, июл 18 2013, 10:08 ]
Заголовок сообщения:  Re: Объект блокировки

Спасибо. Фиктивный объект блокирования на фиктивную z-таблицу помог

Автор:  D.Krokhun [ Чт, июл 18 2013, 11:20 ]
Заголовок сообщения:  Re: Объект блокировки

Можно обойтись стандартным объектом, просто указав в параметре mandt, например, '1'.

Автор:  skaa [ Чт, июл 18 2013, 11:59 ]
Заголовок сообщения:  Re: Объект блокировки

Необычный способ вы придумали!
Интересно есть ли у этого способа какие-то подводные камни.
Например не будут ли в двух разных мандантах блокироваться
заказы с одинаковыми номерами?

Автор:  D.Krokhun [ Чт, июл 18 2013, 12:07 ]
Заголовок сообщения:  Re: Объект блокировки

Я бы тоже хотел узнать об этом =)
Но если ваше предположение верно, можно, например передавать в параметр текущий мандант с '_'.

Code:
Concatenate '_' sy-mandt into l_mandt.

Страница 1 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/