В юнит тестировании распространена практика dependency injection, которая позволяет вынести внешние зависимости в отдельные сущности, которые передаются в объект в тот или иной момент через интерфейс. В тесте эти сущности заменяются заглушками с заранее известным поведением (mock-объект). Таким образом тестируемый объект изолируется от внешних зависимостей.

В NW 7.4 SP 9+ появился инструмент, позволяющий создавать mock-объекты, имплементирующее определенный интерфейс, прямо в рантайме. Это достаточно удобно при тестировании, так как не нужно прописывать имплементацию интерфейсов в mock-объектах для DI вручную, это можно сделать через вызов нескольких методов.

Последний год я занимался созданием приложений в рамках модели разработки для Fiori, которая почти полностью построена на BOPF и CDS. За это время у меня накопилось некоторое понимание особенностей и подводных камней, связанных с разработкой CDS View, которые стоит знать заранее и учитывать на этапе разработки архитектуры системы. Эти особенности оказывают существенное влияние на процесс разработки и поддержки по сравнению с классической ABAP разработкой.

Одной из отличительных черт профессионального программного продукта является покрытие кода юнит-тестами. Это позволяет безболезненно внедрять новый функционал и редактировать старый, не боясь что-то сломать. К тому же это позволяет проверить работоспособность программы даже в случае отсутствия тестовых данных, что так часто встречается в ABAP-разработке. Однако одно из узких мест - запросы к БД, которые мешают построить полноценные тесты, и которые зачастую бывает трудно или нецелесообразно вынести в отдельные модули или зависимости.

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

Начиная с SAP NW версии 7.5 эту задачу можно решить с применением всего двух инструментов - ABAP CDS View и Smart Templates.

Начиная с версии 7.4 в ABAP появилась технология Core Data Services - расширенная OpenSQL нотация описания моделей данных с широкими возможностями обработки данных, приправленная аннотациями, позволяющими встраивать в CDS информацию, используемую различными фреймворками.

Однако с большой силой приходит и большая ответственность.

В ABAP реализован достаточно мощный механизм использования сообщений. Однакр часто возникает необходимость передавать сообщения не поодиночке, а списком, например по завершении какого-то комплексного процесса, состоящего из шагов, либо при вызове программного модуля (RFC, BAPI и т.п.), возвращающего список сообщений. Есть удобный способ сделать это.

В процессе разработки постоянно происходят ситуации, когда реальное положение дел отличается от того, что описано в спецификации. Клиент утверждает одно, но по факту мы видим совершенно другое. Что же делать и как разобраться в этой ситуации?