Главная страница

Руководство для участников курса Версия курса 2й квартал 2005 г. Продолжительность курса 5 Дн. Номер материала 50072594


Скачать 38.91 Mb.
НазваниеРуководство для участников курса Версия курса 2й квартал 2005 г. Продолжительность курса 5 Дн. Номер материала 50072594
АнкорBC400_RU_ECC_2005.pdf
Дата13.04.2017
Размер38.91 Mb.
Формат файлаpdf
Имя файлаBC400_RU_ECC_2005.pdf
ТипРуководство
#4748
страница9 из 23
1   ...   5   6   7   8   9   10   11   12   ...   23
Глава 5
Сбор данных
Обзор главы
См. цели отдельных уроков в рамках этого раздела.
Цели главы
Прослушав эту главу, вы сможете

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

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

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

пояснять концепцию полномочий SAP

внедрять проверки полномочий
Содержание главы
Урок: Считывание таблиц базы данных ...................................146
Упражнение 8: Сбор данных с использованием цикла SELECT .163
Упражнение 9: Сбор и буферизация данных во внутренней таблице......................................................................169
Урок: Проверка полномочий.................................................174
Упражнение 10: Проверка полномочий ...............................181 06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
145

Глава 5: Сбор данных
BC400
Урок:
Считывание таблиц базы данных
Обзор урока
На этом уроке рассматриваются возможности извлечения информации из таблиц базы данных и считывания данных из этих таблиц. Кроме того,
представлен обзор методов, позволяющих получать доступ к нескольким таблицам баз данных.
В заключение приведена информация относительно способов доступа к таблицам базы данных, в результате которого инициируется внесение изменений.
Цели урока
Прослушав этот урок, вы сможете

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

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

описывать различные способы получения доступа для чтения к нескольким таблицам базы данных
Практический пример
Необходимо проанализировать данные из таблиц базы данных.
146
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
06-04-2006

BC400
Урок: Считывание таблиц базы данных
Сбор данных
Рисунок 86: Доступ к базе данных (архитектура)
SQL (Structured Query Language) – это язык, при помощи которого осуществляется доступ к таблицам базы данных в целях определения,
изменения и считывания данных.
Каждая система управления реляционной базой данных имеет собственный
SQL, т.е. Native SQL, который является специфичным для базы данных.
Соответственно, ABAP-программа с операторами Native SQL не может использоваться без ограничений во всех SAP-системах (из-за различий в системах БД разных SAP-систем).
Open SQL – это определенный SAP стандарт SQL для языка ABAP,
который является не зависящим от базы данных. Операторы Open
SQL динамически преобразуются в соответствующие операторы Native
SQL используемой системы баз данных, и таким образом, не зависят от конкретной базы данных. Они позволяют разработчикам ABAP обращаться к данным унифицированным способом, вне зависимости от установленной системы базы данных.
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
147

Глава 5: Сбор данных
BC400
Рисунок 87: Поиск таблиц базы данных
На представленном выше рисунке иллюстрируются возможные варианты поиска требуемых таблиц базы данных.
Возможен также свободный поиск с использованием информационной системы репозитария.
Рисунок 88: Доступ к базе данных для чтения (обзор)
148
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
06-04-2006

BC400
Урок: Считывание таблиц базы данных
Оператор Open SQL SELECT используется для доступа к базе данных для чтения. Оператор SELECT содержит ряд выражений, каждое из которых имеет собственную задачу:

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

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

В выражении INTO определяется целевая переменная, в которой должны быть размещены выбранные данные.

В выражении WHERE указываются столбцы таблицы, которые должны быть выбраны.
Для получения информации о других выражениях см. документацию по ключевым словам оператора SELECT.
Рисунок 89: Считывание отдельных записей
Оператор SELECT SINGLE позволяет считывать отдельные записи
из таблицы базы данных. Для обеспечения уникального доступа необходимо, чтобы все ключевые поля выражения WHERE были заполнены.
Исключением является поле манданта: если оно не заполнено, используется текущий мандант. (Следует отметить, что мандант может быть указан в операторе выбора SELECT только в комбинации с дополнением CLIENT
SPECIFIED
. Более подробная информация будет представлена далее.)
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
149

Глава 5: Сбор данных
BC400
Звездочка * используется для указания на необходимость считывания всех выбранных полей в строке таблицы. Если требуется выбор определенных столбцов, вместо символа * можно перечислить требуемые поля. Этот вариант иллюстрируется на следующем рисунке.
Выражение INTO используется для указания целевой переменной, в которую должна быть скопирована запись данных. Выровненная по левому краю целевая область должна быть структурирована аналогично строке таблицы или указанным обязательным полям этой строки.
При обнаружении системой подходящей записи значение возврата
SY-SUBRC равно 0.
Рисунок 90: Подходящая целевая структура для списка полей
При необходимости выбора определенных считываемых полей из строки таблицы они могут быть указаны в форме списка полей в рамках оператора
SELECT
(см. рисунок выше). Затем в выражении INTO следует присвоить имя целевой структурной переменной, структура которой совпадает
со структурой списка полей (по крайней мере, в начале), т.е. содержит поля из списка полей, расположенные в том же порядке. Соответствовать друг другу должны лишь поля сопоставляемых типов. Имена полей целевой структуры не учитываются.
Альтернативой указанию целевой структуры является перечисление соответствующих целевых полей в выражении INTO.
INTO (field_1, ... , field_n)
150
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
06-04-2006

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

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

Эта структура отличается простотой ведения, так как расширение списка полей или целевой структуры не требует внесения в программу дополнительных изменений, поскольку в структуре уже существует поле с тем же самым именем (и, возможно, тем же самым типом).
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
151

Глава 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 .
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
153

Глава 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 не требуется.
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
155

Глава 5: Сбор данных
BC400
Первичный индекс состоит из всех ключевых полей таблицы базы данных и создается автоматически. Он используется для ускорения доступа при выборе по всем ключевым полям или, по крайней мере, части ключевых полей, выровненной по левому краю.
Рекомендация: Необходимо отметить, что использование индексов,
в которых нет необходимости, оказывает негативное воздействие на производительность системы.
Считывание нескольких таблиц баз данных, доступ
с инициированием изменений (Outlook)
Часто возникает необходимость считывания и просмотра данных из различных таблиц.
Прежде всего, следует найти повторно используемые компоненты,
применяемые для операции считывания. На следующем рисунке представлен обзор подобных подпрограмм, поставляемых SAP, которые можно включить в программу считывания.
Рисунок 96: Повторное использование компонентов для сбора данных
156
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
06-04-2006

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

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

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

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

Методы глобальных классов
Более подробная информация о поиске и использовании логических баз данных представлена в онлайн-документации по “ABAP-программированию и среде выполнения” в разделе, посвященном “доступу к базе данных
ABAP”, а также в курсе BC405.
Информация о трех других методах приведена в соответствующих разделах.
При отсутствии повторно используемых компонентов для выбора данных следует организовать доступ для чтения самостоятельно. В целом наиболее быстрым методом является внедрение с использованием объединения
таблиц.
В качестве примера рассмотрим считывание и вывод записей SPFLI. Для каждой записи также будет выведено полное название соответствующей авиакомпании, хранящееся в таблице SCARR. На следующем рисунке представлен логический процесс объединения таблиц, при котором все требуемые данные могут быть выбраны с использованием оператора
SELECT
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
157

Глава 5: Сбор данных
BC400
Рисунок 97: Пример объединения таблиц
Рисунок 98: Записи для определения объединения таблиц
158
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
06-04-2006

BC400
Урок: Считывание таблиц базы данных
При объединении таблиц необходимо ответить на три вопроса:

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

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

Объединяемые столбцы
Какие столбцы из объединяемых таблиц должны быть доступны в объединенной таблице?
Рисунок 99: Варианты внедрения объединения таблиц
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
159

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

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

В программе производится выбор данных из определенного объединения (ABAP-объединение). В ходе выполнения в интерфейсе базы данных системой динамически создается соответствующий запрос базы данных.
Для получения дополнительной информации см. документацию по ключевым словам выражения FROM оператора SELECT.
Рекомендация: Объединение таблиц представляет собой ракурс соответствующих таблиц базы данных и не содержит какие-либо избыточные данные. При выборе данных из объединения таблиц требуемые данные считываются из соответствующих таблиц базы данных.
В объединение таблиц можно включать и более двух таблиц.
Рисунок 100: Доступ к базе данных для изменения
160
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
06-04-2006

BC400
Урок: Считывание таблиц базы данных
В дополнении к оператору SELECT, Open SQL также содержит операторы
UPDATE
, INSERT, DELETE и MODIFY. Однако для реализации доступа к базе данных для изменения, предоставляемого этими операторами,
необходимы знания о концепции транзакций SAP; в противном случае это может стать причиной противоречивости данных.
Концепция транзакций SAP рассматривается в курсе BC414.
06-04-2006
© 2006 г. SAP AG All rights reserved. Авторские права защищены.
161

1   ...   5   6   7   8   9   10   11   12   ...   23


написать администратору сайта