Вы находитесь на странице: 1из 26

Тестирование и отладка

программ в среде Eclipse для


ABAP*
Через всю книгу красной нитью проходит одна мысль: с новыми
инструментами ABAP-программирования легче тестировать программу,
отлаживать ее и анализировать причины ошибок. В следующем разделе
мы по порядку рассмотрим каждое из этих действий и обсудим, как они
выполняются в ABAP in Eclipse.

kfwjefoijwepofijwpioefjwoiefjwoeijf

табл 5

рке кер ркер ркер

ркер кер кер керкер

кер оено о ено

1.1.1 Функциональное тестирование и


покрытие кода1

1
В Главе 3 я подробнее расскажу о функциональном тестировании в ABAP
и философии разработки через тестирование. Не буду забегать вперед и
приводить доводы, почему функциональное тестирование — это хорошо
(действительно, лучше ничего и быть не может). Вместо этого поговорим
о том, как ABAP in Eclipse справляется с двумя основными проблемами
при написании функциональных тестов.

Проблема 1. Трудоемкое создание


методов тестирования

В SE80 предусмотрен мастер создания методов тестирования на основе


существующих методов. Это подход от противного, а мы хотим создать в
первую очередь методы тестирования.

В Eclipse для этого нужно создать новый глобальный класс. В нижней


части экрана находится ряд вкладок, одна из которых называется Test
Class (Класс теста). Обратите внимание: в реальном классе еще ничего
не создано. Перейдите на вкладку Test Class (Класс теста), введите слово
«test» и нажмите комбинацию клавиш (CTRL) + (SPACE).
Откроется диалоговое окно с вопросом, что вы хотите создать: запрос на
перенос или класс теста. Верный ответ — класс теста. Если вы выбрали
его, то увидите содержимое Листинг 1.13.
*"* использовать этот исходный файл для создания классов
функциональных тестов ABAP
CLASS ltcl_definition FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.

PRIVATE SECTION.

2
METHODS:
first_test FOR TESTING RAISING cx_static_check.
ENDCLASS.

CLASS ltcl_ IMPLEMENTATION.


METHOD first_test.
cl_abap_unit_assert=>fail( 'Реализуйте свой первый тест здесь' ).
ENDMETHOD.
ENDCLASS.
Листинг 1.13 Исходный файл для класса функционального теста ABAP

Создание схематичного класса теста не высший пилотаж


функционального тестирования, но он подходит для разработки через
тестирование намного лучше, чем стандартные процессы SE80.
Разумеется, нужно изменить сгенерированный код и указать имя класса
теста и метод тестирования и при необходимости добавить другие методы
тестирования. Суть в том, что вы сначала создаете методы тестирования,
а затем копируете определение в реальный класс.

Из Раздела 1.2.3 мы помним, что, имея определение, можно создать


схему реализации, используя сочетание клавиш (CTRL) + (1). При
автоматической генерации определение должно добавляться
автоматически, например, DATA: mo_cut TYPE REF TO
ycl_monster_unit_tests. (У меня ничего не вышло, как я ни старался,
поэтому добавил определение вручную. В документации говорится о том,
что добавление происходит автоматически. Возможно, в новых версиях
этот недостаток исправят).
В переименованном функциональном тесте first monster сначала
определите результат теста, а затем добавьте строку mo_cut-
>first_monster( )., которая будет методом в еще не существующем главном
классе. Если нажать клавиши (CTRL) + (1), появится запрос на создание
метода в реальном классе, который нужно подтвердить. Помните, что тест

3
был создан раньше реального метода — в этом и заключается суть
разработки через тестирование.

В целом разработка через тестирование происходит быстрее и проще (и


в правильном порядке) с помощью ABAP in Eclipse, чем с помощью
аналогичных процедур в стандартной среде ABAP Workbench.

Проблема 2. Нельзя определить охват


программы тестированием

Функциональное тестирование направлено на максимальную (в пределах


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

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


регрессивное тестирование, и можно быть уверенным, что изменение
даже одной строки кода не повлечет за собой губительных последствий
для какой-либо другой части программы. Разумеется, для полного
спокойствия нужно, чтобы каждая строка кода в каждой подпрограмме и
каждом методе проходила такое регрессивное тестирование. Создание
таких тестов — нелегкая работа, к которой готовы лишь немногие.
Подробнее этот вопрос мы обсудим в Главе 3. Тем не менее, если вы
уверовали и готовы к созданию таких тестов, следующий шаг — понять,
какая часть кода будет действительно протестирована. Если прогноз
составляет менее 100 %, нужно найти решение.
4
В Java есть инструмент под названием Clover, который измеряет процент
кода, покрытый функциональным тестированием. Когда я узнал о нем, то
подумал, что здорово было бы использовать его в ABAP, и что, возможно,
я должен внести свою лепту в разработку такого инструмента.
Оказывается, в ABAP in Eclipse подобная функция уже существует (и, по
правде сказать, в SE80 тоже, в последних версиях SAP NetWeaver).

В последнем разделе мы создали один метод тестирования. Теперь вы


создадите реальный метод, к которому будет применен тест. А потом еще
один реальный метод, для которого теста еще не существует, — в том
случае если вы упретесь и решите доказать себе, что создание методов
без тестирования экономит время. (Это! Не! Так!)

Говорят, что малым довольствуются лишь глупцы, но лично мне


доставляет огромное удовольствие возможность написать определение
метода без тестирования, приложив минимум усилий: нажать сочетание
клавиш (CTRL) + (1) и увидеть, как генерируется реализация и как курсор
перепрыгивает в реализацию. Еще говорят, что каждая секунда должна
быть на счету, и так как эти инструменты помогают сэкономить несколько
секунд то там, то тут в течение рабочего дня, то в итоге вы выигрываете
во времени.
CLASS ycl_monster_unit_tests IMPLEMENTATION.

METHOD first_monster.
WRITE:/ 'I am the First Monster'.
ENDMETHOD.

METHOD second_monster.
WRITE:/ 'I am the Second Monster'.
ENDMETHOD.

ENDCLASS. "Реализация функционального тестирования монстра

5
Листинг 1.14 Метод без тестирования
В SE80 вам нужно было бы выбрать путь меню Program • Test • Unit Test
(Программа •Тестирование • Функциональное тестирование). В ABAP in
Eclipse нужно лишь нажать сочетание клавиш (CTRL) + (SHIFT) +
(F10). Произойдет чудо: вы увидите все ошибки, которые могли возникнуть
в результате изменений кода. Нажав сочетание клавиш (CTRL) + (SHIFT)
+ (F11), вы перейдете на следующий уровень. (F11 лучше F10 по той же
причине, по которой шестизвездочный отель лучше пятизвездочного —
больше преимуществ.)
Вы видите два результата (Рис. 1.20). Во-первых, весь протестированный
код будет выделен. Еще важнее то, что откроется обзорный ракурс, в
котором отобразится процент охвата каждого метода автоматическими
функциональными тестами.

Рис. 1.20 Покрытие кода функциональным тестированием

Эта информация — лакомый кусочек. Во-первых, вам нужно убедиться,


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

1.1.2 Отладка

6
Отладчик — один из лучших инструментов ABAP Workbench. В Главе 5 я
кратко расскажу о новых функциях отладчика, о которых вы можете еще
не знать. Напомню, что говорим мы об ABAP in Eclipse, и вы можете
задаться вопросом: зачем говорить об отладке в среде, которая
предназначена исключительно для разработки? Вернемся к
функциональному тестированию: при наличии ошибки нужно отладить
программу и найти причину.

У меня для вас есть плохая и хорошая (и на первый взгляд


неправдоподобная) новость. Плохая новость: на момент работы над
книгой отладчик в ABAP in Eclipse уступает в функциональности отладчику
в системах SAP, хотя с течением времени этот недостаток, конечно, будет
исправлен. А теперь, внимание, хорошая новость! Узнав ее, впрочем, вы
можете подумать: «Он бредит или под наркотиками». Хорошая новость:
исходный код можно изменять в процессе отладки.

В следующем примере мы добавим в код явную ошибку, а затем отладим


код и посмотрим, что пошло не так. В Англии о людях, которые хорошо в
чем-то разбираются, говорят: «Он знает, сколько штук в пяти бобах». Мы
тоже знаем — их пять. Допустим, вы хотели добавлять новых монстров,
пока их не станет пять, но пропустили одного и в итоге получили только
четырех — очевидная ошибка (Листинг 1.15).
CLASS lcl_how_many_monsters DEFINITION.
PUBLIC SECTION.
METHODS how_many_make_five RETURNING VALUE(rd_how_many) TY
PE i.
ENDCLASS. "Определение количества монстров

CLASS lcl_how_many_monsters IMPLEMENTATION.


METHOD how_many_make_five.
DO 100 TIMES.
ADD 1 TO rd_how_many.

7
IF rd_how_many = 4.
RETURN.
ENDIF.
ENDDO.
ENDMETHOD.
ENDCLASS. "Реализация количества монстров

DATA: ld_how_many TYPE i,


lo_counter TYPE REF TO lcl_how_many_monsters.

START-OF-SELECTION.
CREATE OBJECT lo_counter.
ld_how_many = lo_counter->how_many_make_five( ).
WRITE:/ ld_how_many.
Листинг 1.15 Только четыре монстра

Это приведет к сбою функционального тестирования, поэтому ошибку


надо отладить. В режиме отладки становится видно, что пошло не так: вы
пропустили одну строку кода. Теперь нужно ее добавить. В этот момент,
как правило, вы закрываете отладчик, исправляете код и тестируете или
отлаживаете его снова.

Между тем, в ABAP in Eclipse можно изменить исходный код в процессе


отладки. То есть, можно добавить недостающую строку для создания
последнего монстра прямо в отладчике и затем перейти на новую строку
и посмотреть, все ли работает правильно. Это просто революция в мире
отладки. Увидев такое впервые, вы можете подумать, что кто-то подсыпал
вам в чай ЛСД. Невероятно, но факт. Когда SAP подтянет остальные
функции отладчика в ABAPin Eclipse до уровня стандартного отладчика,
мы все только выиграем.

Как и в стандартном редакторе кода ABAP, можно определять, в какой


момент программа перейдет в режим отладки во время выполнения.
8
Можно добавить программные точки останова с помощью меню или
сочетания клавиш (CTRL) + (SHIFT) + (B). Можно добавить аппаратные
точки останова, например BREAK BLOGGSJ. Во время прогона
программы (меню Run • Run as ABAP Application[Прогон • Прогнать как
приложение ABAP]) или функционального тестирования, как только будет
достигнута точка останова, появится окно с вопросом: хотите ли вы
перейти в режим отладки? Ответ на этот глупейший из всех глупых
вопросов очевиден: вы хотите. Поэтому нужно выбрать ответ «Да» и
поставить галочку, что его нужно запомнить и больше не отвлекать вас по
пустякам.
Откроется окно отладчика. Оно выглядит несколько непривычно (Рис.
1.21). Изменять значения переменных во время выполнения совсем
просто. Для этого нужно дважды щелкнуть в поле с текущим значением.
Внимание. Хьюстон, у нас проблема
Если вы используете недостаточно новую версию бэкэнд-системы
SAP, то есть, с версией ядра ниже 721, отобразится сообщение об
ошибке вида: «Отладка в ABAP in Eclipse не поддерживается в системе
XYZ. Выполните отладку в SAP GUI».

9
Рис. 1.21 Отладка в Eclipse
Вы видите ошибку: в коде указано значение 4, а не 5. Измените оператор
на IF RD_HOW_MANY = 5. На текущее выполнение это никак не повлияет
(а то можно было бы заподозрить черную магию), но после окончания
отладки и повторного прогона программы все встанет на свои места.
Результаты отображаются в так называемом «встроенном SAP GUI»,
стандартном экране SAP, открывающемся в окне Eclipse (Рис. 1.22). Во
время работы в Eclipse, если не получается отобразить что-то (например,
результаты оператора WRITE), задача переносится в SAP GUI.

10
Рис. 1.22 Встроенный SAP GUI

1.1.3 Динамический анализ

Среди замечательных инструментов ABAP in Eclipse, которые мы уже


рассмотрели, особняком стоит графический ракурс для динамического
анализа ABAP-программы. Как гласит знаменитая пословица, лучше один
раз увидеть, чем сто раз услышать. Однако системы SAP никогда не
отличались высоким качеством отображения в SAP GUI. Возможно, вы
привыкли выполнять динамический анализ в транзакции SE30 ABAP
Workbench или более новой транзакции SAT, которая предоставляет
подробные сведения о скорости работы приложения. Беда в том, что
информации так много, что в ней можно потеряться. Вы увидите
диаграмму из трех столбцов, в которых указано время, затрачиваемое на
обработку программы в базе данных и на сервере приложений. И если на
сервере времени тратится больше, то нужно попробовать разобраться в
большом дереве, в котором указано, сколько времени тратится на
выполнение каждой подпрограммы.

Ничего страшного, но нужно привыкнуть. Аналогичная функция в ABAP in


Eclipse намного нагляднее. Я приведу глупый пример, в котором
небольшой фрагмент программы выполняет математические расчеты, а
11
основную часть кода циклично выполняет оператор SELECT. (На самом
деле пример не так-то глуп, в реальных программах такая ситуация часто
встречается.)
Допустим, каждый раз, когда монстр узнает о существовании American
Airlines, он сразу же хочет лететь самолетом этой компании. Таким
образом, в Листинге 1.16 пример популярных авиалиний SFLIGHT
объединяется с примером монстра.
DO 100 TIMES.

SELECT COUNT( * )
FROM sflight
WHERE carrid = 'AA'.

CHECK sy-subrc = 0.

ADD 1 TO gd_flying_monsters.

ENDDO.
Листинг 1.16 Гибрид SFLIGHT и монстра

Этот пример показывает, как делать не нужно. Очевидно, что считывать


базу данных нужно только один раз. Чтобы запустить динамический
анализ, откройте программу для работы с ABAP, выберите Profile as •
ABAP Application, (Классифицировать как • Приложение ABAP) и введите
«trace» в поле Quick Access (Быстрый доступ) в правом верхнем углу
экрана.

Как обычно, откроется файл трассировки. В этом файле вы увидите не


столбчатую, а круговую диаграмму, показывающую время на обработку в
базе данных и на сервере. Выглядит пока не слишком впечатляюще.
Теперь выберите вкладку Call Timeline (График времени). Откроется
экран. В верхней части отображается временная шкала, вдоль которой

12
выстроен график времени, затрачиваемого на выполнение программы.
Согласитесь, такое представление намного понятнее.

Измените код таким образом, чтобы обращение к базе данных


происходило только один раз, и повторите упражнение. На этот раз
диаграмма покажет, что львиную долю времени вы проводите в среде
разработки ABAP — там, где и нужно.

Настройка Eclipse для ABAP с помощью


пользовательских плагинов**

**Оригинал (англ.): ABAP to the Future. Пол Харди. Издательство SAP


PRESS. Раздел 1.4. 2019, с. 71–80.

Из этого раздела вы узнаете об общей концепции усовершенствования в


Eclipse, а затем увидите некоторые конкретные примеры, связанные с
объектно-ориентированным программированием. (Я большой поклонник
объектно-ориентированного программирования там, где это уместно.
Думаю, вы это уже поняли.)

В Eclipse входит комплект разработки программного обеспечения (SDK),


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

13
Eclipse — проект с открытым исходным кодом. Это значит, что если вам
чего-то в ней не хватает, то не нужно сидеть и вздыхать, нужно создать
недостающий инструмент самостоятельно, а затем опубликовать его как
плагин. Такой альтруизм приводит в недоумение кучу людей (ты отдаешь
плоды своего труда за просто так?). На практике, однако, этот подход
отлично работает, и благодаря ему программы обновляются со скоростью
света.

Создание собственного плагина


Пользовательские плагины особенно полезны тем, что в системе SAP
программные средства, написанные на ABAP, могут отображаться в
виде ссылки. Платформа Eclipse может отправить запрос в систему
SAP, используя эту ссылку, которая затем обрабатывается в классе
обработки ABAP, назначенном в транзакции SICF. (Из Главы 13 вы
узнаете, что именно так и работают приложения SAPUI5.) Создание
собственного плагина — непростая задача, и в этой книге я не могу
рассказать о нем подробно. Просто знайте, что это возможно. (Если
эта тема вас заинтересовала, ознакомьтесь со списком
рекомендуемой литературы в конце главы — в нем указано
практическое руководство, изданное SAP.) В этом разделе я не буду
рассказывать о том, как создавать пользовательские плагины, но
покажу, чего можно достигнуть с их помощью.
Примером, подтверждающим пользу открытого исходного кода, служит
общедоступный плагин SAPlink, разработанный группой преподавателей
SAP и предназначенный для переноса объектов разработки между
системами SAP с помощью операций загрузки и выгрузки. Этот плагин
понадобится для работы с примерами в данном разделе. Чтобы
подключить его, выберите пункт меню Help • Install New Software (Справка
• Установка нового ПО), введите ссылку и загрузите перечисленные
компоненты. Результат показан на Рис. 1.23. В стандартном меню
появляется дополнительный пункт. Как правило, плагин SAPlink

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

Рис. 1.23 Дополнительный пункт меню для плагина SAPlink

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


выполняемых действий. Если открыта программа или другой объект, то

15
появляется возможность экспортировать объект на жесткий диск в виде
сжатого файла с ценной информацией.

Объектно-ориентированные программисты часто говорят, что для


создания программы сначала нужно создать схему UML (Universal
Modeling Language; универсальный язык моделирования), описывающую
взаимодействие классов. Что-то напоминает? Если да, то вы, должно
быть, знакомы с функцией SE80, с помощью которой можно взять
существующую ABAP-программу и создать из нее чудовищную схему —
предположительную UML-модель вашего приложения. Но лучше так не
делать. Нужно проделать все в обратном порядке: взять схему UML и
использовать ее для создания классов, атрибутов, методов и так далее в
системе SAP (естественно, создание кода в методах — ваша задача).

Оказывается, есть два плагина — UMAP и Obeo — для создания


конструкций ABAP на основе схемы UML. UMAP разработал некий Матиас
Меркер, и загрузить его можно абсолютно бесплатно. Obeo — продукт
французской компании Obeo, и его нужно покупать. Ничто так не
поддерживает тонус в мире информационных технологий, как здоровая
конкуренция. Поэтому вкратце рассмотрим оба продукта.

1.1.1 UMAP

UMAP был разработан как проект с открытым исходным кодом в надежде


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

16
Чтобы изучить возможности UMAP, нужно зайти на сайт www.uml2abap.org
и загрузить генератор кода UMAP, файл SAPlink для создания некоторых
классов, а затем установить программу в системе ABAP. В нашем случае
нужно загрузить файл из Eclipse и отправить его в SAP. Загруженный файл
содержит два вложения. Первое — файл с ценной информацией, на
основе которого создаются классы и программы ABAP с помощью
отчета ZSAPLINK. Второе — текстовый файл, который нужно
преобразовать в файл XML с помощью транзакции XLST_TOOL,
преобразования ZUMAP_FILE_PARSER и вставки кода из текстового
файла.
На сайте сказано, что нужно также загрузить плагин Eclipse, но это просто
отвлекающий маневр. На самом деле нужно открыть Eclipse, выбрать
пункт меню Help • Install New Software (Справка • Установка нового ПО) и
ввести ссылку. Откроется экран, показанный на Рис. 1.24.

Установите флажок UMAP и нажмите кнопку Next (Далее), чтобы


установить плагин. Затем нужно создать схему UML. Как я уже говорил, в
среде Eclipse нужно установить какой-нибудь инструмент моделирования.
Я решил установить UML Designer от Obeo (потому что он бесплатный) и
выбрал путь меню Help • Eclipse Marketplace (Справка • Eclipse
Marketplace), где и нашел плагин Obeo. После установки инструмента
моделирования вернитесь на главный экран Eclipse и выберите команду
File • New • Other • UML Designer • UML Project (Файл • Создать • Другое •
UML Designer • Проект UML).

17
Рис. 1.24 Установка плагина UML2ABAP для Eclipse.

Назовите проект «ReallyScaryMonster» (Очень страшный монстр). Вас


попросят определить объект модели. Укажите модель по умолчанию. (В
этот момент у меня все исчезло с экрана. Если с вами такое тоже

18
произойдет, откройте новое окно и выберите путь Show View • Model
Explorer [Показать ракурс • Обозреватель моделей]).

Щелкните правой кнопкой мыши проект ReallyScaryMonster и выберите


команду Create Representation (Создать представление). Откроется экран,
показанный на Рис. 1.25.

Рис. 1.25 Создание схемы классов

Нажав кнопку Next (Далее), вы увидите экран, разделенный на три


области (Рис. 1.27). В центре находится область для создания диаграммы
класса, справа находится панель с объектами, которые можно
перетащить на экран, а в нижней части отображаются свойства объекта,
на который в данный момент наведен курсор. Эти свойства можно
19
изменять. (В Главе 12 вы увидите, что графический редактор в Web
Dynpro ABAP очень похож на описанный здесь).

Создайте базовый класс с двумя подклассами, наследующими свойства


базового класса. Задайте всем трем классам несколько свойств. В
подклассе сделайте некоторые из атрибутов зеленых и синих монстров
защищенными или частными и присвойте главному классу один метод
(говоря языком UML, «операцию»). Все это можно сделать
перетаскиванием объектов на экране. Если навести курсор на какой-либо
объект (например, атрибут), в нижней части экрана отобразится список его
свойств.

Выберите узел REALLY_SCARY_MONSTER Model.UML, щелкните по


нему правой кнопкой мыши и выберите команду UML 2 ABAP • Generate
ABAP code (UML 2 ABAP • Создать код ABAP). (Напоминаю: этой команды
в меню не было бы, если бы вы не установили плагин UML2ABAP.)

20
Рис. 1.26 Схема программы-монстра в Eclipse
Пока переворачиваются песочные часы, на несколько секунд откроется
окно Accleo Generation Results (Результаты генерации в Accleo).
Платформа Accleo — тоже детище Obeo. Важно отметить, что теперь в
вашем проекте ReallyScaryMonster появился новый узел SRC-GEN. Он
содержит подчиненный узел NewModel.Umap. Нужно отправить
файл NewModel.umap на локальный компьютер. Это не составит никакого
труда: просто щелкните по нему правой кнопкой мыши и выберите
команду Export (Экспорт), а затем укажите папку на жестком диске. Потом
запустите в системе ABAP программу Z_UMAP_IMPORT и укажите только
что сохраненный файл.
21
Откроется экран, показанный на Рис. 1.27. Нажмите кнопку Import Object
(Импорт объекта). Затем откроется окно, в котором нужно выбрать новые
классы для импорта (или указать, что они являются локальными
объектами). Если все в порядке, зеленые индикаторы в нижней части
экрана покажут, что были созданы новые классы.
Если, как и я, вы не доверяете сообщениям компьютера и чувствуете
острую потребность все проверить, перейдите в саму систему ABAP через
стандартную панель входа и убедитесь, что классы действительно
созданы в SE24. Вздохнув с облегчением, вернитесь в Eclipse и взгляните
на сгенерированный код (Листинг 1.17). Помните, что в Eclipse все
отображается в ракурсе на основе исходного кода, тогда как в SE24 или
SE37 — в ракурсе на основе формуляра.

Рис. 1.27 Импорт схемы UML в систему ABAP


class ZCL_REALLY_SCARY_MONSTER definition
public
create public .

public section.
data MONSTER_NAME type INVALID .
data MONSTER_NUMBER type INVALID .

methods HOWL

22
importing
!NUMBER_OF_HOWLS type INVALID .
protected section.

data SANITY type INVALID .


private section.
ENDCLASS.

CLASS ZCL_REALLY_SCARY_MONSTER IMPLEMENTATION.

method HOWL.
endmethod.

ENDCLASS.
Листинг 1.17 Сгенерированный код в Eclipse
Как и следовало ожидать, код в Eclipse был успешно сгенерирован,
включая подклассы (Листинг 1.18).
Примечание
Пока не удалось получить правильные типы TYPES для атрибутов, и
параметры метода не были скопированы. Этого и следовало ожидать,
прототип очень сырой, он используется только для проверки
концепции. В этом и есть суть проектов с открытым исходным кодом:
если чего-то не хватает, сделай сам.
class ZCL_REALLY_GREEN_MONSTER definition
public
inheriting from ZCL_REALLY_SCARY_MONSTER
create public .

public section.

data GREENNESS type INVALID .


protected section.
23
data ENVIRONMENTAL_AWARENESS type INVALID .
private section.

data ENVY type INVALID .


ENDCLASS.

CLASS ZCL_REALLY_GREEN_MONSTER IMPLEMENTATION.


ENDCLASS.
class ZCL_REALLY_BLUE_MONSTER definition
public
inheriting from ZCL_REALLY_SCARY_MONSTER
create public .

public section.
data BLUENESS type INVALID .
protected section.
private section.
data NO_OF_BLUE_HATS type INVALID .
ENDCLASS.

CLASS ZCL_REALLY_BLUE_MONSTER IMPLEMENTATION.


ENDCLASS.
Листинг 1.18 Сгенерированные подклассы

1.1.2 Obeo
Плагин Obeo UML на момент написания книги существует только в виде
прототипа и еще не опубликован. Он предназначен для выполнения двух
задач: во-первых, для создания схем UML в Eclipse и, во-вторых, для
преобразования этих схем UML в программы ABAP.

24
Прототип от Obeo похож на адаптированную версию Eclipse и называется
Obeo Design Studio. И Obeo, и UMAP выполняют одинаковые функции.
Рассмотрим различия.

 Для использования Obeo не нужно ничего устанавливать в бэкэнд-


системе ABAP. Код создается в системе ABAP напрямую через меню
ABAP in Eclipse. Не нужно ничего загружать и выгружать.
 В UMAP типы (TYPES) отображаются как недействительные (INVALID). В
Obeo типы TYPES являются пустыми, и их нужно заполнить
самостоятельно. Ничего страшного.

Как я уже говорил, на момент работы над книгой, этот плагин существует
только в виде прототипа и еще не вышел на рынок. Когда плагин будет
опубликован, за него придется платить.

Надеюсь, что из этого раздела вы получили представление о плагинах,


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

1.2 Резюме

В этой главе мы рассмотрели основы ABAP in Eclipse или, как любят


говорить в SAP, Development Tools. Прочитав ее, вы получили
представление о возможностях Eclipse и ее преимуществах по сравнению
с SE80.

Программирование на ABAP в среде ABAP in Eclipse предполагает


проверку синтаксиса и корректное автодополнение кода — то есть полный
набор инструментов для работы с языком. В следующей главе мы
поговорим о поразительных изменениях, произошедших с языком ABAP в
системе SAP NetWeaver 7.4.

25
1 – По-английски «затмение» - «eclipse», прим. переводчика
2 – «Groovy» - клевый (англ.), прим. переводчика

26

Вам также может понравиться