Руководство для участников курса Версия курса 2й квартал 2005 г. Продолжительность курса 5 Дн. Номер материала 50072594
Скачать 38.91 Mb.
|
Глава 4: Основные языковые элементы ABAP BC400 Оператор CLEAR используется для перезаписи содержимого объекта данных специфичным для типа начальным значением. Для получения подробной информации о начальных значениях для определенного типа данных см. документацию по ключевым словам оператора CLEAR. Рисунок 55: Вычисления В ABAP можно программировать арифметические выражения на любом уровне вложения. Можно выполнять следующие операции: • + Сложение • - Вычитание • * Умножение • / Деление • ** Возведение в степень • DIV Деление на целое число без остатка • MOD Деление на целое число с остатком Внимание: Скобки и арифметические операции являются ключевыми словами ABAP и поэтому должны быть отделены от других слов по крайней мере одним пробелом. Некоторые функции для различных типов данных предварительно определяются в среде выполнения ABAP. Например, следующий оператор определяет текущую длину содержимого символьной переменной. length = STRLEN( cityfrom ) 90 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа с элементарными объектами данных В случае функций открывающая скобка является частью имени функции. Остальные символы также должны быть отделены по крайней мере одним пробелом. В целом, в отношении последовательности обработки применяются стандартные алгебраические правила: сначала обрабатываются выражения в скобках, затем степени, умножение/деление и, наконец, сложение/вычитание. Для получения подробной информации о доступных операциях и функциях см. документацию по ключевым словам оператора COMPUTE. Рисунок 56: Условные ветви 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 91 Глава 4: Основные языковые элементы ABAP BC400 В ABAP существуют два способа выполнения различных последовательностей операторов, в зависимости от определенных условий: • В конструкте IF можно определить в качестве условий проверки любые логические выражения. Если условие удовлетворяется, в системе выполняется соответствующий блок операторов. В противном случае проверяется условие, указанное в ветви ELSEIF (возможен ввод нескольких условий), и т.д. Если ни одно из указанных условий не выполнено, то выполняется ветвь ELSE, если она доступна. Ветви ELSEIF и ELSE являются необязательными. Для получения подробной информации о составлении логического выражения см. документацию по ключевым словам для оператора IF. • Конструкт CASE можно использовать для четкого разграничения блоков. Содержимое поля, указанное в компоненте CASE, проверяется по объектам данных, перечисленным в ветвях WHEN, для определения соответствия. Если содержимое поля совпадает, то обрабатывается соответствующий блок операторов. Если соответствие отсутствует, в системе выполняется ветвь OTHERS, если таковая доступна. Все дальнейшие дополнения необязательны, за исключением первой ветви WHEN. В обоих конструктах проверка условия или соответствия выполняется последовательно сверху вниз. После выполнения блока операторов ветви осуществляется немедленный переход к ENDIF или ENDCASE. Рекомендация: При необходимости выполнения проверок соответствия значения поля другим значениям следует выбрать конструкт CASE, а не оператор IF, поскольку он обеспечивает большую четкость и более верный результат. 92 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа с элементарными объектами данных Рисунок 57: Циклы В ABAP существуют четыре конструкта циклов. В циклах DO и WHILE системное поле SY-INDEX содержит номер текущего прогона цикла. Следовательно, запрос этого системного поля целесообразен только в рамках цикла. Во вложенных циклах поле SY-INDEX всегда содержит номер прогона цикла, к которому оно относится. Безусловные/управляемые индексом циклы Блок операторов между DO и ENDDO непрерывно выполняется до выхода из цикла с помощью команд прерывания, таких как EXIT. Также имеется возможность определения максимального количества прогонов цикла; в противном случае возможно образование бесконечного цикла. Управляемые заголовком циклы Блок операторов между WHILE и ENDWHILE непрерывно выполняется до тех пор, пока не перестанет удовлетворяться указанное условие. Перед очередным выполнением блока операторов всегда осуществляется проверка условия. Циклы считывания Цикл SELECT можно использовать для последовательного считывания нескольких записей из таблицы базы данных. Во внутренней таблице (табличной переменной в программе) та же функция считывания реализуется в цикле LOOP. 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 93 Глава 4: Основные языковые элементы ABAP BC400 Рисунок 58: Диалоговые сообщения Оператор MESSAGE используется для отправки диалоговых сообщений пользователям программы. При этом необходимо указать трехзначный номер сообщения и класс сообщения. Номера и классы сообщений однозначно определяют выводимое на экран сообщение. Тип сообщения используется для указания способа вывода сообщения. Способ отображения различных типов сообщений можно проверить при помощи демонстрационной программы DEMO_MESSAGES, поставляемой со стандартной системой SAP. Если указанное сообщение содержит метки-заполнители, им можно присвоить значения путем добавления WITH. В тексте выводимого сообщения вместо меток-заполнителей будут отображаться перенесенные значения. Для получения дополнительной информации о синтаксических альтернативах оператору MESSAGE см. документацию по ключевым словам. 94 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа с элементарными объектами данных Использование ABAP-отладчика Рисунок 59: Выполнение программы в режиме отладки Существует несколько способов запуска программы в режиме отладки из навигатора по объектам: a) В области навигации для выбранной программы в контекстном меню выберите Выполнить → Отладка. b) В области редактора выберите требуемую строку программы, начиная с которой должна производиться отладка. Нажмите кнопку Создать/Удалить точку прерывания. Затем запустите программу путем нажатия F8 или путем выбора в контекстном меню области навигации посредством Выполнить → Напрямую. (Описанная выше установка точки прерывания в редакторе возможна только для активных исходных текстов.) 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 95 Глава 4: Основные языковые элементы ABAP BC400 Рисунок 60: Переход к режиму отладки во время выполнения При необходимости “отладки” определенной функции программы сначала запустите программу без отладчика, а затем немедленно перейдите к режиму отладки до выполнения функции (например, с помощью экранной кнопки). Существуют две возможности перехода: a) Выберите Система → Утилиты → Отладка ABAP (или экран). b) Введите /h в поле команды в стандартной строке инструментов и нажмите Enter 96 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа с элементарными объектами данных Рисунок 61: Режим отладки: отдельный шаг и содержимое поля В режиме отладки можно выбрать Отдельный шаг для выполнения программы последовательно по отдельному оператору. Можно просмотреть содержимое объемом до восьми объектов данных. Для этого введите имена объектов в области Имя поля или скопируйте их путем “двойного щелчка” по соответствующим объектам данных исходного текста. 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 97 Глава 4: Основные языковые элементы ABAP BC400 Рисунок 62: Режим отладки: точки прерывания Точку прерывания можно выбрать с помощью двойного щелчка по строке исходного текста. Также можно установить точку прерывания для определенных ABAP-операторов: Точки прерывания → ТочкаПрерыв при → Оператор. При выборе Дальше программа выполняется до следующей точки прерывания. Установленные точки прерывания действительны только для текущего сеанса отладчика. Однако при выборе Сохранить точки прерывания сохраняются на всем протяжении SAP-режима. 98 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа с элементарными объектами данных Рисунок 63: Режим отладки: отслеживание изменений данных Точки наблюдения представляют собой точки прерывания, зависящие от содержимого поля. При выборе в поле точки наблюдения без оператора/значения для сравнения и выборе пункта меню Дальше программа выполняется до изменения содержимого поля. Однако в случае определения оператора сравнения и значения для сравнения после выбора пункта меню Дальшепрограмма выполняется до удовлетворения указанного условия. Можно создать до 10 точек наблюдения и связать их с помощью логического оператора (И или ИЛИ). 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 99 Глава 4: Основные языковые элементы ABAP BC400 100 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа с элементарными объектами данных Упражнение 5: Базовые ABAP- операторы Цели упражнения Выполнив это упражнение, вы сможете • определять элементарные объекты данных • присваивать значения • внедрять ветви условий • выполнять вычисления Практический пример Требуется создать простую ABAP-программу для четырех базовых правил расчета. На экране выбора необходимо ввести значения и арифметическую операцию. Результат должен выводиться в виде списка. Задание 1: Создание программы 1. Создайте исполняемую программу ZBC400_##_COMPUTE без “TOP-INCLUDE”. Задание 2: Определите входные параметры (неявное определение экрана выбора). 1. Определите входные параметры двух целых значений (рекомендуемое имя: pa_int1, pa_int2) и арифметическую операцию (рекомендуемое имя: pa_op). Задание 3: Выполните вычисления и создайте список вывода. 1. Кроме того, определите элементарный объект данных для результата; тип: упакованное число с двумя десятичными разрядами (рекомендуемое имя: result). 2. Выполните вычисление в зависимости от указанной арифметической операции. Для ветви используйте оператор CASE. 3. Результат должен выводиться в виде списка. Продолжение на следующей странице 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 101 Глава 4: Основные языковые элементы ABAP BC400 Задание 4: Выполните поиск ошибок. 1. Если пользователь указал недействительную арифметическую операцию, в списке должно выводиться сообщение об ошибке. Для проверки используйте оператор IF. 2. При попытке деления на нуль в списке должно выводиться сообщение об ошибке. Рекомендация: Выполнение поиска ошибок с использованием более “удобного” диалога пользователя описывается в одном из следующих уроков. 102 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа с элементарными объектами данных Решение 5: Базовые ABAP-операторы Задание 1: Создание программы 1. Создайте исполняемую программу ZBC400_##_COMPUTE без “TOP-INCLUDE”. a) Этот шаг выполняется в соответствии с обычной процедурой. Задание 2: Определите входные параметры (неявное определение экрана выбора). 1. Определите входные параметры двух целых значений (рекомендуемое имя: pa_int1, pa_int2) и арифметическую операцию (рекомендуемое имя: pa_op). a) См. выдержку из исходного текста в примере решения. Задание 3: Выполните вычисления и создайте список вывода. 1. Кроме того, определите элементарный объект данных для результата; тип: упакованное число с двумя десятичными разрядами (рекомендуемое имя: result). a) См. выдержку из исходного текста в примере решения. 2. Выполните вычисление в зависимости от указанной арифметической операции. Для ветви используйте оператор CASE. a) См. выдержку из исходного текста в примере решения. 3. Результат должен выводиться в виде списка. a) См. выдержку из исходного текста в примере решения. Задание 4: Выполните поиск ошибок. 1. Если пользователь указал недействительную арифметическую операцию, в списке должно выводиться сообщение об ошибке. Для проверки используйте оператор IF. a) См. выдержку из исходного текста в примере решения. Продолжение на следующей странице 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 103 Глава 4: Основные языковые элементы ABAP BC400 2. При попытке деления на нуль в списке должно выводиться сообщение об ошибке. Рекомендация: Выполнение поиска ошибок с использованием более “удобного” диалога пользователя описывается в одном из следующих уроков. a) См. выдержку из исходного текста в примере решения. Результат Фрагмент исходного текста: SAPBC400TSS_COMPUTE REPORT sapbc400tss_compute. PARAMETERS: pa_int1 TYPE i, pa_op(1) TYPE c, pa_int2 TYPE i. DATA result TYPE p DECIMALS 2. IF NOT ( pa_op = ’+’ OR pa_op = ’-’ OR pa_op = ’*’ OR pa_op = ’/’ ). WRITE: ’Invalid operator!’ (iop). ELSEIF pa_op = ’/’ AND pa_int2 = 0. WRITE: ’No division by zero!’ (dbz). ELSE. CASE pa_op. WHEN ’+’. result = pa_int1 + pa_int2. WHEN ’-’. result = pa_int1 - pa_int2. WHEN ’*’. result = pa_int1 * pa_int2. Продолжение на следующей странице 104 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа с элементарными объектами данных WHEN ’/’. result = pa_int1 / pa_int2. ENDCASE. WRITE: ’Result:’ (res), result. ENDIF. Примечание: Дополнения для оператора WRITE, указанные в скобках, описываются в одном из следующих уроков. На данном этапе эти дополнения можно опустить. 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 105 Глава 4: Основные языковые элементы ABAP BC400 Резюме по уроку Теперь вы сможете: • определять элементарные объекты данных (простые переменные) • использовать базовые ABAP-операторы с элементарными объектами данных • выполнять и анализировать программы в режиме отладки 106 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа со структурами Урок: Работа со структурами Обзор урока На этом уроке продолжается описание структурированных объектов данных (структурных переменных) и их анализ с использованием ABAP-отладчика. Кроме того, рассматриваются возможности использования базовых ABAP-операторов для структурированных объектов данных. Цели урока Прослушав этот урок, вы сможете • определять структурированные объекты данных (переменные структуры) • использовать базовые ABAP-операторы для структурированных объектов данных • анализировать структурированные объекты данных в режиме отладки Практический пример Необходимо обработать первые собственные структуры данных и выполнить поиск семантических ошибок в программах с помощью ABAP-отладчика. 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 107 Глава 4: Основные языковые элементы ABAP BC400 Работа со структурами Рисунок 64: Определение структур с глобальными типами данных В ABAP можно определять структурированные объекты данных (называемые структурными переменными или просто структурами). Это позволяет комбинировать значения, логически составляющие один объект данных. Структуры могут быть вложенными. Это означает, что компоненты могут состоять из нескольких структур или даже внутренних таблиц. В программе структурные переменные определяются с помощью оператора DATA аналогично элементарным объектам данных. При выборе типов можно использовать следующие источники: • структуру словаря; • прозрачную таблицу (которая в этом случае используется в качестве типа структуры); • тип структуры, локально описанный в программе. На следующем рисунке представлено определение структурной переменной с помощью локально описанного типа структуры. 108 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа со структурами Рисунок 65: Определение структур с локальными типами данных Для определения локальных типов структур может использоваться оператор TYPES. Здесь компоненты находятся внутри следующих операторов: BEGIN OF structure_type_name, ... , END OF structure_type_name. . Каждому компоненту можно присвоить любой тип посредством добавления TYPE. Для получения дополнительной информации см. документацию по ключевым словам оператора TYPES. Объект данных определяется непосредственно обычным способом. При необходимости можно также непосредственно определить структурированный объект данных. Для этого необходимо заменить ведущее ключевое слово TYPES словом DATA. DATA: BEGIN OF structure_name, ... , END OF structure_name. 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 109 |