Меню

Восторгаемся величием ABAP-словаря (BC430)

В SAP системах существует несколько миллионов (в разных системах, по-разному; если хотите узнать, сколько в Вашей - исполните транзакцию SE11, и в ней посмотрите количество записей в таблице TRDIR.) ABAP-программ. Чтобы все это обилие программ работало правильно, нужно, чтобы одинаковые по смыслу задачи данные из разных программ были одинаковым образом «устроены». А для этого нужно центральное хранилище общих для системы описаний типов данных.

В SAP системах существует несколько миллионов (в разных системах, по-разному; если хотите узнать, сколько в Вашей - исполните транзакцию SE11, и в ней посмотрите количество записей в таблице TRDIR.) ABAP-программ. Чтобы все это обилие программ работало правильно, нужно, чтобы одинаковые по смыслу задачи данные из разных программ были одинаковым образом «устроены». А для этого нужно центральное хранилище общих для системы описаний типов данных. В SAP-системах глобальные описания типов можно делать в глобальных классах и интерфейсах (Про обучение объектно-ориентированному программированию в ABAP смотрите статью «BC401. Основы объектно-ориентированное программирование в ABAP», а можно ‑ в ABAP-словаре. По сравнению с описанием типов в глобальных классах и интерфейсах «словарские» описания позволяют не только определить технические свойства (тип, размер, точность), но еще и кучу семантической информации и связанные с семантикой интерактивные службы, например, документацию, предъявляемую по кнопке F1 или выбор допустимых значений, вызываемый по кнопке F4. Разумеется, несравненно проще определить эти интерактивные службы один раз в словаре, чем отдельно писать специальные процессинговые блоки и каждый раз вручную программировать их вызовы. Именно в ABAP-словаре определяется модель данных.

Назначение, функциональность ABAP-словаря, а также способы работы с ним рассматриваются, в семинаре «BC430. Словарь-справочник данных». Продолжительность семинара 3 дня. Семинар предназначен для разработчиков, администраторов системы и базы данных, руководителей проектов и консультантов.

Для продуктивного участия в семинаре следует быть в «сабже»; для этого рекомендуется использовать доступ «BC400. Основы ABAP-инструментальных средств».

Одно и то же по смыслу задачи поле может входить в разные таблицы. Это ии позволяет установить связи между записями разных таблиц. Для корректной работы базы данных требуется, чтобы такие, идентичные по логике, поля были устроены одинаковым способом. В реляционных базах данных вводится описание типа поля – домен, а в различных таблицах при описании полей указывают домен, что позволяет гарантировать идентичность описаний типов полей разных таблиц, ссылающихся на один и тот же домен. В SAP-системах пошли дальше: семантически разные поля, могут иметь технически одинаковые типы, а потому в ABAP словаре разделили техническое и семантическое (смысловое) описание типа. Сначала создается техническое описание типа – домен, потом на основании домена создается семантическое описание типа поля – элемент данных. Элемент данных кроме технического типа имеет текстовые описания и может иметь еще документацию, предъявляемую по кнопке F1, механизм выбора допустимых по кнопке F4, механизм передачи данных с экрана на экран. При создании описаний таблиц базы данных и структур в описании полей указывается элемент данных. В итоге получается, что семантически одинаковые поля разных таблиц и структур не только одинаковым образом устроены технически, но и могут иметь одинаковую реакцию на действия пользователей. Причем для этого не нужно ничего специально программировать, эта реакция наследуется из «словарских» описаний(Конечно, существует возможность в описании полей и элементов данных непосредственно указать технические свойства. В таком случае будут потеряны указанные преимущества трехуровневого описания свойств полей (домен-элемент данных-поле).

В описаниях таблиц базы данных и структур можно создать одинаковые группы полей, для чего существует элегантный способ – include structure, что позволяет осуществлять к полям таблиц и структур как двухчленный (структура-поле), так и трехчленный (структура-группа-поле) доступ. Для агрегации одинаковым образом устроенных данных в ABAP создаются внутренние таблицы. В ABAP-словаре можно определить табличные типы – способы устройства внутренних таблиц. Таблицы базы данных непременно состоят только из скалярных полей, структуры же не обязаны быть плоскими, их компоненты могут быть не только скалярами, но и внутренними таблицами. В свою очередь внутренние таблицы могут состоять из неплоских структур. Таким образом, в словаре можно определить глубоко вложенные типы данных.

ABAP словарь позволяет полностью описать модель данных, по этим описаниям в базе данных будут автоматически созданы необходимые таблицы. В словаре можно создать прозрачные таблицы, то есть такие, устройство которых в базе данных будет именно таким, как это указано в «словарском» определении. Кроме прозрачных таблиц можно создать определение таблиц базы данных еще двух типов: кластерные и «пуловские». В базе данных таких таблиц создано не будет. Это только «словарские» описания. На уровне базы данных кластерные таблицы, относящиеся к одному кластеру, и «пуловские» таблицы, относящиеся к одному пулу, хранятся, в одной таблице – кластере и пуле соответственно. Но при обращении к таким таблицам из-под ABAP результат такой, как если бы эти таблицы были отдельно созданы в базе данных. Пулы и кластеры таблиц отличаются устройством. Применение кластерных и «пуловских» таблиц имеет определенные преимущества, но и недостатки тоже.

Для всякой прозрачной таблицы автоматически создается первичный индекс. Для повышения производительности работы с прозрачной таблицей можно создать дополнительные индексы. (Создание дополнительных индексов не панацея: индексы используются не при каждом запросе, а накладные расходы на ведение индексов существуют всегда. Дополнительный индекс может быть хорошим, а может быть и плохим. Эти и смежные темы, связанные с индексами рассматриваются в курсе «BC490. Настройка производительности ABAP-программ»). Другой способ повышения производительности работы с таблицами базы данных – буферизация. Если к таблице часто обращаются на чтение и редко на запись, то не обязательно при каждом обращении посылать запросы к базе данных. Однажды полученные данные можно сохранить в буферах сервера приложений и при последующих обращениях брать данные из буфера, а это гораздо быстрее, чем повторные запросы к базе данных. В «словарском» определении таблицы можно предписать буферизацию: индивидуальную, полную или родовую, на желательную глубину ключа. (Подробнее состав буферов, выделение памяти под буфера и прочие вопросы, связанные с буферизацией обсуждаются в курсе «BC490.

Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland

У вас уже есть учетная запись?

Войти

Обсуждения Количество комментариев5

Комментарий от  

Олег Точенюк

  |  01 апреля 2016, 11:36

Да словарь мощная вещь, если бы еще понимать для чего и как его использовать в практическом плане, так как у меня после прослушивания BC430 осталось впечатление что и что? Т.е. в самом курсе как мне сейчас кажется не очень сделана связь с реальной жизнью при разработках на ABAP, т.е. это все воспринимается больше как создание и ведение таблиц. Это я уже гораздо позже понял какая это вещь :-)

Комментарий от  

Василий Ковальский

  |  12 апреля 2016, 11:46

Да словарь мощная вещь, если бы еще понимать для чего и как его использовать в практическом плане, так как у меня после прослушивания BC430 осталось впечатление что и что? Т.е. в самом курсе как мне сейчас кажется не очень сделана связь с реальной жизнью при разработках на ABAP, т.е. это все воспринимается больше как создание и ведение таблиц. Это я уже гораздо позже понял какая это вещь :-)

>Да словарь мощная вещь, если бы еще понимать для чего и как его использовать
!
 
>как мне сейчас кажется не очень сделана связь с реальной жизнью при разработках на ABAP
Курс про словарь данных, а не про разработки, допустим, в области сбыта. Если сделать, допустим, "сбытовые" примеры, обидно станет разработчикам в области, допустим, финансов.
 
> это все воспринимается больше как создание и ведение таблиц.
Открою страшую тайну. Созданию таблиц уделяется в курсе три часа, вдению таблиц с помощью ракурсов ведения и кластеров ракурсов - 2 часа десять минут. Итого пять часов десять минут из трехдневного курса.
 
> Это я уже гораздо позже понял какая это вещь :-)
Вы правы, погимание приходит с опытом.
Да и вообще тематические семинары лучше посещать по мере возникновения необходимости, а не задолго до этого.

Комментарий от  

Олег Точенюк

  |  13 апреля 2016, 09:29

>Да словарь мощная вещь, если бы еще понимать для чего и как его использовать
!
 
>как мне сейчас кажется не очень сделана связь с реальной жизнью при разработках на ABAP
Курс про словарь данных, а не про разработки, допустим, в области сбыта. Если сделать, допустим, "сбытовые" примеры, обидно станет разработчикам в области, допустим, финансов.
 
> это все воспринимается больше как создание и ведение таблиц.
Открою страшую тайну. Созданию таблиц уделяется в курсе три часа, вдению таблиц с помощью ракурсов ведения и кластеров ракурсов - 2 часа десять минут. Итого пять часов десять минут из трехдневного курса.
 
> Это я уже гораздо позже понял какая это вещь :-)
Вы правы, погимание приходит с опытом.
Да и вообще тематические семинары лучше посещать по мере возникновения необходимости, а не задолго до этого.

Ну я имел в виду, что после курсов понимания как это применять в полной мере в разработках не очень ясно. Ну я по себе сужу когда в первый раз этот курс прослушал, как-то ну таблицы, ну ракурсы и все, дальше не пошло. А по поводу примеров, ну в принципе зачем же сбытовые, если есть замечательные таблицы авиарейсов :-) можно и на них делать.

Комментарий от  

Василий Ковальский

  |  13 апреля 2016, 16:07

Ну я имел в виду, что после курсов понимания как это применять в полной мере в разработках не очень ясно. Ну я по себе сужу когда в первый раз этот курс прослушал, как-то ну таблицы, ну ракурсы и все, дальше не пошло. А по поводу примеров, ну в принципе зачем же сбытовые, если есть замечательные таблицы авиарейсов :-) можно и на них делать.

Именно этот набор таблиц в упражнениях и наращивается. Вы просто забыли.

Комментарий от  

Олег Точенюк

  |  14 апреля 2016, 00:32

Именно этот набор таблиц в упражнениях и наращивается. Вы просто забыли.

Возможно, как-то с февраля 2001 много чего наверное изменилось :-)