Методика создания варианта транзакции: транзакция SHD0
В статье изложена методика создания собственных вариантов транзакций. Целью создания собственных вариантов для стандартной транзакция, может быть ситуация, когда необходимо выполнить предзаполнение некоторых полей стандартной транзакции определенными фиксированными значениями или же скрыть некоторые поля ввода, если стандартными способами для транзакции, такой возможности нет.
Аннотация
В статье изложена методика создания собственных вариантов транзакций. Целью создания собственных вариантов для стандартной транзакция, может быть ситуация, когда необходимо выполнить предзаполнение некоторых полей стандартной транзакции определенными фиксированными значениями или же скрыть некоторые поля ввода, если стандартными способами для транзакции, такой возможности нет.
1. Описание проблемы.
Создание основных записей материала в системе выполняют разные сотрудники компании. Для каждого сотрудника выделен собственная отрасль и вид материала, с которыми он имеет право работать. Проблема заключается в том, что если по отрасли есть возможность стандартного ограничения для пользователя по коду (для вида) отрасли, то для вида материала стандартной настройки ограничений нет. Но система позволяет создать варианты транзакций, при этом в каждом варианте есть возможность ограничения ввода данных в полях транзакций.
Ниже будет представлено пошаговое описание процесса создания собственного варианта транзакции и создание собственной транзакции варианта.
2. Создание варианта транзакции.
Вводим код начальной транзакции, в данном случае, транзакция создания основной записи материала это MM01 - Создание основной записи материала. Далее вводим код варианта. Для примера пусть будет ZMM01_FERT - т.е. создание ОЗМ вида FERT. После этого нажимаем кнопку создать вариант вверху экрана, рисунок:1: SHD0-1.png.
Рисунок 1: SHD0-1.png
Система переходит в режим выполнения транзакции создания материала. Вводим на экране вид отрасли E - Энергетика и вид материала FERT - готовая продукция, рисунок 2: SHD0-2.png.Так как нам не нужно предзаполнять другие экраны для ММ01 (нас интересует только первый экрана транзакции, где мы заполнили отрасль и тип материала), то для возврата к ведению варианта, необходимо нажать кнопку выхода из транзакции в верху экрана.
Рисунок 2: SHD0-2.png
После выхода из транзакции создания материала, система выдаст экран настройки параметров варианта для первого экрана транзакции. Тут следует сделать поля отрасли и вида материала, недоступными для ввода, для этого необходимо установить галки в колонке "ТлкВывод" напротив описания полей в таблице ниже, а также не забываем для этих полей поставить галки в колонке "С содержи.", это сохранит в полях введенные нами значения отрасли и вида материала. Далее вводим имя варианта экрана, в данном случае это экран 0060 для программы SAPLMGMM и его описание, после чего выбираем "Выход + Сохранить", рисунок 3: SHD0-3.png
Рисунок 3: SHD0-3.png
Так как вариант содержит только один экран 0060, то следующим шагом, мы перейдем к «легитимации» собственно самого варианта, где необходимо ввести только его описание, после чего сохраняем данные. Система запросит данные переноса, так что тут все - стандартно. После сохранения нажимаем кнопку выхода (возврата назад) на предыдущий экран, рисунок 4: SHD0-4.png
Рисунок 4: SHD0-4.png
После выхода на первый экран ведения наш вариант транзакции будет в списке
Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland
ЗарегистрироватьсяУ вас уже есть учетная запись?
Войти
Обсуждения 12
Комментарий от
Константин Дудура
| 24 мая 2017, 11:13
Для поставленой задачи (создание материала только определённого вида) существует набор стандартных транзакций (например, MMF1 для FERT). Поэтому использование вариантов транзакций для этой цели, выглядит избыточным и не совсем жизненным.
Было бы интересно прочитать, какие ещё реальные задачи решались с использованием этой методики и есть ли у нёё какие-то ограничения?
Например, можно ли её использовать в транзакциях несколькими экранами (MIGO, ME21N и подобные)?
Комментарий от
Антон Сорокин
| 24 мая 2017, 12:46
Константин Дудура 24 мая 2017, 11:13
Полезная статья, но пример, на мой взгляд, выбран не совсем удачно.
Для поставленой задачи (создание материала только определённого вида) существует набор стандартных транзакций (например, MMF1 для FERT). Поэтому использование вариантов транзакций для этой цели, выглядит избыточным и не совсем жизненным.
Было бы интересно прочитать, какие ещё реальные задачи решались с использованием этой методики и есть ли у нёё какие-то ограничения?
Например, можно ли её использовать в транзакциях несколькими экранами (MIGO, ME21N и подобные)?
Комментарий от
Евгений Лобода
| 24 мая 2017, 21:22
Константин Дудура 24 мая 2017, 11:13
Полезная статья, но пример, на мой взгляд, выбран не совсем удачно.
Для поставленой задачи (создание материала только определённого вида) существует набор стандартных транзакций (например, MMF1 для FERT). Поэтому использование вариантов транзакций для этой цели, выглядит избыточным и не совсем жизненным.
Было бы интересно прочитать, какие ещё реальные задачи решались с использованием этой методики и есть ли у нёё какие-то ограничения?
Например, можно ли её использовать в транзакциях несколькими экранами (MIGO, ME21N и подобные)?
Комментарий от
Олег Точенюк
| 24 мая 2017, 22:14
Евгений Лобода 24 мая 2017, 21:22
С несколькими экранами все не так радужно. Например, прописали значение по умолчанию на третьем экране. Если пользователь вызовет этот экран, то логика отработает. Если не вызовет, ограничившись в работе только первым экраном - значение не подставится.
Комментарий от
Олег Точенюк
| 24 мая 2017, 22:16
Константин Дудура 24 мая 2017, 11:13
Полезная статья, но пример, на мой взгляд, выбран не совсем удачно.
Для поставленой задачи (создание материала только определённого вида) существует набор стандартных транзакций (например, MMF1 для FERT). Поэтому использование вариантов транзакций для этой цели, выглядит избыточным и не совсем жизненным.
Было бы интересно прочитать, какие ещё реальные задачи решались с использованием этой методики и есть ли у нёё какие-то ограничения?
Например, можно ли её использовать в транзакциях несколькими экранами (MIGO, ME21N и подобные)?
Комментарий от
Олег Точенюк
| 29 июня 2017, 12:53
При сохранении будет выдано сообщение что вариант не существует, но так как это сообщение типа W, то нажав ввод, таки сохраняем транзакцию, а вот после этого идем уже в создание самого варианта в SHD0:
А дальше уже все как было описано выше вроде как работает.
Комментарий от
Михаил Калябин
| 06 июля 2017, 10:09
Олег Точенюк 29 июня 2017, 12:53
Был вопрос, но куда-то пропал по транзакциям типа BD87, там не получалось настроить свой вариант. Для таких транзакций последовательность действий чуть другая, для примера это транзакция BD87 - Монитор статуса сообщений ALE, тут сначала идем в создание транзакции варианта. Вводим там код варианта, который не существует и сохраняем транзакцию:
При сохранении будет выдано сообщение что вариант не существует, но так как это сообщение типа W, то нажав ввод, таки сохраняем транзакцию, а вот после этого идем уже в создание самого варианта в SHD0:
А дальше уже все как было описано выше вроде как работает.
Попробовал так, но сталкиваюсь с той же проблемой.Транзакция варианта создана
затем SHD0
и появляется первый экран транзакции.
В случае ММ01 после предварительного заполнения первого экрана и нажатия Enter появлялось окно настройки полей, как на рисунке 3 статьи: SHD0-3.png
Но для BD87 при нажатии на Enter реакции нет. Если в этот момент выйти из транзакции, появится окно без возможности делать настройки
Если перейти на следующий экран (F8), и затем выйти, то также нет возможности редактировать поля первого экрана
Если действовать указанным образом можно, например, деактивировать функции и кнопки, но настроить экраны мне не удалось.
Как говорится, что я делаю не так?
Комментарий от
Олег Точенюк
| 07 июля 2017, 12:13
Михаил Калябин 06 июля 2017, 10:09
Олег, спасибо за ответ на пропавший вопрос.
Попробовал так, но сталкиваюсь с той же проблемой.Транзакция варианта создана
затем SHD0
и появляется первый экран транзакции.
В случае ММ01 после предварительного заполнения первого экрана и нажатия Enter появлялось окно настройки полей, как на рисунке 3 статьи: SHD0-3.png
Но для BD87 при нажатии на Enter реакции нет. Если в этот момент выйти из транзакции, появится окно без возможности делать настройки
Если перейти на следующий экран (F8), и затем выйти, то также нет возможности редактировать поля первого экрана
Если действовать указанным образом можно, например, деактивировать функции и кнопки, но настроить экраны мне не удалось.
Как говорится, что я делаю не так?
Комментарий от
Михаил Калябин
| 07 июля 2017, 15:19
Олег Точенюк 07 июля 2017, 12:13
Ну в общем глянул как там написано, в общем привет даже не знаю кому, индусам или не индусам, но транзакция вызывает при старте экран 100, а внутри него в BPO-логике, при первом входе, когда идет инициализация параметров работы и создаются графические элементы, внутри вызывается селекционный экран 1100 запроса ограничений. Поэтому SHD0 не видит селекционного экрана, а выдает только данные экрана 100, на котором и находится один несчастный TREE_CONTAINER который и предлагается для ведения. Так что тут похоже ловить нечего. Ну как вариант написать обертку вокруг данной транзакции и уже из нее вызывать BD87 с нужными параметрами. В общем придется типа покувыркаться, чтобы решать задачку.
Комментарий от
Олег Точенюк
| 10 июля 2017, 13:04
Михаил Калябин 07 июля 2017, 15:19
Олег, большое спасибо!
===
Для этого запускаем стандартную транзакцию MBPM и по меню выбираем "Перейти к" - "Варианты" - "Сохранить как вариант" и попадаем в ведение вариантов как на рисунке MBPM.png.
Обратите внимание что вариант должен начинаться с CUS&, иначе ничего не получится. А дальше как обычно защищаем сам вариант и требуемое нам поле от изменений. В данном случае чтобы пользователи не могли запустить отчет с удалением данных. Сохраняем вариант. Система скажет, что вариант будет системным, соглашаемся с этим и затем будет выдано окно для ввода запроса на перенос варианта. Создаем запрос.
Затем надо задать это вариант для транзакции MBPM. Для этого идем в транзакцию SE93 - Ведение транзакций и там вводим код MBPM, как на рисунке ниже. Жмем изменение транзакции, кстати для этого ключ на объект получать не нужно. Систем спрашивает на каком языке буде ведение, выбираем на языке регистрации и дальше в поле "Запуск с вариантом" вносим наш вариант. Затем сохраняем транзакцию, само собой спросит запрос для переноса. Выбираем запрос созданный на предыдущем шаге и все... теперь транзакция MBPM будет запускаться по умолчанию с заблокированным для ввода полем "Немедленное удаление"
Комментарий от
Олег Точенюк
| 10 июля 2017, 13:11
Олег Точенюк 10 июля 2017, 13:04
Как вариант решения проблемы, нашел тут у себя создание системного варианта транзакции MBPM. Думаю в данном случае можно попробовать так тоже сделать.
===
Для этого запускаем стандартную транзакцию MBPM и по меню выбираем "Перейти к" - "Варианты" - "Сохранить как вариант" и попадаем в ведение вариантов как на рисунке MBPM.png.
Обратите внимание что вариант должен начинаться с CUS&, иначе ничего не получится. А дальше как обычно защищаем сам вариант и требуемое нам поле от изменений. В данном случае чтобы пользователи не могли запустить отчет с удалением данных. Сохраняем вариант. Система скажет, что вариант будет системным, соглашаемся с этим и затем будет выдано окно для ввода запроса на перенос варианта. Создаем запрос.
Затем надо задать это вариант для транзакции MBPM. Для этого идем в транзакцию SE93 - Ведение транзакций и там вводим код MBPM, как на рисунке ниже. Жмем изменение транзакции, кстати для этого ключ на объект получать не нужно. Систем спрашивает на каком языке буде ведение, выбираем на языке регистрации и дальше в поле "Запуск с вариантом" вносим наш вариант. Затем сохраняем транзакцию, само собой спросит запрос для переноса. Выбираем запрос созданный на предыдущем шаге и все... теперь транзакция MBPM будет запускаться по умолчанию с заблокированным для ввода полем "Немедленное удаление"
Комментарий от
Бахытжан Тайлакбаев
| 12 апреля 2019, 10:28
Подскажите пжлст. Сделал вариант транзакции для стандартной тр. ME21N - Создание заказа на поставку. Создал Z-транзакцию ZME21N соответственно. Теперь при тестировании выяснилось, что при запуске Z-транзакции система проверяет объект полномочия S_TCODE на доступ к стандартной транзакции ME21N. Т.е. не понятно в чем смысл тогда создания варианта транзакции. Ведь необходимо было ограничить доступ именно к стандартной транзакции ME21N. Вы не сталкивались с таким?