Р. Кречмер, В. Вейс - Разработка приложений SAP R3 на языке АВАР4. Р. Кречмер, В. Вейс - Разработка приложений SAP R3 на языке АВАР. Разработкаприложений sap r3Рюдигер Кречмерна языкеВольфганг Вейс
Скачать 28.36 Mb.
|
Глава 5 Глобальные таблицы словаря Dictionary • Уровни Dictionary • Определение и использование таблиц и структур • Работа с элементами данных и доменами • Внешние ключи 48 Глава 5 При разработке крупного проекта нередко возникает необходимость многократного использования всеми приложениями этого проекта некоторого набора структур данных. Чтобы гарантировать непротиво- речивость использования базы данных, составляющие структуры должны быть доступны как при разработке объектов, так и при выполнении программы. В частности, внутренние таблицы, в силу того что они применяются для отображения таблиц базы данных, должны иметь ссылки на эти таблицы базы. В языке АВАР/4 эти требования обеспечиваются за счет поддержки активного интегрированного словаря Dictionary. При инициализации любого объекта Dictionary новая версия объекта автоматически становится доступной всем другим объектам, принадлежащим хранилищу Repository. Например, после изменения или инициализации структуры таблицы базы данных программа, использующая эту таблицу, будет автоматически работать с ее новой версией. Изменения объекта в Dictionary всегда распростра- няются на все связанные с этим объектом программные элементы. Правила работы с заголовочными файлами, которые содержат определения глобальных переменных и присоединяются ко всем программам, использующим указанные в них элементы, несколько иные. При внесении в заголовочный файл каких бы то ни было изменений все программы, связанные с этим файлом, должны быть заново скомпилированы, даже если в них применяются неизмененные ния Например, изменение способа определения символа I может повлиять на представление слова BLUE, хотя а нем этот симврл не присутствует. В отличие от заголовочных файлов, Dictionary (и в этом его явное преимущество) позволяет работать с неизменяемым исходным текстом программы. Новая инициализация программы только тогда, когда один из ее объектов, содержащийся в Dictionary, был инициализирован заново. Это позволяет модифицировать и расширять глобальные определения без изменения программ, которые ими пользуются. Так, изменение способа представления символа I в Dictionary никак не повлияет на слово BLUE. Связь по внешним ключам поддерживает целостность реляционной модели данных, Поля, отношением внешнего ключа с полем первичного ключа другой таблицы, могут содержать только те значения, которые допустимы в связанной с ними таблице. В системе такая проверка происходит во время ввода значения в маску ввода. Три уровня словаря Dictionary Оптимизировать многократное использование объектов Dictionary позволяет их разделение на три уровня: 1. Таблицы и структуры 2. Элементы данных 3. Домены Таблицы и структуры создаются для одного или нескольких полей. Таблицы отображают таблицы базы данных, а структуры представляют собой определения записей, которые не соответствуют таблице базы данных. Структуры могут использоваться во всех программах, при любом выводе на экран и обыч- но служат для компоновки однотипных данных приложения. Так, вместо того чтобы определять запись customer в каждой программе, можно задать эту структуру один раз в Dictionary и при необходимости многократно ее использовать. Каждое поле таблицы или структуры связано с элементом данных, описывающим содержимое этого поля. Элемент данных, в свою очередь, приписан к домену, который определяет "технические" харак- теристики поля. С другой стороны, один домен может использоваться разными элементами данных, а элемент данных может быть связан с несколькими полями различных таблиц (рис. 5.1). Домен описывает "технические" свойства поля таблицы (его программное представление), определяя набор разрешенных значений этого поля и ограничения для записи в него результата. В частности, домен задает размер поля и тип, возможную связь по внешнему ключу и количество знаков после де- сятичной точки. Например, в системе существует домен с именем Company code (код компании), ис- пользуемый для определения отделений коммерческого предприятия. Размер поля равен четырем, а тип — character. Этот домен применяется для задания элементов данных, которые связаны (через поля) с несколькими таблицами, допустим, с таблицей "Расчетные данные из платежной программы". Изменения, внесенные в домен, автоматически влияют на соответствующие ему поля данной таблицы, следователь- но, на таблицу в целом. Элементы данных представляют собой различные "роли" одного и того же домена. Они "наследуют" свойства обоих доменов и предоставляют справочную информацию о полях, которые ссылаются на них. Это позволяет получить полное описание того, как в каждом контексте используется домен. Например, в системе R/3 существует два элемента данных Sending company code (код компании-отправителя) и Receiving company code (код компании-получателя). Первый элемент данных входит, в частности, в таблицу " Расчет- Глобальные таблицы словаря Dictionary 49 Рис. 5.1 Таблицы, элементы данных, домены и их взаимосвязи ные данные из платежной программы ", а второй — в таблицу "Цены для дистрибуции". Преимущество такой организации структурных связей в том, что коды обеих компаний имеют один и тот же тип и размер поля, но два разных описания (интерпретацию для пользователя). И наконец, поля таблицы или структуры связаны с элементами данных и наследуют все их свойства: описание, размер, тип. Такая модификация наследования делает процесс многократного использования информации струк- туры очень простым. Реализация этой концепции чрезвычайно выгодна при поиске данных о приме- нении объекта, и в этом случае средства Development Workbench обеспечивают перекрестные ссылки для всех Dictionary. Всегда поддерживаются переходы между связанными друг с другом тами (от поля таблицы до элемента данных). Таблицы и структуры Неизменяемые данные обычно хранятся в "прозрачных" таблицах базы данных. Все элементы лицы имеют одинаковую структуру, определенную в Dictionary. Каждая структура одно или более полей, представляющих собой столбцы таблицы. Предусматривается возможность определения не соответствующей таблице базы данных; МОЖНО ссылаться на нее внутри программы. Однако сохранить эту структуру "физически" в базе данных так как ОТНОСИТСЯ к базовой таблице. Каждое поле связано с элементом данных, а следовательно, с доменом и принимает все его атрибуты. Три уровня атрибутов поля таблицы (поля, элементы данных и домены), где каждое поле связано с элементом данных, который домену, гарантируют непротиворечивость полей с одинако- вой формой и Если поля отличаются семантическими атрибутами, для каждого из них следует создать отдельный элемент данных. На уровне поля сохраняется информация, относящаяся только к таблице, например, является ли данное поле ключевым. На уровне элемента данных опреде- ляются семантические атрибуты (т.е. смысловое описание), а на уровне домена — технические, или программные (размер и тип данных). Длительный процесс поиска табличных данных существенно ускоряется благодаря индексам базы данных. Эти единичные поля (или группа полей) определяют местонахождение элемента данных лицы (вход в таблицу). На практике крайние левые поля определяют первичный т.е. являются полями, для которых построен специальный индекс, обеспечивающий доступ к строкам таблицы. Для любой таблицы всегда должен быть установлен первичный ключ, остальные индексы необязательны. Отображение определения Начальный экран утилиты Object Browser Initial дает возможность переключаться на экран, где пред- ставлено полное определение таблицы. Для этого выберите Dictionary Objects из переключателя опций и нажмите кнопку Edit (рис. 5.2). На следующем экране введите имя таблицы и нажмите кнопку Display. В верхней части экрана по- явится краткое описание указанной таблицы и административная информация, например дата внесения последнего изменения в данную таблицу (рис. 5.3). В нижней части экрана приведены все поля таблицы. Левый столбец содержит имя поля, а далее в других столбцах этой строки указаны атрибуты поля: • Key: квадратик перечеркнут, если данное поле является первичным ключом таблицы базы данных • Data имя элемента данных этого поля Таблица 1 Таблица 2 Таблица 3 Элемент данных В Элемент данных В Домен X 50 Глава 5 Рис. 5.2 Начальный экран программы просмотра Object Browser возможность переключиться в экран определения таблицы 5.3 Определение таблицы в Dictionary • Type: тип поля через домен данных) • Length: размер поля (определяется через домен элемента данных) • Chk. table: контрольная таблица — таблица, связанная отношениями внешнего ключа • ShortTxt: краткий текст (определяемый элементом данных) Двойной щелчок Data обеспечивает переход к экрану, отображающему оп- ределение ЭТОГО элемента данных (см. следующий раздел). Глобальные таблицы словаря Dictionary 51 Контрольные таблицы и внешние ключи см. в разделе "Внешние ключи и ввод допустимых значений". Отображение содержимого таблицы В процессе разработки прежде всего рассмотрите структуру определения таблицы. Dictionary содер- жит только описательную информацию о таких объектах, как таблицы, элементы данных и домены. Сами табличные данные хранятся таблицах базы данных. Используя модуль Data Browser, входящий в состав срелы разработки Developmeni отобразите таблицы базы данных в экране определения таблицы, выбрав элементы меню (сервис) Table Entries (элементы таблицы). например, с определения таблицы customers (пользователи). Когда явится экран выбора Data Browser, ограничьте множество элементов таблицы номерами пользователей между 0 и 10000000 (рис. 5.4). Щелкните мышью на кнопке Execute (выполнить), и выбранные данные будут выведены на экран (рис. 5.5). 5.4 Выбор элементов таблицы с помощью Data Browser 5.5 Список элементов таблицы 52 Глава 5 Можно также ограничить набор отображаемых столбцов, выбрав элементы линейки меню Settings (параметры установки) List Format (формат списка) Select Columns (выбрать столбцы) (рис. 5.6 Выбор столбцов с Data Browser можно отсортировать данные отображаемой на экране таблицы, задав ность сортировки- Для оттого в линейке меню укажите Settings (параметры установки) List Formal (формат списка) Sort Sequence (последовательность сортировки) 5.7 Ввод полей дпя сортировки с помощью Data Browser Результат сортировки приведен на рис. Экран Data Browser позволяет заносить или изменять с помощью кнопок Create Entry (создать или Change Entry (изменить элемент). При щелчке мышью на кнопке Change Entry на экран выводятся поля ввода данных (рис.5.9). Вернувшись в экран Data удалите строку таблицы, указав на меню Delete Entry. правда ли, утилита Data Browser, поддерживающая все простейшие операции с таблицей и обеспечивающая быстрое получение результатов, очень полезна? Глобальные таблицы словаря Dictionary 53 Рис. 5.8 Отсортированный список данных таблицы Рис. 5.9 Изменение элемента таблицы Если изменения в существующих таблицах производятся регулярно, особенно при изме- нении данных в разных, но связанных между собой таблицах или при необходимости реализовать дополнительные свойства пользовательского диалога, такие как проверка целостности, создайте диалоговую программу (см. главу Создание таблицы или структуры ДЛЯ создания таблицы или структуры из переключателя опцию Dictionary на начальном экране модуля Object Browser, а затем нажмите кнопку Edit. На следующем экране введите имя таблицы или структуры и укажите Create. В верхней части экрана введите короткий поясняющий текст, как показано на рис. 5.10. Для таблицы следует также задать класс создания, который управляет степенью ответственности SAP или пользователя за поддержку таблицы и будет ли SAP заполнять таблицу данными. Класс создания определяет "поведение" таблицы при установке, модификации, пере- даче таблицы в другую систему и выполнении клиентского копирования. При разработке собственной 54 Глава 5 таблицы рекомендуем выбрать класс создания Л (Application table — прикладная таблица) или С (Customizing table — таблица пользователя). 5.10 Создание таблицы в Dictionary Для того чтобы задать поля таблицы или структуры, введите их имена в крайний левый столбец. Установите флаг проверки в столбце-переключателе Key, если поле является первичным ключом таблицы базы данных. Столбец Data elem. должен содержать имя связанного с полем элемента данных. Оставшиеся столбцы заполняются информацией автоматически, в соответствии с выбранным элементом данных. Введите в третьем столбце имя подходящего элемента данных для нового поля, если оно В противном случае щелкните мышью на поле Data elem. и выберите из появившегося в правом углу экрана списка (по стрелке) необходимый элемент. Список элементов, появляющихся на экране, можно ограничить, задав критерии поиска, например имя или краткое описание элемента данных (рис. 5.11 Критерий поиска для элементов данных Разрешается также выбрать элемент данных из списка сопоставимых объектов 5.12). Если элемент данных для табличного поля не найден, создайте новый, новое имя и дважды щелкнув мышью на нем. Более подробно элементы данных рассматриваются в следующем Глобальные таблицы словаря Dictionary 55 того как заданы поля таблицы, сохраните структуру, щелкнув мышью на кнопке Save. Однако эта таблица будет недоступна другим таблицам или программам, если вы ее не активизируете, нажав на кнопку данную таблицу можно использовать в любой программе или объекте Repository в других Dictionary при выводе на экран). При инициализации лица в данных "физически". Следовательно, надо задать технические параметры таблицы 5.13). Рис. 5.12 Выбор элемента данных из списка Рис. 5.13 Установка технических параметров таблицы Использование таблиц и структур в программе Обычно таблиц или изменяется с помощью программы. Для того чтобы рабо- тать с таблицей из необходимо в первую очередь объявить таблицу, ключевое слово tables, за которым должно следовать имя таблицы. Во время выполнения программы АВАР/4 создает объект данных (называемый также area - рабочей для этой таблицы. В рабочей области может хра- ниться только одна запись таблицы. Однако, поскольку ссылки на определение таблицы находятся в каждое таблицы доступно из программы. Например, можно считать и вывести на экран данные таблицы базы данных согласно приведенным ниже операторам: 56 Глава 5 tables Эта короткая программа извлекает все данные из таблицы базы данных customers {с помощью оператора select * ) и выводит на экран каждую фамилию клиента (с помощью предложения customers-name). О команде select см. главу Структуры объявляются аналогично таблицам, при этом создается рабочая область и псе поля структуры могут использоваться в программе. Единственное различие в том, что для структуры использовать оператор select, так как она не связана ни с какой таблицей базы данных. При определении локальных данных программы можно ссылаться на таблицу, структуру или отдель- ные поля, используя ключевое слово like (см. главу 4). Например, внутренняя таблица той же структуры, что и таблица customers, определяется элементарно: data like customers occurs 100. Списки использования таблиц (Use Lists) доступны из многих экранов Development Workbench. Чтобы узнать, в каких программах можно применять таблицу customers, на экране определения таблицы щелкните мышью на кнопке List (список, где используется) и в появившемся диалоговом окне выберите тип объекта Program. Можно также проследить все случаи появления таблицы конеч- ном списке Use List 5.14). Рис. 5.14 Use для таблицы CUSTOMERS Изменение определений таблиц После изменения структуры таблицы базы данных и активизации новой версии система автомати- чески выполняет операции, необходимые для в соответствие элементов таблицы базы дан- ных. Например, добавление нового поля выполняется немедленно для всех элементов таблицы. Если изменяются или удаляются столбцы таблицы, на экране появляется диалоговое окно для определения способа преобразования элементов таблицы 5.15). Если таблица имеет небольшое число и используется разрабатываемой системе, пред- почтение следует отдать первому способу — т.е. оперативному преобразованию таблицы. Про- токол преобразования базы данных сразу же выводится на экран. Если выбрать второй способ — Background будет инициирована фоновая программа и о диалоговом окне можно время ее запуска. При третьем способе — Enter Mass Processing (отправить на массовую обработку) ука- занная таблица преобразовывается системной программой, которая обрабатывает большое число таблиц в рамках специального фонового задания. Глобальные таблицы словаря Dictionary 57 Рис. 5.15 Диалоговое окно для задания способа преобразования таблицы структуры таблицы относится к разряду опасных произойти потеря данных или других объектов (программ или использующих изменяемое или удаляемое поле таблицы. Например, при удалении ключевого поля таблица будет преобразована к новой структуре выгрузки и повторной загрузки данных. В результате этого процесса уничтожаются все ванные записи, которые могли быть сделаны. Следовательно, в новую таблицу будут перенесены только те записи, ключи которых отличаются от уже занесенных в новую таблицу. Во время такой операции данные легко Удаленные поля могут появляться в программах, использующих внутренние таб- лицы такой структуры, как "моментальные снимки" таблицы базы данных. В этом случае программы становятся синтаксически неправильными, поэтому перед изменением или удалением поля следует смотреть таблицы. Включение и добавление структур Иногда вместо того чтобы составлять заново список полей, которые должна содержать таблица или структура, полезнее просто включить в одну структуру (в качестве подструктуры) поля опреде- ления другой. Если изменить и инициировать подструктуру, таблицы, включающие данную структу- будут автоматически изменены. При необходимости можно комбинировать отдельные поля и подструктуры. В языке АВАР/** поддерживается до девяти вложения структуры. Чтобы включить подструктуру в нужно переключиться на экран определения таблицы, в самой левой колонке ввести ключевое слово (начинается с точки) и в колонке элементов ных задать имя структуры (в данном случае (рис. Можно также расширить все под- структуры, используя элементы меню: (внешние) Substructures (подструктуры) Expand All (расширить все подструктуры). необходимо расширить функции системы и, кроме того, добавить до- полнительные таблицы базы данных, поставляемые компанией SAP. Для этого модифицируйте оп- ределение таблицы, добавив к ней ноли. Однако после получения новой версии от SAP придется все равно слить ваши модификации с новой версией таблицы, если SAP тоже добавила поля. В этом случае определение таблицы и содержимое таблицы базы к новой структуре. Такой спо- соб расширения таблиц связан с дополнительной при каждом изменении версии системы. АВАР/4 Dictionary от подобных проблем, предлагая Append Structures структуры). Эта структура относится только к одной таблице, но каждая таблица может иметь любое число добавляемых структур. С программной точки зрения добавляемые структуры всегда приписываются в конец структуры таб- лицы. Однако что касается базы данных, то при добавлении полей во время перехода на новую версию поля добавляемой структуры остаются на своих местах. Таким образом, использование добавляемых структур исключает необходимость корректировать определения или преобразовывать собственно таб- лицы при замене версии. Когда таблица активизируется, происходит поиск всех се добавляемых струк- тур и добавление их к таблице. 56 Глава 5 Обратите внимание, что могут возникать различия в порядке полей в определении таблицы в Dictionary и этой таблицы в базе данных. Как построить добавляемую структуру для уже существующей таблицы? Для этого на экране ления таблицы последовательно Goto Append Structures. На экране возникает диалоговое окно для ввода имени добавляемой структуры. Допустимый для разработчика диапазон имен ограничен: имя должно начинаться с Y или Z. В противном случае возможно переопределение структуры при ус- тановке новой версии. Рис. 5.16 Включение подструктуры Работа с элементами данных Элемент данных информацию о действительную для каждого поля, ссыла- ется на этот элемент данных, независимо от которой появляется данное поле. Семантичес- кая а также внешнее представление в виде текстовых полей экрана и таблиц приписываются элементу данных вместе с соответствующим описанием поля (т.е. отображаемый на экране получении справки о на экране, берется из соответствующего элемента данных). Элементы данных описывают роли доменов в одном или нескольких приложениях. Домен может иметь различные проявления, которые имеют одни и те же формальные атрибуты (например, формат и диапазон значений), однако отличаются своей значимостью для приложений. Это реализуется за счет назначения одного домена нескольким элементам данных. Такие элементы данных, как Sender cost center (центр отправителя оплаты). cost center (центр получателя оплаты) и Partner rust (центр неров оплаты) относятся к домену Cost center (центр оплаты). Следовательно, все три элемента имеют один тин и длину, наследуемые из домена. Они отличаются определениями, в которых описывается использование полей в соответствующем приложении. Отображение определения элементов данных На экране, отображающем определение можно получить отображение элемента данных, дважды щелкнув мышью на экранном элементе "Поле таблицы". Предполагается еще возможность вы- бора объектов Dictionary с помощью утилиты Object Browser или задания имени элемента данных. При этом на экране выводится такое же отображение, как на рис. 5.17. В верхней части экрана элемента данных содержится краткое описание и административ- ная информация (дата внесения последнего изменения и статус). В нижней части экрана приведена информация О связанном с элементом домене, типе и размере элемента и может быть указано обозна- чение в которую входит. Самая нижняя часть экрана (Texts) содержит метки поля (или названия) (short — короткую, medium — среднюю, long — длинную) и заголовок. Метки используются в качестве названий (или ярлыков) полей ввода а заголовок является заголовком столбца таблицы. Глобальные таблицы словаря Dictionary 59 Об меток Dictionary для задания полай см. главу Рис. 5.17 Отображение элемента данных К описанию данных можно получить доступ, нажав на кнопку Описание выводится ни экран так же, как при получении оперативной справки по полям, связанным с этим эле- ментом. Для этого установите курсор на поле, связанном с этим элементом, и нажмите клавишу При этом на экран всегда выводится последнее так как любые изменения, внесенные в Dictionary, немедленно реализуются в в том числе в оперативной помощи. Дополнительные атрибуты, которые появляются в нижней части данного экрана, рассматриваются в следующем разделе. Сопровождение элементов данных ( и вносить изменения в данных можно разными способами: лении таблицы с двойного щелчки на табличном элемента данных ИЛИ вом Browser (выбрав в переключателе опцию Dictionary Objects и задав имя элемента). На экране сопровождения данных короткий пояснения и имя домена, которому должен принадлежать данный элемент Рис. 5.18 Создание элемента данных 60 Глава 5 Допускается как использование существующих имен доменов, так и задание нового имени, при вводе которого на экране появляется соответствующее сообщение. Создание домена начинается с двойного щелчка мышью на его имени. На появившемся экране сопровождения домена (см. далее раздел "Созда- ние и использование доменов") разрешено задавать название (метку) поля (короткое, среднее или длин- ное) и заголовок. Если метки полей не нужны, сбросьте тумблер Maintain Field Labels (сопровождение названий полей). Если метки данных отображены на экране, отменять контрольную функцию не так как иначе добавление меток при проектировании экрана придется произ- водить вручную. Для сохранения элемента данных нажмите кнопку Save. элемент данных, кноп- Activate, и тогда он станет доступным для использования в системе. Аналогичные правила действуют и при внесении изменений в элемент данных: активная версия элемента данных применяется ко всем полям таблиц, его поддерживают. Для создания или изменения описания нажмите на кнопку Documentation. Вводимое описание вы- водится на экран при нажатии на клавишу F1 (получение оперативной справки). В самой нижней части экрана Data Maintenance приведен идентификатор параметра Parameter ГО, который можно использовать при задании значения поля по умолчанию, Если поля имеют этот атрибут, тогда на вложенных диалоговых экранах они автоматически заполняются такими же зна- чениями, как на начальном Например, если номер пользователя установлен на первом экране, он будет использоваться по умолчанию и на всех остальных (соподчиненных) Сле- довательно, при разработке диалогового экрана должен быть задам соответствующий ПОЛЯ. Об использовании Parameter при разработке диалоговых экранов см. главу 22. Создание и использование доменов Домен описывает набор возможных значений и выходных характеристик поля таблицы. Допустимые значения данных ссылающегося на домен поля определены диапазоном значений домена. Один домен может являться базовым для любого количества полей одинаковой структуры. При внесении изменений в домен поля, связанные с одним и тем же доменом (через назначенные им элементы данных), будут изменяться. Это обеспечивает согласованность полей. Диапазон значений домена определяется на экране сопровождения домена Domain Maintenance путем задания типа данных и размера. Например, для домена установлен тип данных char (символьный) длиной 25. Отображение определения домена Отображение определения домена можно вывести на экран разными способами: • Дважды щелкнув мышью на поле таблицы, чтобы открыть окно элемента данных, и затем дважды щелкнув на элементе данных, чтобы получить доступ к окну домена. • Выбрав Dictionary Objects в переключателе опций Object Browser и введя имя домена (предостав- ляется оперативная справка по вводу). Независимо от способа в результате на экране появится краткий текст и атрибуты домена, анало- гичные приведенным на рис. 5.19. В верхней части экрана элемента данных содержится краткое описание и административная инфор- мация (дата внесения последнего изменения и статус). Ниже приводится тип элемента и размер поля. В следующей части экрана содержится информация о допустимых значениях полей, связанных с доменом. Существует два способа задать ограничения диапазона значений домена; • Использовать таблицу значений • Использовать фиксированные значения Если указана таблица значений, разрешается ввод только тех связанных с данным доменом значений полей, которые содержатся в этой таблице. При этом не осуществляется никакой проверки типа маски ввода поля, за исключением случая, когда для этого поля определен внешний ключ. Определение внешних ключей см. ниже в разделе "Внешние ключи и ввод допустимых значений". Глобальные таблицы словаря Dictionary 61 Рис. 5.19 Отображение домена S_CUSTOMER Задавая диапазон размеров с помощью фиксированных можно указать список до- пустимых фиксированные значения могут представлять собой номера месяца в году (1, 2 12) или два символьных значения Б (business) и Р указывающих на принадлеж- ность клиента: В — корпоративный, Р — частный пользователь. Набор фиксированных значений ломена выводится на экран при нажатии на кнопку Values (см. 5.20, где показан домен так как домен не имеет значений). Допускается совместное использование табличных и фиксированных значений. В этом случае ввод значения связанного разрешен только тогда, когда это значение и таб- лице, и списку фиксированных значений. Следующая ниже часть экрана (см. рис. 5.19) представляет выходные характеристики связанного с доменом поля. Например, поле Output Length (выходной размер) содержит максимальный размер поля, включая управляющие элементы редактирования при вводе или выводе. Это значение вычисляется авто- матически, но его можно переустановить. Средства Development Workbench языка АВАР/4 позволяют создавать функции преобразования (conver- sion functions), обеспечивающие возможность автоматически редактировать поле, как только оно появля- Внешние и внутренние типы данных Внешний тип данных домена (и, следовательно, поля таблицы) служит для представления содержимого поля на экране. Например, маска редактирования поля времени определена для отображения как внешний тип данных. Набор внешних типов может не совпадать с внутренними типами локальных полей программы, которые указы- ваются в определении данных. Однако существуют общие правила соответствия типов. Наиболее важные из них следующие: « тип Внутренний тип Описание (размер) c(x) Character (символ) Currency Key (обозначение валюты) m (n-digits, цифры, количество знаков десятичной точки) d Data (дата) i Integer (целое) c(1) Language (язык) numc(x) n(x) Numeric character (only digits) (числовые символы, только цифры) t 62 Глава 5 ется на экране. Имя функции преобразования начинается со слов CONVERSION_ЕХГT_, за которыми следует собственно имя из пяти символов (например, ALPHA), и завершается словами _INPUT или _OUTPUT. Во время выполнения программы эта функция запускается каждый раз при выводе поля на экран или при изменении маски ввода. Имя функции (пять символов) для связанного домена указыва- ется в нижней части экрана Domain Maintenance. Рис. 5.20 Фиксированные значения домена S_CUSTTYPE Рис. 5.21 Список использования домена S_CUSTOMER Для как и для данных, пользователь может получить список использова- ния (Use List). Для этого надо нажать на кнопку Where-Used List. Список использования домена приведен на рис. 5.21. Создание доменов Чтобы создать новый домен, воспользуйтесь способом, приведенным в посвященном определения домена: дважды щелкните мышью на имени нового домена в элементе дан- Глобальные таблицы словаря Dictionary 63 или с помощью Browser выберите опцию Dictionary имя домена в окне. Независимо от способа введите поясняющий внешний тип данных домена, а затем размер поля (допустимое количество символов без учета управляющих, таких как запятые или точки). Таким образом тип и размер всех полей таблицы, относящихся к домену. И наконец, необходимо сохранить и активизировать домен. Внешние ключи и ввод допустимых значений Основными элементами реляционной модели данных являются таблицы и взаимосвязи ними. Самую важную обеспечивают keys), поддерживающие отношения между двумя таблицами. В простейшем случае эта связь устанавливается путем указания одной таблице определен- ного поля, значения которого должны входить в поле первичного ключа другой таблицы. Сложные взаимосвязи по ключу включают в себя группы полей. Самой важной функцией внешних ключей является обеспечение целостности данных в реляционной модели данных. внешнего ключа, связанные с полями первичного ключа другой таблицы, могут содержать только определенные значения: они должны быть допустимыми для таблицы, на которую ссылается ключ. имеющее связь по внешнему ключу, называется полем внешнего ключа (foreign key field), а таблица, на которую ссылается ключ в словаре Dictionary, — Таким образом, первичный ключ контрольной таблицы является внешним ключом другой таблицы. механизм обеспечивает непротиворечивость данных во всей системе. Например, если список заказов туристического агентства содержит информацию о для которых следует заброниро- вать на эта информация будет храниться как идентификатор клиента в нормализован- ной модели данных. В свою очередь, каждый идентификатор должен стать первичным ключом содержащей данные обо всех клиентах. Таким образом, таблица booking (заказы) будет иметь внешний ключ связанный с контрольной таблицей customers. Гарантией того, что в систему попадут только непротиворечивые служит использование в системе отношений внешних ключей. Это достигается за счет контрольных таблиц с экранными полями согласно контрольной новое значение не относится к допус- система предлагает пользователю ввести другие данные и выводит на экран соответствующие сообщение об ошибке. Справочная информация о допустимых значениях отображается на осно- вании информации, хранящейся в Dictionary. Если установить курсор на поле ввода и нажать клави- шу на экране появится всплывающее окно со списком допустимых значений этого которые хранятся в связанной с ним контрольной таблице. Об использовании внешнего ключа для проверки ввода данных пользователем см. главу Имя связанной контрольной таблицы приведено в столбце на экране определения табли- цы. Для создания или изменения отношения внешнего ключа поместите курсор в нужное поле и на- жмите кнопку Foreign Key (внешний ключ). На появившемся экране введите краткий пояснительный текст и имя контрольной таблицы 3.22). Рис. 5.22 Контрольная таблица поля внешнего ключа 64 Глава 5 По умолчанию система использует в качестве контрольной таблицы значения базового домена. На- пример, на рис. 5.22 таблица является по умолчанию контрольной для таб- личного поля После слов Check table в предлагаемых полях ввода можно задать и другое имя Однако сама контрольная таблица должна быть связана с домена через единственную связь по внешнему ключ)' или через цепочку других связей. Представления Представления являются виртуальными таблицами, данные которых принадлежат одной или несколь- ким таблицам. Это говорит о различии логическою определения и физического хранения данных. Представление позволяет ил других таблиц определенные данные. При атом используются следующие правила: • Projection (создание проекций); отмена доступа к одному или нескольким столбцам (невидимые столбцы) • Selection (выбор): передача представление только определенных строк • Join (соединение): соединение таблиц с общими столбцами Для того чтобы гарантировать создание семантически значимых в определении пред- ставления быть только такие которые имеют ссылки по внешнему ключу на общие контрольные таблицы в Dictionary. Общая контрольная таблица называется первичной (primary table), a другие таблицы соединения — (secondary table). Представления базы данных служат для удоб- ного и эффективного использования данных, так как позволяют ограничить их количество и размер при считывании из базы (см. главу 11). Если необходимо создать представление, используя Object Browser, выберите опцию Dictionary Objects на экране Initial, а затем нажмите кнопку Edit в нижней части экрана. В появившемся окне задайте имя представления и нажмите кнопку Create. На следующем экране введите краткий текст с описанием представления и укажите тип представления — D (database - базы данных). После этого задай- те имя первичной таблицы (т.е. имя общей контрольной таблицы для всех составляющих таблиц пред- как показано на рис. 5.23. Рис. 5.23 Атрибуты и первичная таблица представления Далее можно выбирать таблицы щелкая мышью на кнопке (рис. 5.24). Если мышью на кнопке Fields (поля) на экране Maintain Attributes представления: атрибуты), все ключевые поля таблицы. Разрешается удалять или задавать новые поля (рис. 5.25), создавая проекции. И можно выбрать строки, щелкнув ни кнопке Selection Condition (условия выбора). Глобальные таблицы словаря Dictionary 65 Рис. 5.24 Вторичная таблица представления Рис. 5.25 Ведение полей представления Определение объекта типа type-pool В предыдущем разделе были представлены способы определения табличных структур, используемых в реляционных базах данных. Вообще говоря, все таблицы в Dictionary имеют плоские строки и могут включать только поля; применение вложенных таблиц не допускается- Как следует из главы 4, локаль- ные данные программы задаются ключевыми словами types и data и для них разрешено использовать не только простые записи, но и пложенные структуры и таблицы. Эти типы можно многократно ис- пользовать в других программах, задавая в Dictionary тип 66 Глава 5 Для вывода на экран или создания типа данных на экране Object Browser Initial выберите опцию Dictionary Objects и нажмите кнопку Edit в левой части экрана. На следующем экране введите имя типа после метки Type Group. Объявление types в Dictionary осуществляется посредством такого же синтаксиса, который применялся для определения типа в программе (см. главу 4). Например, с помощью строки определения типа для внутренней содержащей данные о служащих, можно установить тип для данных customer: t y p e - p o o l b e g i n of of phone numbers , begin of phone type occurs occurs of Типы могут использоваться в других программах через декларацию type-pools data employees type employee occurs Специальные поля таблицы Многие компании имеют клиентов в разных странах мира, поэтому при получении заказа им неред- ко приходится обрабатывать разную валюту. При этом либо все суммы, записанные в определенной валюте, должны конвертироваться к одной, либо денежную единицу следует задавать отдельно. АВАР/4 предлагает много эффективных способов работы с валютой. Можно определять пары полей, где одно содержит числовое значение, а второе — название валюты. Такие поля называются свя- занными (reference При определении таблицы числовое значение должно принадлежать домену типа и ссылаться на поле таблицы типа которое содержит ключ валюты (например, USD для долларов США). Ключ валюты необязательно должен располагаться той же самой таблице. Вернемся к примеру с туристическим агентством: полей с числовыми значениями валюте в таблице customers нет — они записаны в таблице bookings, собрана вся информация о бронировании биле- тов (рис. Рис. 5.26 Определение таблицы BOOKINGS Глобальные таблицы словаря Dictionary 67 Поле forcuram (сумма в иностранной тип и ссылку на поле (ключ ино- странной валюты), которое находится в той же самой таблице. Для того чтобы увидеть эту ссылку, нужно просмотреть правую часть экрана Table Maintenance (см. рис. 5.26), переместив его вправо с помощью кнопок прокрутки, которые расположены в левой нижней части экрана. На следующем экране можно связанную таблицу и поле (рис. 5.27). Рис. 5.27 Ссылки полей таблицы BOOKINGS При суммы в поле валюты автоматически необходимое число десятичных зна- ков для записи данной валюты (например, два десятичных знака для доллара США: 0.00). Более того, если подобное поле выводится на экран с помощью команды write, допускается использовать ссылку на ключ валюты (см. главу 8). Так же и для величин, выраженных в различных единицах: можно нить парный тип quan и unit, например для расстояний, измеряемых в милях или километрах. В системы часто встречаются таблицы, зависящие от (клиент). С точки зрения приложения вся система R/3 разделяется на несколько Client, каждый экземпляр содержит рабочие данные одной коммерческой единицы (подразделения). В типовой конфигу- рации один Client используется для реальных данных предприятия, а второй модель компании, поставляемую SAP с системой. Могут быть установлены и другие экземпляры Client, ориен- в на построение среды для настройки системы по требованиям поль- зователя. С программной точки зрения Client представляется самым левым ключевым полем во псех приклад- ных таблицах. Client может интерпретироваться в бизнес-модели данных SAP как наиболее общая сущ- ность всей модели (см. главу 6). Концепция Client полностью поддерживается в АВАР/4 Development Workbench. тип данных (сокращение от Client) используется в Dictionary для самого левого ключевого поля всех таблиц, зависящих от Client. Когда программа АВАР/4 с помощью команды select считывает данные из таблицы, зависящей от Client, Client нельзя задавать в предложении так как система автоматически реализует текущее значение Client (см. главу 11). Системные таблицы и объекты АВАР/4 Development Workbench не зависят от Client, так как они одинаково применяются для экземпляров (в программы и определения таблиц являются зависимыми от Client). 68 Глава 5 Резюме • АВАР/4 Dictionary является активным интегрированным словарем: изменения объектов в Dictionary автоматически отражаются на всех программах, ссылающихся на эти объекты. • Таблицы, соответствующие таблицам базы данных, и структуры объявляются без их физического заполнения данными. • Каждое поле таблицы ссылается на элемент данных, который может использоваться для несколь- ких полей. Элементы данных снабжаются справочной информацией и метками, служащими для ссылок полей на эти элементы. • Элементы данных приписываются домену, который в свою очередь может использоваться несколь- кими элементами данных. Домен описывает технические свойства поля таблицы, определяя набор допустимых значений данных поля и характеристики результата (выходных значений). • Поля таблицы, определенные как внешний ключ и связанные с полями первичного ключа другой таблицы, могут содержать только те значения, которые допустимы для связанной таблицы. Про- верка значения выполняется, когда пользователь вводит его в маску ввода. • Представления базы данных, содержащие информацию одной или нескольких таблиц, позволяют ограничить объем данных, извлекаемых из базы. • Составные типы (т.е. вложенные таблицы) определяются как тип pool и реализуются в различных программах с помощью оператора type-pools. • Существуют специальные типы полей, в частности тип для обозначения валюты, который связан с ключом валюты, а также количественные поля, связанные с единицами измерения. • Работа системы с несколькими экземплярами Client поддерживается специально сформированными таблицами для "системных" Client. В следующей главе рассматриваются способы графического создания модели приложения на осно- вании информации, хранящейся в Dictionary. |