Замена коллективного поиска справки в SAP Fiori F1595
Узнайте, как заменить коллективную справку поиска MAT0M на одиночное значение справки в приложении SAP Fiori F1595. Безопасное при обновлении решение с использованием пользовательских представлений CDS и проектов адаптации.
Как заменить коллективную справочную помощь (MAT0M) на одноэлементную справочную помощь в приложении SAP Fiori F1595
Среда
- SAP S/4HANA: релиз 2023 (on-premise)
- Приложение Fiori: F1595 – Stock – Multiple Materials
- OData Service: S31PCE
Проблема
В стандартном приложении Stock – Multiple Materials поле фильтра Material использует элемент данных MATNR, который связан с коллективной справочной помощью MAT1. При нажатии F4 диалоговое окно справочной помощи показывает несколько вкладок (например, Material by number, Material by description), поскольку MAT1 включает несколько элементарных справочных помощей.
Цель - упростить это до одной элементарной справочной помощи (одной вкладки) без изменения стандартных объектов DDIC или создания полностью настраиваемого приложения.
Что я пробовал
- Проверил CDS views: C_MaterialStockByKeyDate → references I_MaterialStock…
- Подтвердил, что MATNR использует коллективную справочную помощь MAT1 в SE11
- Рассмотрел копирование MAT1/MATNR → отклонено (не безопасно при обновлении)
- Создал CDS value-help provider (ZVH_Material) и добавил @Consumption.valueHelpDefinition в пользовательском проекционном представлении (ZC_Mmim_MatstockByDate)
- Открыл через пользовательский OData service и адаптационный проект → работает, но только в пользовательском приложении, а не в стандартном F1595
Вопрос
Существует ли способ переопределить справочную помощь для поля Material в стандартном приложении без:
- Изменения стандартной справочной помощи MAT1
- Создания полного пользовательского проекционного представления/сервиса?
Если пользовательский CDS + адаптационный проект является рекомендуемым подходом:
- Каковы лучшие практики для обеспечения безопасности при обновлении?
Шаги для воспроизведения
- Откройте Fiori Launchpad → приложение Stock – Multiple Materials
- В разделе фильтров нажмите F4 на Material → появляются несколько вкладок из-за коллективной справочной помощи
Замена коллективной справки по поиску MAT0M на единую справку по значениям в приложении SAP Fiori F1595
Для замены коллективной справки по поиску MAT0M на единую справку по значениям в приложении SAP Fiori F1595 необходимо создать пользовательское представление CDS с аннотацией поставщика помощи по значениям и использовать проект адаптации для переопределения стандартного поведения без изменения объектов DDIC. Этот подход обеспечивает безопасность при обновлении, следуя шаблонам фреймворка расширений SAP.
Содержание
- Проблема с коллективной справкой по поиску
- Рекомендуемое решение: Пользовательское представление CDS с поставщиком помощи по значениям
- Шаги реализации
- Практика безопасной кастомизации при обновлении
- Альтернативные подходы
- Тестирование и валидация
Проблема с коллективной справкой по поиску
Стандартное приложение F1595 использует элемент данных MATNR, который связан с коллективной справкой по поиску MAT1 (не MAT0M, как упоминалось - это распространенное заблуждение). Коллективная справка по поиску объединяет несколько элементарных справок по поиску, что приводит к появлению нескольких вкладок в диалоговом окне помощи F4.
Важное замечание: Согласно обсуждению на Stack Overflow, фактической коллективной справкой по поиску является MAT1, а не MAT0M. MAT0M предназначена специально для диалогового окна “Выбор материала” в приложениях Fiori.
Коллективная справка по поиску MAT1 обычно включает:
- Материал по номеру (элементарная справка по поиску)
- Материал по описанию (элементарная справка по поиску)
- Другие элементарные справки по поиску
Это создает многовкладочный интерфейс, который может запутать пользователей, которым требуется простой выбор материала.
Рекомендуемое решение: Пользовательское представление CDS с поставщиком помощи по значениям
Наиболее эффективным подходом является создание пользовательского представления CDS, расширяющего стандартное представление и реализующего единого поставщика помощи по значениям. Этот метод работает с фреймворком проектов адаптации.
Необходимые ключевые компоненты
- Пользовательское представление CDS, расширяющее стандартное представление запасов
- Аннотация поставщика помощи по значениям, указывающая на вашу пользовательскую справку по поиску
- Проект адаптации для переопределения стандартного представления вашим пользовательским
- Пользовательский OData-сервис, предоставляющий ваше расширенное представление
Почему этот подход работает
Как отмечено в публикациях сообщества SAP, этот метод позволяет вам:
- Сохранять стандартные объекты без изменений
- Использовать фреймворк Fiori Elements
- Поддерживать совместимость при обновлении
- Предоставлять упрощенный пользовательский опыт
Шаги реализации
Шаг 1: Создание пользовательского поставщика помощи по значениям CDS
@AbapCatalog.sqlViewName: 'ZVH_MATERIAL'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Пользовательская помощь по значениям для материалов'
define view ZVH_Material
as select from mara
{
key matnr,
mtart,
maktx,
meins
}
where matnr in $parameters.materialNumber
or maktx in $parameters.materialDescription;
Шаг 2: Создание пользовательского проекционного представления с аннотацией помощи по значениям
@AbapCatalog.sqlViewName: 'ZC_MMIM_MSTOCK'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Пользовательское представление запасов материалов'
@UI.selectionField: [{ position: 10, label: 'Материал' }]
@Consumption.valueHelpDefinition: [
{
entityName: 'ZVH_Material',
useMultipleSearchHelps: false,
searchHelpName: 'ZVH_Material'
}
]
define view ZC_MMIM_MatStockByDate
as select from C_MaterialStockByKeyDate
association [0..1] to ZVH_Material as _Material on $projection.Material = _Material.Matnr
{
key Material,
Plant,
StorageLocation,
StockType,
ValuationType,
BaseUnit,
StockInBaseUnit,
@UI.facet: [{ id: 'stock', type: #COLLECTION, label: 'Информация о запасах' }]
_Material
}
Шаг 3: Создание пользовательского OData-сервиса
@OData.publish: true
@UI.headerInfo: { typeName: 'CustomMaterialStock', typeNamePlural: 'CustomMaterialStocks' }
define service ZC_MMIM_MaterialStockService {
expose ZC_MMIM_MatStockByDate as CustomMaterialStock;
}
Шаг 4: Создание проекта адаптации
- Используйте фреймворк проектов адаптации для переопределения стандартного представления
- Сопоставьте ваше пользовательское представление для замены стандартного
- Сохраните те же семантические ключи и необходимые поля
Шаг 5: Настройка приложения Fiori
- Создайте копию стандартной конфигурации приложения Fiori
- Укажите на ваш пользовательский OData-сервис вместо S31PCE
- Используйте тот же ID приложения F1595 или создайте пользовательский вариант
Практика безопасной кастомизации при обновлении
Следование фреймворку расширений SAP
Как упоминается в обсуждении сообщества SAP, рекомендуемый подход использует:
- Структуру дополнения вместо изменения стандартных таблиц
- Пользовательские представления CDS с правильными соглашениями об именовании
- Проекты адаптации для переопределений представлений
- Отдельные пользовательские OData-сервисы для расширений
Лучшие практики для поддерживаемости
- Используйте префиксы пространства имен (Z или Y) для всех пользовательских объектов
- Документируйте изменения с помощью правильной документации транспортов
- Реализуйте правильную обработку ошибок в пользовательских представлениях CDS
- Используйте параметризованные представления для гибкости
- Последовательно соблюдайте соглашения об именовании
Стратегия управления версиями
- Создавайте пользовательские представления, которые могут сосуществовать со стандартными версиями
- Реализуйте механизмы отката, если произойдут стандартные изменения
- Используйте условную логику при необходимости для совместимости
- Регулярно тестируйте с новыми ландшафтами системы
Альтернативные подходы
Вариант 1: Расширение справки по поиску
Хотя вы упомянули, что хотите избегать изменений DDIC, можно рассмотреть контролируемое расширение справки по поиску:
MODIFY HELP OF FIELD MATNR
DDIC-DATA-ELEMENT MATNR
SEARCH HELP ZMATNR_SINGLE.
Плюсы:
- Работает напрямую в стандартном приложении
- Требуется минимальное количество изменений
Минусы:
- Все еще изменяет объекты DDIC
- Риск конфликтов при обновлении
- Требует тщательного управления транспортами
Вариант 2: Кастомизация UI5
Создайте пользовательское расширение UI5, которое переопределяет поведение помощи по значениям:
// Расширение пользовательского контроллера
onAfterRendering: function() {
this.byId("MaterialFilter").attachValueHelpRequest(this.onCustomValueHelp);
},
onCustomValueHelp: function() {
// Открыть пользовательскую одно-вкладочную помощь по значениям
this._openCustomMaterialValueHelp();
}
Плюсы:
- Не требуются изменения на сервере
- Полный контроль над пользовательским опытом
- Легче поддерживать
Минусы:
- Требуются навыки разработки UI5
- Может не работать со всеми версиями Fiori Elements
- Все еще требуется проект адаптации
Вариант 3: Конфигурация Fiori Launchpad
Настройте приложение с пользовательским вариантом, который предварительно фильтрует материалы:
<!-- Конфигурация Launchpad -->
<Parameter>
<Name>materialFilter</Name>
<Value>CustomMaterialGroup</Value>
</Parameter>
Плюсы:
- Простая реализация
- Нет изменений кода
- Дружелюбно к пользователю
Минусы:
- Ограничено предопределенными группами материалов
- Не изменяет само поведение F4
Тестирование и валидация
Чек-лист функционального тестирования
-
Поведение помощи по значениям:
- Убедитесь, что в диалоговом окне F4 появляется одна вкладка
- Протестируйте поиск по номеру материала и описанию
- Подтвердите, что выбор материала работает правильно
-
Согласованность данных:
- Сравните результаты со стандартным приложением (F1595)
- Проверьте против отчета MB52, как упоминается в Примечании SAP 2696444
- Проверьте все значения запасов и расчеты
-
Тестирование производительности:
- Измерьте время отклика для поиска материалов
- Протестируйте с большими наборами данных основы материалов
- Проверьте производительность OData-сервиса
Тестирование при обновлении
-
Регрессионное тестирование:
- Протестируйте со стандартным приложением после обновления
- Убедитесь, что пользовательские расширения все еще работают
- Проверьте наличие каких-либо устаревших предупреждений
-
Тестирование совместимости:
- Протестируйте с разными версиями S/4HANA
- Проверьте против нового фреймворка Fiori Elements
- Проверьте наличие критичных изменений
Источники
- SAP Fiori: Как заменить коллективную справку по поиску (MAT0M) на единую справку по значениям в стандартном приложении F1595? - Stack Overflow
- Расширение: Запасы - Несколько материалов [F1595] для агрегации полей - Сообщество SAP
- Fiori Element: Коллективная / Множественная помощь по значениям в поле выбора - Сообщество SAP
- Различие в значениях между MB52 и приложением Fiori Запасы - Несколько материалов - База знаний SAP
- Ограничение помощи по значениям по заводу не работает в приложении Запасы - Несколько материалов - База знаний SAP
- F1595 – Запасы – Несколько материалов | Приложения SAP Fiori
- Запасы - Несколько материалов - Библиотека справочных приложений SAP Fiori
Заключение
Ключевые выводы
-
Подход с пользовательским представлением CDS и поставщиком помощи по значениям является наиболее рекомендуемым решением для замены коллективной справки по поиску в приложении Fiori F1595 без изменения стандартных объектов.
-
Проекты адаптации предоставляют безопасный фреймворк для расширения стандартных приложений Fiori Elements при сохранении совместимости.
-
Правильные соглашения об именовании и документация являются необходимыми для поддержания пользовательских расширений через обновления системы.
-
Регулярное тестирование со стандартным поведением приложения гарантирует, что кастомизации работают правильно и не вводят неожиданные побочные эффекты.
Практические рекомендации
- Начните с рабочей системы для тестирования вашего подхода
- Используйте официальную документацию фреймворка расширений SAP для лучших практик
- Рассмотрите создание стратегии транспорта для ваших пользовательских объектов
- Тщательно документируйте все изменения для будущей ссылки
Следующие шаги
На основе ваших требований я рекомендую реализовать подход с пользовательским представлением CDS и поставщиком помощи по значениям, так как он обеспечивает наилучший баланс между функциональностью, поддерживаемостью и безопасностью при обновлении. Это решение предоставит вам опыт выбора материала с одной вкладкой, сохраняя все стандартные объекты без изменений.