Меню

Особенности удаления блокировки в SM12

|

Рассмотрим ситуацию, когда сталкиваются интересы двух пользователей, желающих изменить один и тот же документ. Система, получая запрос на изменение данных, выставляет блокировку, запрещающую всем остальным менять документ, пока процесс изменения не будет завершен.

Оглавление

Особенности удаления блокировки в SM12

Пример ошибочной работы  с sm12

"И тут считать мы стали раны..."

Случаи, когда можно и нужно использовать sm12 без опаски

Рекомендации по безопасной работе с sm12

Вариант №1

Вариант №2

Вывод

Особенности удаления блокировки в SM12

Рассмотрим ситуацию, когда сталкиваются интересы двух пользователей, желающих изменить один и тот же документ. Система, получая запрос на изменение данных, выставляет блокировку, запрещающую всем остальным менять документ, пока процесс изменения не будет завершен. В случае, если кто-либо попытается изменить блокированный документ, система выставить информационное сообщение (рис. 1) о том, что ведение документа блокировано и укажет имя пользователя, проводящего текущее изменение:

Рис. 1. Сообщение о блокировке другим пользователем.

В этой ситуации рекомендуется либо дождаться завершения процесса другим пользователем, либо связаться с ним и уточнить, когда он закончит работу с нужным документом. Но достаточно часто пользователь не хочет ждать или связываться с другим пользователем, а обращается к администратору системы с требованием разблокировать документ.

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

Пример ошибочной работы с sm12

Рассмотрим пошагово простой пример по изменению постоянных данных пользователя  двумя различными пользователями с применением снятия блокировки записи.

1. Допустим, пользователь TEST_BC изменял в системе свои постоянные данные (рис. 2):

Рис. 2. Изменение собственных данных.

и устанавливает признак «Немедленный вывод» для устройства печати (рис. 3):

Рис. 3. Изменение устройства вывода.

но при этом еще не успел сохранить сделанные изменения по   (Ctrl-S). Не важно по какой причине: покинул свое рабочее место по срочному делу (например, вызвал начальник или ушел на кофе-брейк),  или же случилось непредвиденное (пропало питание на рабочем компьютере или произошел сбой в сети и связь с системой была утрачена) …

2. По «случайному» совпадению администратор ADM_WORK решил, предположим, изменить у пользователя TEST_BC устройство вывода на печать через SU01 и получает от системы следующее сообщение(рис. 4):

Рис. 4. Сообщение о блокировке и подробная информация по сообщению.

В подробной информации, которую можно получить по нажатию кнопки  , дается рекомендации повторить попытку, после завершения операции другим пользователем.

То есть, ADM_WORK должен дождаться, когда пользователь TEST_BC закончит операцию, сохранив свои изменения.

Допустим, что ждать нет времени, а связаться с пользователем TEST_BC нет возможности  и администратор ADM_WORK решает снять блокировку через SM12.

Посмотрим, что из этого в итоге получится …

3. Запускаем SM12, указав имя пользователя TEST_BC (рис. 5.):

Рис. 5.  Выбор записи блокирования в SM12.

Выбираем запись блокировки и нажимаем удаление (рис. 6.)  :

Рис. 6. Список записей блокирования.

Подтверждаем свое намерение удалить блокировку (рис. 7.):

Рис. 7. Удаление записи блокирования

Система предупреждает (лучше поздно, чем никогда) о потенциальной опасности удаления записи блокирования (рис. 8.):

Рис. 8. Предупреждение о потенциальной опасности удаления записи блокирования.

Если работаем с системой на русском языке, то предупреждения не будет ("привет" команде локализации!).

При этом в системном журнале (SM21) будет зафиксировано  удаление блокировки (рис. 9.):

Рис. 9. Запись об удалении записи блокировки в системном журнале

Поскольку блокировка основной записи пользователя  TEST_BC  удалена администратор ADM_WORK может назначить новое устройство вывода (рис. 10.):

Рис.

Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland

У вас уже есть учетная запись?

Войти

Обсуждения Количество комментариев9

Комментарий от  

Вячеслав Шиболов

  |  24 октября 2017, 09:32

Анатолий, добрый день.
 
Спасибо за статью.
 
Но у меня, если позволите, есть несколько дополнений.
Как вы отметили в своей статье, система блокировок на уровне SAP служит для предотвращения коллизий и поддержания целостности базы данных на уровне бизнеса. Удаление блокировок, как вы так же отметили, крайне опасная операция.
 
Таким образом, идти на поводу пользователя, который просит освободить ему документ и удалить блокировку другого пользователя, при работающем в системе пользователе, по моему мнению, крайне некорректно. Такая просьба должна быть отклонена с подробнейшим рассказом про устройство системы блокировок. Решение проблемы долго блокирующих документ пользователей должно быть перенесено на уровень менеджмента и дополнено донесением до пользователей системы правил работы с ней.
 
Удаление режима пользователя (вместе с блокировками) без согласования с ним и сохранением результатов его работы, тоже выглядит странно. Администратор должен использовать свою силу только в крайних случаях. Оценить объем работы пользователя администратор (через просмотр транзакций SM04 и SM12) не может. А вдруг человек полдня заполнял формы на экране? А администратор, взмахом мыши, идя на поводу кого-то, перечеркивает его работу?
 
Удалять блокировки, как вы и указали, можно только лишь в случаях "старых" блокировок, которые остались при выходе (корректном или нет) пользователя из системы. И только в крайнем случае.
 
В целом, статья полезна, но посыл я бы сделал другим:
1. Удалять блокировки нельзя.
2. Выкидывать пользователей из системы (тран. SM04) некорректно.
3. Пользователей, которые не могут что-то поменять из-за блокировок, учить и не идти у них на поводу.
4. Старые блокировки чистить крайне осторожно.
 
Ну и + за пример того, что будет, если два пользователя сохранят документ без работающей системы блокировок.
 
По поводу "камня в огород" команды локализации могу сказать, что локализация базисных программ и транзакций минимальна. Считается, что специалист по базису должен работать в системе на английском языке. Документация вся на английском, общение со службой поддержки по поводу проблем базиса тоже на английском.

Комментарий от  

Анатолий Халимовский

  |  24 октября 2017, 10:21

Анатолий, добрый день.
 
Спасибо за статью.
 
Но у меня, если позволите, есть несколько дополнений.
Как вы отметили в своей статье, система блокировок на уровне SAP служит для предотвращения коллизий и поддержания целостности базы данных на уровне бизнеса. Удаление блокировок, как вы так же отметили, крайне опасная операция.
 
Таким образом, идти на поводу пользователя, который просит освободить ему документ и удалить блокировку другого пользователя, при работающем в системе пользователе, по моему мнению, крайне некорректно. Такая просьба должна быть отклонена с подробнейшим рассказом про устройство системы блокировок. Решение проблемы долго блокирующих документ пользователей должно быть перенесено на уровень менеджмента и дополнено донесением до пользователей системы правил работы с ней.
 
Удаление режима пользователя (вместе с блокировками) без согласования с ним и сохранением результатов его работы, тоже выглядит странно. Администратор должен использовать свою силу только в крайних случаях. Оценить объем работы пользователя администратор (через просмотр транзакций SM04 и SM12) не может. А вдруг человек полдня заполнял формы на экране? А администратор, взмахом мыши, идя на поводу кого-то, перечеркивает его работу?
 
Удалять блокировки, как вы и указали, можно только лишь в случаях "старых" блокировок, которые остались при выходе (корректном или нет) пользователя из системы. И только в крайнем случае.
 
В целом, статья полезна, но посыл я бы сделал другим:
1. Удалять блокировки нельзя.
2. Выкидывать пользователей из системы (тран. SM04) некорректно.
3. Пользователей, которые не могут что-то поменять из-за блокировок, учить и не идти у них на поводу.
4. Старые блокировки чистить крайне осторожно.
 
Ну и + за пример того, что будет, если два пользователя сохранят документ без работающей системы блокировок.
 
По поводу "камня в огород" команды локализации могу сказать, что локализация базисных программ и транзакций минимальна. Считается, что специалист по базису должен работать в системе на английском языке. Документация вся на английском, общение со службой поддержки по поводу проблем базиса тоже на английском.

Вячеслав, спасибо за отзыв!
Основная цель статьи как раз и состояла в том чтобы донести до широких масс информацию о технических особенностях работы с блокировками. Описание того как регламентировать на проекте обработку такой ситуации не входило в мои планы.
Камнями я не разбрасываюсь - просто отметил что сообщение не возникает ВООБЩЕ. По вашему это допустимо?

Комментарий от  

Вячеслав Шиболов

  |  24 октября 2017, 10:38

Вячеслав, спасибо за отзыв!
Основная цель статьи как раз и состояла в том чтобы донести до широких масс информацию о технических особенностях работы с блокировками. Описание того как регламентировать на проекте обработку такой ситуации не входило в мои планы.
Камнями я не разбрасываюсь - просто отметил что сообщение не возникает ВООБЩЕ. По вашему это допустимо?

Нет, это недопустимо, но скорее всего никто не тестировал эту транзакцию на русском языке, так как она базисная. А базисник должен знать про опасность работы с блокировками без финального сообщения при их удалении. :)
В целом, я разделяю ваше возмущение. Но тут вопрос скорее к разработчику программы, а не локализаторам.

Комментарий от  

Анатолий Халимовский

  |  24 октября 2017, 11:04

Нет, это недопустимо, но скорее всего никто не тестировал эту транзакцию на русском языке, так как она базисная. А базисник должен знать про опасность работы с блокировками без финального сообщения при их удалении. :)
В целом, я разделяю ваше возмущение. Но тут вопрос скорее к разработчику программы, а не локализаторам.

Если для инфосообщения нет перевода, то окно не появится.

Комментарий от  

Олег Точенюк

  |  24 октября 2017, 23:09

===
И было бы неплохо, если бы создатели системы предусмотрели при удалении записи блокировки в SM12 автоматическое удаление сеанса
===
Ну, что вам сказать, уровень неожиданной смертности среди базиса может значительно повыситься, после реализации этой "неплохи" :-) Кстати пример не очень, как говорил господин Григорий Остер, надо копать глубже. Вы при проводке, например отпуска запаса, блокировку с ОЗМ так снимите и в параллельной сессии еще один документ проведите, а потом первый сохраните, это будет гораздо веселее :-)

Комментарий от  

Анатолий Халимовский

  |  25 октября 2017, 12:52

===
И было бы неплохо, если бы создатели системы предусмотрели при удалении записи блокировки в SM12 автоматическое удаление сеанса
===
Ну, что вам сказать, уровень неожиданной смертности среди базиса может значительно повыситься, после реализации этой "неплохи" :-) Кстати пример не очень, как говорил господин Григорий Остер, надо копать глубже. Вы при проводке, например отпуска запаса, блокировку с ОЗМ так снимите и в параллельной сессии еще один документ проведите, а потом первый сохраните, это будет гораздо веселее :-)

Олег, я упомянул в статье про более изощренные варианты:
"когда нечто подобное, описанному в примере, происходит с документом, при сохранении которого запускается цепочка документов и различные перерасчеты?"
Требовался пример простой.
И кстати, вопрос по SM12 был обычно первый, а иногда и единственный, который я задавал кандидатам ;)

Комментарий от  

Олег Точенюк

  |  25 октября 2017, 16:32

Олег, я упомянул в статье про более изощренные варианты:
"когда нечто подобное, описанному в примере, происходит с документом, при сохранении которого запускается цепочка документов и различные перерасчеты?"
Требовался пример простой.
И кстати, вопрос по SM12 был обычно первый, а иногда и единственный, который я задавал кандидатам ;)

Кандидатам на базис или и функциональным консультантам?

Комментарий от  

Анатолий Халимовский

  |  25 октября 2017, 17:07

Кандидатам на базис или и функциональным консультантам?

На базис естественно

Комментарий от  

Сергей Куприянов

  |  19 февраля 2019, 12:40

Добрый день!
 
А можно как-то однозначно связать запись блокировки в SM12 и сессию пользователя в SM04? Пользователи работают через портал, кода транзакции в SM12 нет. На каждую сессию пользователя в портале - в SM04 отдельная сессия с типом HTTP.
Получить список SM04 можно так:
DATA(lt_session_list) = cl_system_info=>get_session_list( ).
Очередь блокировок через CALL FUNCTION 'ENQUEUE_READ'
но связать блокировку с сессией не получается. Есть какие-то еще варианты?
С уважением Сергей