Руководство для участников курса Версия курса 2й квартал 2005 г. Продолжительность курса 5 Дн. Номер материала 50072594
Скачать 38.91 Mb.
|
Глава 4: Основные языковые элементы ABAP BC400 Рисунок 66: Обращение к структурным компонентам Структурные компоненты всегда выделяются дефисом: structure_name-component_name Поэтому использовать дефисы в именах не следует. Рисунок 67: Копирование структурных компонентов с одним и тем же именем 110 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа со структурами Оператор MOVE-CORRESPONDING используется для копирования содержимого исходной структуры в целевую структуру по отдельным компонентам. Учитываются только те компоненты, которые имеют одно и то же имя в исходной и целевой структуре. Все другие структурные компоненты остаются неизменными. Присвоение отдельных значений можно выполнить с помощью оператора MOVE. Рисунок 68: Структуры в режиме отладки В отладчике можно отслеживать содержимое поля структуры путем ввода имени структуры в области Имена полей или его копирования из исходного текста путем двойного щелчка. Просмотреть структурный компонент можно с помощью двойного щелчка по имени структуры в области Имена полей. 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 111 Глава 4: Основные языковые элементы ABAP BC400 112 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа со структурами Упражнение 6: Работа со структурами Цели упражнения Выполнив это упражнение, вы сможете • отслеживать поток данных с помощью ABAP-отладчика и пояснять связь между выполняемыми блоками операторов • использовать ABAP-оператор MOVE-CORRESPONDING для присвоения значений в структурах Практический пример Необходимо проанализировать ABAP-программу в целях проверки времени и способов переноса данных между определенными структурированными объектами данных. Задание 1: Выполнение программы в режиме отладки 1. Запустите программу SAPBC400WBS_GETTING_STARTED. На экране выбора введите значение LH в поле Авиакомпания. В поле команды введите /h, затем нажмите Enter. Для выполнения программы нажмите F8. Будет выполнен переход в режим отладки. 2. Убедитесь в том, что все объекты данных имеют начальные значения. Перенесите все объекты данных, определенные в программе, в ракурс поля. Просмотрите типизацию и содержимое структурных компонентов. Рекомендация: В программе оператор TABLES sbc400_carrier определяет переменную структуры, имя и структура которой совпадают с аналогичными атрибутами указанной структуры словаря данных SBC400_CARRIER. Этот нестандартный и неинтуитивный тип определения структуры используется только для программирования экранов. Определенная в программе структура используется в качестве интерфейса для обмена данными между программой и экраном. Для получения дополнительной информации см. соответствующие упражнения в разделе о программировании экранов. 3. Выполните шаги программы с использованием функции пошагового выполнения. Продолжение на следующей странице 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 113 Глава 4: Основные языковые элементы ABAP BC400 Задание 2: Анализ содержимого полей 1. Какие поля структуры WA_SCARR заполняются с помощью оператора SELECT ? Какое значение принимает системное поле SY-SUBRC после выполнения этого оператора? 2. Теперь проверьте процесс копирования полей из структуры WA_SCARR в структуру SBC400_CARRIER. Какие значения полей копируются? 3. ABAP-оператор CALL SCREEN 100 используется для обработки экрана 100. Каковы технические имена полей на экране? 4. На экране введите соответствующие значения для имени пользователя, даты и времени и продолжите выполнение программы путем нажатия Enter Какие объекты данных программы выведены теперь в списке? Каковы их значения? Продолжение на следующей странице 114 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа со структурами Задание 3: Контроль структуры списка 1. Теперь проверьте процесс составления списка с помощью оператора WRITE Рекомендация: После выполнения первого оператора WRITE в строке инструментов появляется дополнительная кнопка. Эта кнопка используется для просмотра созданного буфера списка. Однако строка буфера списка выводится на экран только при его закрытии, т. е. при открытии следующей строки. Задание 4: Установка точек прерывания и изменение содержимого поля 1. Перезапустите программу в режиме отладки. Установите точку прерывания для всех операторов WRITE. Также установите точку наблюдения для структуры WA_SCARR. Продолжите выполнение программы путем выбора Дальше и проверьте причины остановки программы в каждом конкретном случае. 2. Перезапустите программу в режиме отладки. Установите точку прерывания для оператора CALL SCREEN и выполняйте программу до тех пор, пока не будет достигнут этот оператор. Перед обработкой экрана присвойте произвольное имя внутреннему программному полю UNAME структуры SBC400_CARRIER. Рекомендация: Для изменения значения поля в отладчике выберите Изменение содержимого поля в области Имена полей. Теперь выполните оператор CALL SCREEN. Что отображается на экране? 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 115 Глава 4: Основные языковые элементы ABAP BC400 Решение 6: Работа со структурами Задание 1: Выполнение программы в режиме отладки 1. Запустите программу SAPBC400WBS_GETTING_STARTED. На экране выбора введите значение LH в поле Авиакомпания. В поле команды введите /h, затем нажмите Enter. Для выполнения программы нажмите F8. Будет выполнен переход в режим отладки. a) Этот шаг выполняется в соответствии с описанием. 2. Убедитесь в том, что все объекты данных имеют начальные значения. Перенесите все объекты данных, определенные в программе, в ракурс поля. Просмотрите типизацию и содержимое структурных компонентов. Рекомендация: В программе оператор TABLES sbc400_carrier определяет переменную структуры, имя и структура которой совпадают с аналогичными атрибутами указанной структуры словаря данных SBC400_CARRIER. Этот нестандартный и неинтуитивный тип определения структуры используется только для программирования экранов. Определенная в программе структура используется в качестве интерфейса для обмена данными между программой и экраном. Для получения дополнительной информации см. соответствующие упражнения в разделе о программировании экранов. a) Этот шаг выполняется в соответствии с описанием в учебных материалах. 3. Выполните шаги программы с использованием функции пошагового выполнения. a) Этот шаг выполняется в соответствии с описанием в учебных материалах. Задание 2: Анализ содержимого полей 1. Какие поля структуры WA_SCARR заполняются с помощью оператора SELECT ? Какое значение принимает системное поле SY-SUBRC после выполнения этого оператора? Ответ: Все, "0" Продолжение на следующей странице 116 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа со структурами 2. Теперь проверьте процесс копирования полей из структуры WA_SCARR в структуру SBC400_CARRIER. Какие значения полей копируются? Ответ: Значение полей с одинаковыми именами: MANDT, CARRID, CARRNAME и CURRCODE. 3. ABAP-оператор CALL SCREEN 100 используется для обработки экрана 100. Каковы технические имена полей на экране? Ответ: SBC400_CARRIER-CARRID SBC400_CARRIER-CARRNAME SBC400_CARRIER-CURRCODE SBC400_CARRIER-UNAME SBC400_CARRIER-UZEIT SBC400_CARRIER-DATUM 4. На экране введите соответствующие значения для имени пользователя, даты и времени и продолжите выполнение программы путем нажатия Enter Какие объекты данных программы выведены теперь в списке? Каковы их значения? Ответ: В списке содержатся поля вспомогательной структуры программы SBC400_CARRIER. На экране отображаются или вводятся значения именно этих полей. Задание 3: Контроль структуры списка 1. Теперь проверьте процесс составления списка с помощью оператора WRITE Рекомендация: После выполнения первого оператора WRITE в строке инструментов появляется дополнительная кнопка. Эта кнопка используется для просмотра созданного буфера списка. Однако строка буфера списка выводится на экран только при его закрытии, т. е. при открытии следующей строки. a) Этот шаг выполняется в соответствии с описанием. Продолжение на следующей странице 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 117 Глава 4: Основные языковые элементы ABAP BC400 Задание 4: Установка точек прерывания и изменение содержимого поля 1. Перезапустите программу в режиме отладки. Установите точку прерывания для всех операторов WRITE. Также установите точку наблюдения для структуры WA_SCARR. Продолжите выполнение программы путем выбора Дальше и проверьте причины остановки программы в каждом конкретном случае. a) Для установки точки прерывания, относящейся к определенному оператору, выберите Точки прерывания → Точка прерывания для → Оператор .... В диалоговом окне введите WRITE. b) В диалоговом окне введите имя структуры WA_SCARR для создания точки наблюдения. c) Программа останавливается в каждой точке прерывания и при каждом вызове точки наблюдения. 2. Перезапустите программу в режиме отладки. Установите точку прерывания для оператора CALL SCREEN и выполняйте программу до тех пор, пока не будет достигнут этот оператор. Перед обработкой экрана присвойте произвольное имя внутреннему программному полю UNAME структуры SBC400_CARRIER. Рекомендация: Для изменения значения поля в отладчике выберите Изменение содержимого поля в области Имена полей. Теперь выполните оператор CALL SCREEN. Что отображается на экране? a) Этот шаг выполняется в соответствии с описанием. b) На экране в поле Пользователь отображается имя, ранее указанное в отладчике. Для получения дополнительной информации о переносе полей между экраном и программой см. соответствующий раздел. 118 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа со структурами Резюме по уроку Теперь вы сможете: • определять структурированные объекты данных (переменные структуры) • использовать базовые ABAP-операторы для структурированных объектов данных • анализировать структурированные объекты данных в режиме отладки 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 119 Глава 4: Основные языковые элементы ABAP BC400 Урок: Работа с внутренними таблицами Обзор урока На этом уроке рассматриваются способы определения внутренних таблиц и их использования в ABAP-программах. После этого выполняется анализ внутренних таблиц в ABAP-отладчике во время выполнения. Цели урока Прослушав этот урок, вы сможете • определять внутренние таблицы • использовать базисные ABAP-операторы с внутренними таблицами • анализировать внутренние таблицы в режиме отладки Практический пример Предполагается использовать табличные переменные в качестве хранилищ данных для программ с последующим поиском семантических ошибок в этих программах посредством ABAP-отладчика. Работа с внутренними таблицами Рисунок 69: Внутренние таблицы: варианты использования 120 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа с внутренними таблицами Внутренняя таблица – это объект данных, в котором во время выполнения могут сохраняться несколько одинаково структурированных записей данных (табличных переменных). Количество записей данных ограничено только масштабом конкретных внедренных систем. Исполняющая система ABAP осуществляет динамическое управление размером внутренней таблицы. Это означает, что разработчик не должен выполнять какие-либо действия по управлению памятью. Отдельные наборы данных во внутренней таблице называются строками таблицы или записями таблицы. Поэтому отдельные компоненты в строке носят название полей или столбцов внутренней таблицы. Тип строки внутренней таблицы, определяемый с помощью любого типа данных, описывает структуру строк записей таблицы. Таким образом, внутренние таблицы предоставляют простой способ обработки больших наборов данных в структурированном виде. Типичные способы использования внутренних таблиц: • сохранение данных из таблиц базы данных или последовательных файлов для последующей обработки; • форматирование данных для вывода на экран или для печати (например, сортировка); • форматирование данных для использования другими сервисами (например, для подпрограмм, функциональных модулей или при вызове метода). Рисунок 70: Атрибуты внутренних таблиц Следующие свойства полностью определяют внутреннюю таблицу: 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 121 Глава 4: Основные языковые элементы ABAP BC400 Тип строки Тип строки описывает структуру записей таблицы. Для этого, как правило, необходимо указать тип структуры. Однако могут использоваться любые типы данных. Ключ Ключ внутренней таблицы состоит из ключевых полей с учетом порядка их расположения. Порядок ключевых полей используется, помимо прочего, для сортировки в соответствии с ключами. В зависимости от вида доступа, ключ может быть определен как уникальный или групповой. Уникальный ключ означает, что строка с определенными ключевыми значениями, возможно, является уникальной в пределах таблицы. Тип таблицы Существует три различных типа таблиц: стандартные , отсортированные и хеш-таблицы . Из соображений производительности, следует выбирать соответствующий тип таблицы в зависимости от используемого вида доступа. На следующем рисунке показан выбор соответствующего типа таблицы. Рисунок 71: Атрибуты и использование типов таблицы Если доступ к записи таблицы осуществляется путем указания соответствующего номера строки, такой способ называется доступом по индексу. Напротив, доступ к записи путем ввода ключевого значения называется доступом по ключу. 122 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа с внутренними таблицами Из соображений производительности, следует выбрать наиболее подходящий из следующих трех типов таблиц в зависимости от вида доступа: • В стандартных таблицах нумерация строк (индекс) является внутренней. Существует возможность доступа как по индексу, так и по ключу. Этот тип таблицы следует выбирать в том случае, когда для доступа к внутренней таблице, главным образом, используется индекс. • В отсортированных таблицах записи данных автоматически сортируются по восходящей по ключевым полям. В этом случае индекс также является внутренним. Существует возможность доступа как по индексу, так и по ключу. Этот тип таблицы следует выбирать в том случае, когда для доступа к внутренней таблице, главным образом, используется ключ, или если требуется автоматическая сортировка таблицы по ключу. • В хеш-таблицах для быстрого доступа по ключу используется управление записями данных посредством процедуры хеширования. Ключ должен быть уникальным. В случае хеш-таблиц возможен доступ только по ключу. Этот тип таблицы следует выбирать в том случае, когда внутренняя таблица является чрезвычайно объемной, и используется только доступ по ключу. В этом курсе рассматриваются только стандартные таблицы, однако (за исключением нескольких особых случаев) синтаксис для всех трех типов таблиц является идентичным. 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 123 Глава 4: Основные языковые элементы ABAP BC400 Рисунок 72: Определение внутренних таблиц с глобальными типами Тип внутренней таблицы называется типом таблицы. Типы таблицы могут определяться глобально в ABAP-словаре или локально в программе. На приведенном выше рисунке показан тип таблицы, описанный в ABAP-словаре, а также определение в рамках программы табличной переменной со ссылкой на тип таблицы. Для получения подробной информации относительно описания глобальных типов таблицы в ABAP-словаре см. онлайн-документацию, доступ к которой можно получить с помощью кнопки "i" при просмотре или ведении типа таблицы. 124 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа с внутренними таблицами Рисунок 73: Определение внутренних таблиц с локальными типами На вышеприведенном рисунке показана таблица, описанная локально в программе, а также определение табличной переменной в рамках программы со ссылкой на описанный тип таблицы. Обратите внимание на то, что при перечислении ключевых полей в типе таблицы для некоторых видов обработки, например, “сортировки по ключу”, порядок следования полей имеет существенное значение. Для получения подробной информации относительно определения локальных типов таблиц см. документацию по ключевым словам для оператора TYPES. Кроме того, можно непосредственно определить внутреннюю таблицу. Для этого следует просто использовать оператор DATA вместо оператора TYPES. В предыдущих определениях внутренних таблиц всегда использовались объекты словаря – либо тип таблицы (SBC400_T_SBC400FOCC), либо, по крайней мере, тип структуры (SBC400FOCC). На следующем рисунке показано “независимое” определение таблицы. 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 125 |