Дружба ABAP Objects. Получить доступ к приватному атрибуту

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

Пример:

Читать далее «Дружба ABAP Objects. Получить доступ к приватному атрибуту»

oData выбор языка запроса

Язык, под которым выполняется сервис, зависит от языка входа в FIORI. Это не всегда устраивает. Например, вам надо получить логи на определенном языке или какие-то тексты отстусвуют на языке входа. Можно принудительно задать указать язык запуска сервиса добавив в URL префикс ?sap-language='DE' . Где 'DE' в данном случае немецкий язык.

Пример:
/sap/opu/odata/sap/ZZ_TEST_SERVICE_SRV/FileSet('Excel.xls')/$value?sap-language='DE'

Создание oData сервиса. Часть 8. Отправка файла на фронтенд.

Короткая заметка по отправке файла на фронт.

  1. В транзакции SEGW, создаем сущность;

Читать далее «Создание oData сервиса. Часть 8. Отправка файла на фронтенд.»

Создание oData сервиса. Часть 7. Загрузка файла с фронтенда.

И так, друзья. Давайте попробуем получить файл с богомерзкого фронтенда в наш теплый ламповый ABAP.
Первый делом необходимо добавить в нашу сущность два поля. Строго говоря проблема будет именно если не сделаем поле MIME-типа

Переопределим метод DEFINE к классе Z*_MPC_EXT

Читать далее «Создание oData сервиса. Часть 7. Загрузка файла с фронтенда.»

Создание oData сервиса. Часть 5. Deep entity получение данных

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

Читать далее «Создание oData сервиса. Часть 5. Deep entity получение данных»

Создание oData сервиса. Часть 4. oData expand entity отправка данных

В прошлом посте было рассказано об ассоциации и навигации. В результате получили несколько вызовов сущностей, происходящих друг за другом. Однако, данный способ накладывает некоторые ограничения и потенциальные потери производительности, т.к. вместо одного RFC вызывается целая цепочка. Также часто нужно данные для передачи на фронт мы получаем одновременно, например как результат работы ФМ. Конечно, можно положить эти данные в буфер и брать необходимое во время вызова соответствующей сущности, звучит не очень рационально.
Стандартный интерфейс позволяет сделать так, чтобы все зависимые сущности заполнялись одновременно.

Читать далее «Создание oData сервиса. Часть 4. oData expand entity отправка данных»

Создание oData сервиса. Часть 3. Ассоциации и навигация

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

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

Читать далее «Создание oData сервиса. Часть 3. Ассоциации и навигация»

Создание oData сервиса. Часть 2. Function import

Function import - Операция выполняемая на стороне бэкенд системы. Это некоторая альтернатива обычным CRUD сервисам для случаев не подходящих под GET, POST, PUT, DELETE запросы. Может быть вызвана GET и POST методами. Например, проверки, запуски каких либо операций и прочее.

Пример создания

Для сервиса созданного в прошлой части создадим Function import по проверке наличия записи в таблице. (Максимально примитивная функция, в реальных задачах будете вызывать что-то реально стоящее))

Читать далее «Создание oData сервиса. Часть 2. Function import»

Создание oData сервиса. Часть 1.

oData(Open Data Protocol) - открытый веб-протокол для передачи данных. Общение по протоколу осуществляется по HTTP протоколу путем обмена json и xml.
В рамках SAP обычно мы говорим об обмене данных между фронтом и бэкендом, хотя применение гораздо шире.
Рассмотрим пример создания простого сервиса для работы с данными таблиц SPFLI и SFLIGHT:

Читать далее «Создание oData сервиса. Часть 1.»

oData Отключение программы преобразования для поля

Создал сущность путем импорта стандартной таблицы SPFLI. Свойства полей подтянулись автоматически. Во время тестирования выяснилось, что из-за стандартной программы преобразования обработка валится в дамп. Если для GET запроса хватило обычной замены типа элемента на Edm.String. При обратном преобразовании в POST запросе - дамп.

Читать далее «oData Отключение программы преобразования для поля»