Добавление расширенных опций фильтрации в браузер данных
В своей статье Файзал Альтаф описывает способ расширения стандартной функциональности просмотра данных в таблицах системы (коды транзакций SE16 и SE11) добавлением опции фильтрации с использованием техники неявных расширений (Implicit Enhancement options).
Ключевое понятие
Техника неявных расширений (Enhancement) позволяет добавлять собственные функциональные возможности к стандартным программам SAP без изменения исходного кода. Данная техника по своей реализации напоминает технику плагинов, которые можно при необходимости добавлять или удалять в любое время. Созданные вами расширения остаются неизменными даже после обновления вашей системы SAP. Существует множество типов расширений, но для рассматриваемой задачи ключевым является использование неявных расширений.
В транзакциях просмотра данных SE16 и SE11 можно добавлять условия для фильтрации данных в соответствии с собственными бизнес-требованиями. Однако эти условия ограничены только одним полем (например, условие можно применить к отдельным полям, но сравнить два поля невозможно). Если требуется сравнить в системе значения двух и более полей и вывести только те данные, которые подходят под такие условия, то можно использовать технику расширений для получения дополнительных возможностей в стандартных транзакциях. В следующих примерах будет показана техника реализации сценария, который позволяет использовать одно условие для двух полей.
Стандартный сценарий предполагает, что требуется показать все документы фактуры, созданные на определенную дату (больше, меньше или не равно) из таблицы VBRK (документ фактуры: данные заголовка). Для просмотра данных используются коды транзакций SE16 или SE11. Данные можно отфильтровать, применяя это условие к полю ERDAT (дата создания), как показано на Рис. 1. Согласно этому условию отображаются только документы фактуры, созданные после 01.11.2014. Аналогично можно добавить дополнительные условия к отдельным полям, но сравнить значения двух полей невозможно.
Рис. 1. Просмотр документа фактуры с датой созданий после 01.11.2014
Транзакцию просмотра данных можно расширить (коды транзакций SE16 и SE11) путем добавления к ним опций расширенной фильтрации, которые позволяют сравнивать два и более поля (например, для просмотра только документов фактуры, в которых дата фактурирования [FKDAT] совпадает с датой создания [ERDAT]). Во многих бизнес-сценариях необходимо получить данные, например, в примере требуется выбрать данные с одинаковыми датами создания и фактурирования. Для этого необходимо выполнить два простых шага:
Шаг 1. Создайте программу для ввода пользовательских данных фильтрации.
Шаг 2. Создайте расширение в стандартных транзакциях просмотра данных для обработки введенных пользовательских данных фильтрации.
Шаг 1. Создание программы для ввода пользовательских данных фильтрации
Поскольку для этой программы требуется разработка нескольких экранов, то просто скопировать и вставить код невозможно. Поэтому я создал файл формата *.nugg, который можно скачать по пути: ссылка на скачиваемую программу. Для установки в системе используется разработка проекта SAPlink - Google Code, данную разработку и инструкцию по ее применению можно скачать по пути: http://wiki.scn.sap.com/wiki/display/ABAP/SAPlink. В качестве имени программы укажите ZFSL_Z_AFO_DB_SE16_SE11, поскольку это имя используется в коде создаваемого на шаге 2 расширения. Для использования другого имени будет необходимо также изменить и имя программы в расширении.
Шаг 2. Создание расширения и добавление пользовательского кода для фильтрации данных
Откройте include LSETBF03 с помощью кода транзакции SE38 или SE80. Щелкните по пиктограмме расширения или нажмите Shift+F4 (Рис. 2).
Рис. 2. Открытие include LSETBF03
Теперь include отображается в режиме расширения, левая часть кода стала белой (Рис. 3).
Рис. 3. include в режиме расширения
В меню выберите "Edit > Enhancement Operations > Show Implicit Enhancement Options" (Обработать > Операции расширения > Показать неявные опции расширения).
В начале include неявная опция расширения (Рис. 4) отображается в начале подпрограммы alv_call. Подпрограмма alv_call используется для вывода данных. В начале этой подпрограммы можно добавить код для фильтрации данных по запрошенным пользователем условиям.
Рис. 4. Неявная опция расширения в начале подпрограммы alv_call
Щелкните правой кнопкой мыши по строке с опцией расширения и выберите в контекстном меню "Enhancement Operations > Create Implementation" (Операции расширения > Создать реализацию). Появится всплывающее поле с сообщением. Нажмите кнопку "Code" (Код), см. Рис. 5.
Рис. 5. Кнопка "Code" (Код)
Введите имя реализации расширения и краткое описание (Рис. 6). Щелкните по пиктограмме с зеленой галочкой для перехода к экрану, показанному на Рис. 7.
Рис. 6. Ввод имени реализации расширения и краткого описания
Выберите пиктограмму создания запроса, выделенную на Рис. 7. Запрос на перенос представляет собой корзину, в которую помещаются все измененные или новые объекты. После тестирования в системе разработки эта корзина переносится в систему контроля качества. Далее, после тестирования изменений в системе контроля качества, запрос переносится в продуктивную систему.
Рис. 7. Создание нового запроса на перенос
Введите краткое описание и выберите пиктограмму сохранения (Рис. 8). В кратком описании на Рис. 8 AFO означает "Опция расширенной фильтрации".
Рис. 8. Добавление краткого описания и выбор пиктограммы сохранения
Добавьте объект реализации расширения к запросу с помощью пиктограммы с зеленой галочкой (Рис. 9). Это реализация расширения, которая была указана в стандартном коде для добавления пользовательской функциональности.
Оформите подписку sappro и получите полный доступ к материалам SAPPRO
Оформить подпискуУ вас уже есть подписка?
Войти