Другое

Замена коллективного поиска справки в 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 в стандартном приложении без:

  1. Изменения стандартной справочной помощи MAT1
  2. Создания полного пользовательского проекционного представления/сервиса?

Если пользовательский CDS + адаптационный проект является рекомендуемым подходом:

  • Каковы лучшие практики для обеспечения безопасности при обновлении?

Шаги для воспроизведения

  1. Откройте Fiori Launchpad → приложение Stock – Multiple Materials
  2. В разделе фильтров нажмите F4 на Material → появляются несколько вкладок из-за коллективной справочной помощи

Замена коллективной справки по поиску MAT0M на единую справку по значениям в приложении SAP Fiori F1595

Для замены коллективной справки по поиску MAT0M на единую справку по значениям в приложении SAP Fiori F1595 необходимо создать пользовательское представление CDS с аннотацией поставщика помощи по значениям и использовать проект адаптации для переопределения стандартного поведения без изменения объектов DDIC. Этот подход обеспечивает безопасность при обновлении, следуя шаблонам фреймворка расширений SAP.

Содержание

Проблема с коллективной справкой по поиску

Стандартное приложение F1595 использует элемент данных MATNR, который связан с коллективной справкой по поиску MAT1 (не MAT0M, как упоминалось - это распространенное заблуждение). Коллективная справка по поиску объединяет несколько элементарных справок по поиску, что приводит к появлению нескольких вкладок в диалоговом окне помощи F4.

Важное замечание: Согласно обсуждению на Stack Overflow, фактической коллективной справкой по поиску является MAT1, а не MAT0M. MAT0M предназначена специально для диалогового окна “Выбор материала” в приложениях Fiori.

Коллективная справка по поиску MAT1 обычно включает:

  • Материал по номеру (элементарная справка по поиску)
  • Материал по описанию (элементарная справка по поиску)
  • Другие элементарные справки по поиску

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

Рекомендуемое решение: Пользовательское представление CDS с поставщиком помощи по значениям

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

Необходимые ключевые компоненты

  1. Пользовательское представление CDS, расширяющее стандартное представление запасов
  2. Аннотация поставщика помощи по значениям, указывающая на вашу пользовательскую справку по поиску
  3. Проект адаптации для переопределения стандартного представления вашим пользовательским
  4. Пользовательский OData-сервис, предоставляющий ваше расширенное представление

Почему этот подход работает

Как отмечено в публикациях сообщества SAP, этот метод позволяет вам:

  • Сохранять стандартные объекты без изменений
  • Использовать фреймворк Fiori Elements
  • Поддерживать совместимость при обновлении
  • Предоставлять упрощенный пользовательский опыт

Шаги реализации

Шаг 1: Создание пользовательского поставщика помощи по значениям CDS

abap
@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: Создание пользовательского проекционного представления с аннотацией помощи по значениям

abap
@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-сервиса

abap
@OData.publish: true
@UI.headerInfo: { typeName: 'CustomMaterialStock', typeNamePlural: 'CustomMaterialStocks' }
define service ZC_MMIM_MaterialStockService {
  expose ZC_MMIM_MatStockByDate as CustomMaterialStock;
}

Шаг 4: Создание проекта адаптации

  1. Используйте фреймворк проектов адаптации для переопределения стандартного представления
  2. Сопоставьте ваше пользовательское представление для замены стандартного
  3. Сохраните те же семантические ключи и необходимые поля

Шаг 5: Настройка приложения Fiori

  1. Создайте копию стандартной конфигурации приложения Fiori
  2. Укажите на ваш пользовательский OData-сервис вместо S31PCE
  3. Используйте тот же ID приложения F1595 или создайте пользовательский вариант

Практика безопасной кастомизации при обновлении

Следование фреймворку расширений SAP

Как упоминается в обсуждении сообщества SAP, рекомендуемый подход использует:

  1. Структуру дополнения вместо изменения стандартных таблиц
  2. Пользовательские представления CDS с правильными соглашениями об именовании
  3. Проекты адаптации для переопределений представлений
  4. Отдельные пользовательские OData-сервисы для расширений

Лучшие практики для поддерживаемости

  • Используйте префиксы пространства имен (Z или Y) для всех пользовательских объектов
  • Документируйте изменения с помощью правильной документации транспортов
  • Реализуйте правильную обработку ошибок в пользовательских представлениях CDS
  • Используйте параметризованные представления для гибкости
  • Последовательно соблюдайте соглашения об именовании

Стратегия управления версиями

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

Альтернативные подходы

Вариант 1: Расширение справки по поиску

Хотя вы упомянули, что хотите избегать изменений DDIC, можно рассмотреть контролируемое расширение справки по поиску:

abap
MODIFY HELP OF FIELD MATNR
  DDIC-DATA-ELEMENT MATNR
  SEARCH HELP ZMATNR_SINGLE.

Плюсы:

  • Работает напрямую в стандартном приложении
  • Требуется минимальное количество изменений

Минусы:

  • Все еще изменяет объекты DDIC
  • Риск конфликтов при обновлении
  • Требует тщательного управления транспортами

Вариант 2: Кастомизация UI5

Создайте пользовательское расширение UI5, которое переопределяет поведение помощи по значениям:

javascript
// Расширение пользовательского контроллера
onAfterRendering: function() {
  this.byId("MaterialFilter").attachValueHelpRequest(this.onCustomValueHelp);
},

onCustomValueHelp: function() {
  // Открыть пользовательскую одно-вкладочную помощь по значениям
  this._openCustomMaterialValueHelp();
}

Плюсы:

  • Не требуются изменения на сервере
  • Полный контроль над пользовательским опытом
  • Легче поддерживать

Минусы:

  • Требуются навыки разработки UI5
  • Может не работать со всеми версиями Fiori Elements
  • Все еще требуется проект адаптации

Вариант 3: Конфигурация Fiori Launchpad

Настройте приложение с пользовательским вариантом, который предварительно фильтрует материалы:

xml
<!-- Конфигурация Launchpad -->
<Parameter>
  <Name>materialFilter</Name>
  <Value>CustomMaterialGroup</Value>
</Parameter>

Плюсы:

  • Простая реализация
  • Нет изменений кода
  • Дружелюбно к пользователю

Минусы:

  • Ограничено предопределенными группами материалов
  • Не изменяет само поведение F4

Тестирование и валидация

Чек-лист функционального тестирования

  1. Поведение помощи по значениям:

    • Убедитесь, что в диалоговом окне F4 появляется одна вкладка
    • Протестируйте поиск по номеру материала и описанию
    • Подтвердите, что выбор материала работает правильно
  2. Согласованность данных:

    • Сравните результаты со стандартным приложением (F1595)
    • Проверьте против отчета MB52, как упоминается в Примечании SAP 2696444
    • Проверьте все значения запасов и расчеты
  3. Тестирование производительности:

    • Измерьте время отклика для поиска материалов
    • Протестируйте с большими наборами данных основы материалов
    • Проверьте производительность OData-сервиса

Тестирование при обновлении

  1. Регрессионное тестирование:

    • Протестируйте со стандартным приложением после обновления
    • Убедитесь, что пользовательские расширения все еще работают
    • Проверьте наличие каких-либо устаревших предупреждений
  2. Тестирование совместимости:

    • Протестируйте с разными версиями S/4HANA
    • Проверьте против нового фреймворка Fiori Elements
    • Проверьте наличие критичных изменений

Источники

  1. SAP Fiori: Как заменить коллективную справку по поиску (MAT0M) на единую справку по значениям в стандартном приложении F1595? - Stack Overflow
  2. Расширение: Запасы - Несколько материалов [F1595] для агрегации полей - Сообщество SAP
  3. Fiori Element: Коллективная / Множественная помощь по значениям в поле выбора - Сообщество SAP
  4. Различие в значениях между MB52 и приложением Fiori Запасы - Несколько материалов - База знаний SAP
  5. Ограничение помощи по значениям по заводу не работает в приложении Запасы - Несколько материалов - База знаний SAP
  6. F1595 – Запасы – Несколько материалов | Приложения SAP Fiori
  7. Запасы - Несколько материалов - Библиотека справочных приложений SAP Fiori

Заключение

Ключевые выводы

  1. Подход с пользовательским представлением CDS и поставщиком помощи по значениям является наиболее рекомендуемым решением для замены коллективной справки по поиску в приложении Fiori F1595 без изменения стандартных объектов.

  2. Проекты адаптации предоставляют безопасный фреймворк для расширения стандартных приложений Fiori Elements при сохранении совместимости.

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

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

Практические рекомендации

  • Начните с рабочей системы для тестирования вашего подхода
  • Используйте официальную документацию фреймворка расширений SAP для лучших практик
  • Рассмотрите создание стратегии транспорта для ваших пользовательских объектов
  • Тщательно документируйте все изменения для будущей ссылки

Следующие шаги

На основе ваших требований я рекомендую реализовать подход с пользовательским представлением CDS и поставщиком помощи по значениям, так как он обеспечивает наилучший баланс между функциональностью, поддерживаемостью и безопасностью при обновлении. Это решение предоставит вам опыт выбора материала с одной вкладкой, сохраняя все стандартные объекты без изменений.

Авторы
Проверено модерацией
Модерация
Замена коллективного поиска справки в SAP Fiori F1595