ormПри разработке с использованием ABAP Objects разработчик неизбежно сталкивается с ситуацией, когда данные нужно либо загружать из каких-либо источников данных (БД, файлы и т.п.) в объекты, либо выгружать из объектов куда-либо.

Системы, решающие задачу сопоставления информации из БД в объекты и обратно принято называть ORM системами.

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

Суть задачи состоит в преобразовании таких объектов в форму, в которой они могут быть сохранены в файлах или базах данных, и которые легко могут быть извлечены в последующем, с сохранением свойств объектов и отношений между ними. Эти объекты называют «хранимыми» (англ. persistent).  В концепции SAP понятие «хранимый» объект заменено понятием «постоянный». В дальнейшем в статье будет использовано понятие «хранимый».

Работа с хранимыми объектами осуществляется с помощью встроенной в AS ABAP технологии ABAP Object Services. Данный инструмент можно разделить на три составляющие:

  • Инструмент загрузки и сохранения объектов (Persistence Service)
  • Инструмент поиска в объектах по определенным критериям (Query Service)
  • Инструмент обработки транзакций (Transaction Service)

Читать далее

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

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

Существуют следующие виды взаимосвязей:

relations

Читать далее

Методология тестирования, управляемого данными (DDT) применяется в автоматизации тестирования ПО, представляет собой тестирование, выполнение и верификация которого производится на основе данных, которые хранятся в БД или любых других источниках данных.

Обычно сравнивают эталонные данные с теми, что на выходе получает система из метода (функции, программы и т.п.).

Тестирование, управляемое данными подразумевает разделение юнит тестов и данных, которые в них проверяются. Юнит тесты получают эталонные данные из некого источника и сравнивают их с результатами, полученными при тестировании объекта.

Изначально ABAP Unit не предоставляет никакого сервиса для хранения и ведения тестируемых данных, как например это делают другие фреймворки для тестирования: jUnit, nUnit. В статье пойдет речь о том как обойти это недоразумение.

Читать далее

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

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

С помощью анализатора кода тр. SCI можно унифицировать правила и проверять их соблюдение.  Ниже, с помощью этой транзакции, будет рассмотрена проверка тестовой программы на соглашения об именах.

Читать далее

Очень часто в коде какого-либо user (customer) exit можно встретить кучу разных ветвлений, одно вставил программист Петя по задаче X, другое вставил программист Вася по задаче Y. Со временем подобный код становится плохо читаемым. Для удобства его восприятия можно воспользоваться современными BADI, основанными на Enhancement Framework.

Суть данного удобства заключается в том, что вместо кучи ветвлений и нагромождения кода в user exit вызывается свой BADI, конкретные реализации которого являются отдельными друг от друга объектами, каждый из которых ведется и описывается так же отдельно.

Ниже рассмотрен небольшой пример того, как создать и вызвать реализацию BADI.

Читать далее

Документация по методу.

Инкапсуляция — механизм языка программирования, ограничивающий доступ к составляющим объект компонентам (методам и свойствам), делает их приватными, то есть доступными только внутри объекта. Является важным инструментом ООП наряду с полиморфизмом, наследованием и абстракцией данных.

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

result

В официальной документации сказано следующее:

If references are set using GET REFERENCE, permission to access the data object in question is only checked at the position of the statement. After that, the references can be passed on to any destination and the associated data objects can be accessed from any position using the references. To prevent access to private and read-only attributes using references outside classes, do not publish references to these attributes externally. A constant or read-only input parameter, however, can never be made modifiable by passing its reference.

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

  • Написать в редакторе TYPES
  • Нажать Ctrl+Пробел, чтобы вызвать вспомогательное меню
  • Щелкнуть два раза по TYPES или нажать Shift+Enter

На экране необходимо указать структуру из словаря и нажать кнопку Preview TYPE, после чего можно будет выбирать необходимые поля для будущей структуры:

type_builder

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

Читать далее