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

«Инстру­кция по созданию отчёта в тра­нза­кции SQVI»
Олег Точенюк:
Ну это вы погорячились вязать код БЕ заголовка, с кодом БЕ позиции. Код БЕ заголовка отвечает за то, где будет отражена кредиторская задолженность, а код БЕ в позиции отвечает за то, где будет...
«Создание ярлыка для со­е­ди­не­ния с SAP системой без пароля»
Вячеслав Шиболов:
Кирилл, спасибо за комментарий. Согласен, отличное решение для индивидуального рабочего места.
«Создание ярлыка для со­е­ди­не­ния с SAP системой без пароля»
Кирилл Сатарин:
Оптимальный вариант хранения паролей к системам SAP для меня keepass (подробнее keepass.info) как его использовать описано здесь blogs.sap.com/2012/01 (на английском) От себя добавлю, чтобы...

База знаний

Методика создания варианта транзакции: транзакция SHD0

8525
11

Аннотация

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

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

После выхода на первый экран ведения наш вариант транзакции будет в списке

Ограниченный доступ

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

Ключевые слова: Transaction Codes
Функциональная область: Информационные технологии / IT, Basis, ABAP
Ролевое назначение: SAP Консультант / Consultant
Комментарии:

Константин Дудура (Рейтинг: 225) 11:13, 24 мая 2017

Полезная статья, но пример, на мой взгляд, выбран не совсем удачно.
 
Для поставленой задачи (создание материала только определённого вида) существует набор стандартных транзакций (например, MMF1 для FERT). Поэтому использование вариантов транзакций для этой цели, выглядит избыточным и не совсем жизненным.
 
Было бы интересно прочитать, какие ещё реальные задачи решались с использованием этой методики и есть ли у нёё какие-то ограничения?
 
Например, можно ли её использовать в транзакциях несколькими экранами (MIGO, ME21N и подобные)?
12:46, 24 мая 2017

Антон Сорокин (Рейтинг: 325)

Практический пример - запрет редактирования полей стандартных транзакций, которые заполняются значениями по умолчанию. Т.е. запрет пользователю изменить значение по умолчанию. Это бывает полезно.
21:22, 24 мая 2017

Евгений Лобода (Рейтинг: 53)

С несколькими экранами все не так радужно. Например, прописали значение по умолчанию на третьем экране. Если пользователь вызовет этот экран, то логика отработает. Если не вызовет, ограничившись в работе только первым экраном - значение не подставится.
22:14, 24 мая 2017

Олег Точенюк (Рейтинг: 10624)

Есть варианты заставить его вызвать третий экран, но это уже все от бизнес логики зависит.
22:16, 24 мая 2017

Олег Точенюк (Рейтинг: 10624)

В конкретном случае у пользователя были созданы свои Z-виды материалов. Мне в своей системе как-то не хотелось кувыркаться с таким, поэтому был взять стандартный существующий вид материала, сделан пример и отправлен клиенту в виде описания. Ну и заодно сюда, так как все делалось в виде бесплатного совета как можно сделать?!

Олег Точенюк (Рейтинг: 10624) 12:53, 29 июня 2017

Был вопрос, но куда-то пропал по транзакциям типа BD87, там не получалось настроить свой вариант. Для таких транзакций последовательность действий чуть другая, для примера это транзакция BD87 - Монитор статуса сообщений ALE, тут сначала идем в создание транзакции варианта. Вводим там код варианта, который не существует и сохраняем транзакцию:
 

 
При сохранении будет выдано сообщение что вариант не существует, но так как это сообщение типа W, то нажав ввод, таки сохраняем транзакцию, а вот после этого идем уже в создание самого варианта в SHD0:
 

 
А дальше уже все как было описано выше вроде как работает.
10:09, 06 июля 2017

Михаил Калябин (Рейтинг: 588)

Олег, спасибо за ответ на пропавший вопрос.
Попробовал так, но сталкиваюсь с той же проблемой.Транзакция варианта создана

затем SHD0

и появляется первый экран транзакции.
В случае ММ01 после предварительного заполнения первого экрана и нажатия Enter появлялось окно настройки полей, как на рисунке 3 статьи: SHD0-3.png
Но для BD87 при нажатии на Enter реакции нет. Если в этот момент выйти из транзакции, появится окно без возможности делать настройки

Если перейти на следующий экран (F8), и затем выйти, то также нет возможности редактировать поля первого экрана

 
Если действовать указанным образом можно, например, деактивировать функции и кнопки, но настроить экраны мне не удалось.
 
Как говорится, что я делаю не так?
12:13, 07 июля 2017

Олег Точенюк (Рейтинг: 10624)

Ну в общем глянул как там написано, в общем привет даже не знаю кому, индусам или не индусам, но транзакция вызывает при старте экран 100, а внутри него в BPO-логике, при первом входе, когда идет инициализация параметров работы и создаются графические элементы, внутри вызывается селекционный экран 1100 запроса ограничений. Поэтому SHD0 не видит селекционного экрана, а выдает только данные экрана 100, на котором и находится один несчастный TREE_CONTAINER который и предлагается для ведения. Так что тут похоже ловить нечего. Ну как вариант написать обертку вокруг данной транзакции и уже из нее вызывать BD87 с нужными параметрами. В общем придется типа покувыркаться, чтобы решать задачку.
15:19, 07 июля 2017

Михаил Калябин (Рейтинг: 588)

Олег, большое спасибо!
13:04, 10 июля 2017

Олег Точенюк (Рейтинг: 10624)

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

 
Обратите внимание что вариант должен начинаться с CUS&, иначе ничего не получится. А дальше как обычно защищаем сам вариант и требуемое нам поле от изменений. В данном случае чтобы пользователи не могли запустить отчет с удалением данных. Сохраняем вариант. Система скажет, что вариант будет системным, соглашаемся с этим и затем будет выдано окно для ввода запроса на перенос варианта. Создаем запрос.
 
Затем надо задать это вариант для транзакции MBPM. Для этого идем в транзакцию SE93 - Ведение транзакций и там вводим код MBPM, как на рисунке ниже. Жмем изменение транзакции, кстати для этого ключ на объект получать не нужно. Систем спрашивает на каком языке буде ведение, выбираем на языке регистрации и дальше в поле "Запуск с вариантом" вносим наш вариант. Затем сохраняем транзакцию, само собой спросит запрос для переноса. Выбираем запрос созданный на предыдущем шаге и все... теперь транзакция MBPM будет запускаться по умолчанию с заблокированным для ввода полем "Немедленное удаление"
13:11, 10 июля 2017

Олег Точенюк (Рейтинг: 10624)

Единственное что возможно понадобиться сделать вариант транзакции, при этом вариант делать в манданте 000.

Любое воспроизведение запрещено.
Копирайт © «Издательство ООО «Эксперт РП»