Дюмэ написал(а):
Добрового времени суток!
Ситуация такая, необходимо разбить полномочия по видам поставок, но в стандарте такого объекта полномочий нет.
Дело в том, что даже если я ограничиваю пользователя по Рынку Сбыта, из-за того, что Пункты отгрузки по всем бизнес-процессам одни и теже, пользователь может создавать и изменять любые виды поставок

Добрый день! Решение вижу следущее (сам так делал, только не для поставок).
1. необходимо создать свой объект полномочий (например Z_LIKP_TYP) через транзакцию SU21 (класс объектов LE_V). Включить туда стандартное поле ACTVT и создать новое поле для вида поставки.
Для этого находясь в режиме создания/изменения объекта полномочий, жмем правую мышу на любом поле полномочий -> ведение полей -> создать. Вводим собственное имя (т.к. LFART уже занято под агентские операции). Например DELIV_TYPE, элемент данных LFART, таблица TVLK. Сохраняем поле и добавляем его в наш объект полномочий.
2. В зависимости от операций пользователя необходимо прописать проверку этого обекта полномочий в разные места.
Для этой проверки при
создании поставки, необходимо создавать путем копирования (тр. VOFM) новые условия копирования (уровень заголовка) "Ваш вид заказа -> Ваши виды поставок" (скорее всего это Условия заказа 001). Во вновь созданном условии копирования в самом начале добавляем строчку:
authority-check OBJECT 'Z_LIKP_TYP'
id 'DELIV_TYPE' FIELD LIKP-LFART
id 'ACTVT ' FIELD '01'.
Теперь, при создании поставки по заказу будет проверяться этот объект полномочий для конкретного вида поставки и операции "01".
Надо только не забыть установить эту программу-условие копирования для всех комбинаций "вид заказа - вид поставки" через транзакцию VTLA.
Касательно изменения поставок, то строчку
authority-check OBJECT 'Z_LIKP_TYP'
id 'DELIV_TYPE' FIELD XLIKP-LFART
id 'ACTVT ' FIELD '02'.
необходимо встаить в новый инклуд, например ZMV50AFZ1_xx, а на последний сослаться в FORM userexit_read_document в экзите MV50AFZ1.
А чтобы ещё красивше было, напишем там так:
case sy-tcode.
when 'VL02N'.
authority-check OBJECT 'Z_LIKP_TYP'
id 'DELIV_TYPE' FIELD XLIKP-LFART
id 'ACTVT ' FIELD '02'.
when 'VL03N'.
authority-check OBJECT 'Z_LIKP_TYP'
id 'DELIV_TYPE' FIELD XLIKP-LFART
id 'ACTVT ' FIELD '03'.
endcase.
Теперь добавляем и заполняем наш объект полномочий в какой-нибудь роли и вперед! -)
Будут вопросы - пиши!