Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

BC400_RU_ECC_2005

.pdf
Скачиваний:
1456
Добавлен:
21.05.2015
Размер:
40.8 Mб
Скачать

BC400

Урок: Считывание таблиц базы данных

Рисунок 91: Поля целевой структуры, имена которых совпадают с именами в списке полей

При необходимости использования структурной переменной для получения считанной записи, имеющей поля, имена которых совпадают с именами полей в целевом списке, и другую структуру (дополнительные поля, другой порядок полей), целесообразно использовать дополнение CORRESPONDING FIELDS OF. В результате в целевой области будут заполнены только поля с одинаковыми именами. Следует удостовериться, что соответствующие типы полей также являются идентичными, поскольку в противном случае (как в операторе MOVE) осуществляется (сложное) преобразование, в результате которого в целевые поля могут быть перенесены неполные данные (по причине отсечения).

Преимущества этого варианта заключаются в следующем:

Целевая структура не обязательно должна быть выровнена по левому краю, также как и список полей.

Эта структура отличается простотой ведения, так как расширение списка полей или целевой структуры не требует внесения в программу дополнительных изменений, поскольку в структуре уже существует поле с тем же самым именем (и, возможно, тем же самым типом).

 

© 2006 г. SAP AG All rights reserved. Авторские

151

06-04-2006

права защищены.

Глава 5: Сбор данных

BC400

Рисунок 92: Считывание нескольких строк с использованием цикла

Показанный выше цикл SELECT может использоваться для последовательного считывания в программе нескольких строк из таблицы базы данных.

С помощью выражения WHERE определяются строки, которые будут считываться в целевую структуру и обрабатываться с использованием блока операторов, указанных в теле цикла. Несколько логических условий в рамках выражения WHERE могут быть логически соединены с помощью AND и OR.

Данные передаются из базы данных в интерфейс базы данных сервера приложений в виде пакетов. После этого записи построчно копируются указанным блоком обработки в целевую область для обработки.

Цикл завершается автоматически после считывания и анализа всех требуемых строк.

Значение возврата должно быть запрошено после выполнения цикла SELECT(т.е. после оператора ENDSELECT). Если была считана хотя бы одна строка, значение переменной SY-SUBRC равно 0. В этом случае переменная SY-DBCNT содержит количество считанных записей.

152

© 2006 г. SAP AG All rights reserved. Авторские

 

права защищены.

06-04-2006

BC400

Урок: Считывание таблиц базы данных

Рисунок 93: Считывание нескольких строк с выборкой массива

Для непосредственного, а не построчного копирования выбранной части базы данных во внутреннюю таблицу может использоваться дополнение INTO TABLE. Этот метод называется выборкой массива. Он отличается высокой производительностью и используется для заполнения внутренней таблицы записями из таблицы базы данных посредством переноса данных по блоками, а не по строкам.

Так как выборка массива не является видом обработки циклов, операторENDSELECT не требуется и даже не является допустимым.

Аналогично описанным выше вариантам SELECT, внутренняя таблица, указанная в качестве целевой для выборки массива, должна быть выровнена по левому краю и структурирована так же, как и список полей. Если внутренняя таблица не отвечает этому условию, вместо INTO TABLE необходимо использовать дополнение INTO CORRESPONDING FIELDS OF TABLE . В этом случае столбцы базы данных, указанные в списке полей, копируются в столбцы внутренней таблицы, имеющие те же самые имена. Кроме того, следует также удостовериться, что типы полей связанных столбцов соответствуют друг другу, во избежание сложного преобразования и возможного появления неполных данных в целевой таблице.

При выборке массива информация, которая могла содержаться во внутренней таблице, перезаписывается. При необходимости добавления, а не перезаписи строк, можно использовать дополнение APPENDING TABLE .

 

© 2006 г. SAP AG All rights reserved. Авторские

153

06-04-2006

права защищены.

Глава 5: Сбор данных

BC400

Если во внутреннюю таблицу была скопирована по крайней мере одна запись, значение переменной SY-SUBRC равно нулю. В данном случае переменная SY-DBCNT содержит количество считанных строк.

Рисунок 94: Считывание данных из таблиц, зависящих от манданта

Таблица базы данных называется зависящих от манданта, если поле манданта (тип данных CLNT) является первым ключевым столбцом, и таблица содержит записи, которые являются специфичными для манданта.

При выборе данных из зависящих от манданта таблиц без указания манданта выполняется считывание только тех записей данных, которые относятся к текущему манданту. Текущий мандант переносится в систему базы данных, в которой производится сбор данных.

При необходимости считывания данных из явно указанного манданта этот мандант должен быть определен в выражении WHERE. Следует

отметить, что это возможно только при использовании дополнения CLIENT SPECIFIED после выражения FROM.

Поскольку считывание данных для всех мандантов на практике требуется редко и не соответствует контексту данного курса, поле манданта в презентациях обычно опускается.

154

© 2006 г. SAP AG All rights reserved. Авторские

 

права защищены.

06-04-2006

BC400

Урок: Считывание таблиц базы данных

Рисунок 95: Аспект производительности: вторичный индекс

Если доступ к таблице базы данных часто осуществляется с использованием определенных критериев выбора, для ускорения этого процесса можно определить вторичный индекс для полей выбора. Данная операция выполняется в режиме просмотра соответствующей прозрачной таблицы в ABAP-словаре с использованием кнопки Индексы. При активации индекса в базе данных создается вторичный индекс.

При выборе из зависящих от манданта таблиц мандант всегда переносится в базу данных (т.е. данная операция всегда является частью процесса выбора). Следовательно, при определении индекса для подобных таблиц имеет смысл включать поле манданта. В ходе выполнения оно может использоваться для ограничения поиска в рамках базы данных соответствующим блоком манданта посредством вторичного индекса.

После создания и активации индекса этот индекс автоматически используется оптимизатором базы данных при выполнении программы в случае, если использование индекса ускорит процесс выбора. Указывать индекс вручную в операторе SELECT не требуется.

 

© 2006 г. SAP AG All rights reserved. Авторские

155

06-04-2006

права защищены.

Глава 5: Сбор данных

BC400

Первичный индекс состоит из всех ключевых полей таблицы базы данных и создается автоматически. Он используется для ускорения доступа при выборе по всем ключевым полям или, по крайней мере, части ключевых полей, выровненной по левому краю.

Рекомендация: Необходимо отметить, что использование индексов, в которых нет необходимости, оказывает негативное воздействие на производительность системы.

Считывание нескольких таблиц баз данных, доступ с инициированием изменений (Outlook)

Часто возникает необходимость считывания и просмотра данных из различных таблиц.

Прежде всего, следует найти повторно используемые компоненты,

применяемые для операции считывания. На следующем рисунке представлен обзор подобных подпрограмм, поставляемых SAP, которые можно включить в программу считывания.

Рисунок 96: Повторное использование компонентов для сбора данных

156

© 2006 г. SAP AG All rights reserved. Авторские

 

права защищены.

06-04-2006

BC400

Урок: Считывание таблиц базы данных

Существуют четыре типа повторно используемых компонентов, предназначенных для выбора данных:

Логические базы данных

(= программы сбора данных, выполняющие считывание данных из таблиц, иерархически связанных друг с другом)

Функциональные модули

(= подпрограммы, хранящиеся в построителе функций SAP-системы, с инкапсулированными функциональными возможностями, такими как считывание данных из иерархически связанных таблиц)

BAPI

(= методы бизнес-объектов, например, с функцией чтения)

Методы глобальных классов

Более подробная информация о поиске и использовании логических баз данных представлена в онлайн-документации по “ABAP-программированию и среде выполнения” в разделе, посвященном “доступу к базе данных

ABAP”, а также в курсе BC405.

Информация о трех других методах приведена в соответствующих разделах.

При отсутствии повторно используемых компонентов для выбора данных следует организовать доступ для чтения самостоятельно. В целом наиболее быстрым методом является внедрение с использованием объединения таблиц.

В качестве примера рассмотрим считывание и вывод записей SPFLI. Для каждой записи также будет выведено полное название соответствующей авиакомпании, хранящееся в таблице SCARR. На следующем рисунке представлен логический процесс объединения таблиц, при котором все требуемые данные могут быть выбраны с использованием оператора

SELECT.

 

© 2006 г. SAP AG All rights reserved. Авторские

157

06-04-2006

права защищены.

Глава 5: Сбор данных

BC400

Рисунок 97: Пример объединения таблиц

Рисунок 98: Записи для определения объединения таблиц

158

© 2006 г. SAP AG All rights reserved. Авторские

 

права защищены.

06-04-2006

BC400

Урок: Считывание таблиц базы данных

При объединении таблиц необходимо ответить на три вопроса:

Объединяемые таблицы

Ккаким таблицам базы данных должен быть получен доступ?

Условие соединения

Какому условию должны соответствовать записи, выбираемые из объединяемых таблиц и преобразуемые в объединенную запись?

Объединяемые столбцы

Какие столбцы из объединяемых таблиц должны быть доступны в объединенной таблице?

Рисунок 99: Варианты внедрения объединения таблиц

 

© 2006 г. SAP AG All rights reserved. Авторские

159

06-04-2006

права защищены.

Глава 5: Сбор данных

BC400

Существуют два варианта выполнения объединения таблиц:

В ABAP-словаре создается ракурс базы данных, соответствующий объединению таблиц, после чего он выбирается в программе.

Более подробная информация содержится в онлайн-документации по

ABAP-инструментальным средствам в разделе ABAP-словарь.

В программе производится выбор данных из определенного объединения (ABAP-объединение). В ходе выполнения в интерфейсе базы данных системой динамически создается соответствующий запрос базы данных.

Для получения дополнительной информации см. документацию по ключевым словам выражения FROM оператора SELECT.

Рекомендация: Объединение таблиц представляет собой ракурс соответствующих таблиц базы данных и не содержит какие-либо избыточные данные. При выборе данных из объединения таблиц требуемые данные считываются из соответствующих таблиц базы данных.

В объединение таблиц можно включать и более двух таблиц.

Рисунок 100: Доступ к базе данных для изменения

160

© 2006 г. SAP AG All rights reserved. Авторские

 

права защищены.

06-04-2006

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]