Здравствуйте!
Довольно часто встречающейся заботой ABAP программиста - является настройка каталога полей для ALV.
SAP рекомендует создавать таблицу для ALV в словаре данных и тогда никаких проблем с получением каталога нету.
Однако я регулярно вижу код и SAP и различных сторонних разработчиков где каталог полей набивается как угодно, чуть ли не руками (append-ы, всякие макросы, loop с настройкой и т.п.), да и я порой тоже так делал. Мне это надоело и я решил решить эту проблему.
Написал небольшую группу функций решающую эту проблему (и не только) которой хочу с вами поделиться:
Интерфейс функционального модуля:Code:
FUNCTION ydk_alv_fcat_build.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*" IMPORTING
*" REFERENCE(ALV_STRUT_KEY) TYPE YDK_ALV_STRUTURE_KEY
*" VALUE(STRUCTURES) OPTIONAL
*" TABLES
*" IN_FCAT OPTIONAL
*" ALV_TAB
*" FCAT
*"----------------------------------------------------------------------
Основные параметры:ALV_STRUT_KEY - Идентификатор структуры ALV, обычно я его делаю совпадающим с именем программы (если в программе несколько ALV добавляю постфиксы)
ALV_TAB – таблица которую собираетесь выводить в ALV.
FCAT – таблица для каталога полей, может быть и LVC и SLIS (что подано определяет само)
Алгоритм:ФМ анализирует структуру таблицы ALV_TAB, ищет описание и настройки для полей таблицы в таблицах YDK_ALV_FCAT и YDK_ALV_FCAT_TXT (язык зависимая), если находит заполняет FCAT, если не находит пытается найти описание поля по элементу данных, заполняет FCAT и сохраняет заготовку для до настройки в таблицы YDK_ALV_FCAT и YDK_ALV_FCAT_TXT. Перед выходом из ФМ проверяет появились ли новые поля в структуре ALV_TAB, если появились – уведомляет об этом пользователя и если есть полномочия разработчика предлагает выполнить настройку.
Дополнительные не обязательные параметры:STRUCTURES – строка с перечислением через «;» словарных структур/таблиц из которых нужно взять описание для полей таблицы ALV_TAB (поля ищутся по имени поля)
IN_FCAT - Каталог полей (исходный) - для тех случаев когда выполняется доработка старых программ. IN_FCAT уже заполнен, но надо добавить новые поля
Инструмент для настройки каталога:Для редактирования таблиц YDK_ALV_FCAT и YDK_ALV_FCAT_TXT сделана программа YDK_ALV_FCAT (транзакция YDKFCAT) - программа простенькая, позволяет настраивать поля каталога, удалять старые поля, записывать каталог в запрос на перенос.
Список свойств полей каталога доступных для настройки:Если каких-то свойств на ваш взгляд не хватает — пишите добавлю, собственно достаточно добавить поле в таблицу YDK_ALV_FCAT или YDK_ALV_FCAT_TXT
Установка:Архив с транспортными файлами запроса на переносPS: про опечатку в названии параметра ALV_STRUT_KEY знаю, но уже поздно. т.к. у меня этот модуль задействован уже раз 50