:::: МЕНЮ ::::

Определение имени поля по его значению

В функциях (пригодных для повторного применения) анализа и обработки данных во внутренних таблиц необходимо знать лишь часть данных о таблицах: саму таблицу и имена тех полей, которые нужно обрабатывать. Возникает вопросы: «Каким должен быть интерфейс функции?» и «Как типизировать параметры?». Интерфейсы для внутренних таблиц еще не изобрели, поэтому в параметрах функции должна передаваться обрабатываемая таблица и названия полей для обработки.
Передача имена полей через параметры через параметры накладывает ряд ограничений. Любые действия с изменением структуры (переименование или удаление полей) будет требовать особой осторожности, так как в журнале использования поля отображаться не будут. Эта задача является примером, когда требуется определить названия поля структуры.
В общем случае постановка задачи звучит следующим образом: имеется структура LS_STRUCT. Требуется написать функцию, которая по значению поля будет возвращать его имя. То есть, при LS_STRUCT-SOME_FIELD вернет строку с содержимым SOME_FIELD.

Решить данную задачу можно используя RTTS.
Подход заключается в следующем:

  • Определяем структуру для анализа
  • Раскладываем структуру на компоненты: поля и группы
  • Создаем индексную таблицу со ссылкой на компоненту и информацией о ней
  • Для определения имени компоненты по ссылке определяем информацию о поле из таблицы выше

Для примера создадим класс ZCL_STRUCT_ANALYZER

Пример использования


Присоединиться к обсуждению...