Формирование файла Excel в приложении Fiori. ч 4.

Ранее я описывал способы формирования файлов в Fiori. Однако программирование в SAP не стоит на месте и развивается. В последних релизах SAP добавил новые технологии и сейчас я опишу способ, который позволяет скачивать генерируемые файлы с помощью модели RAP.

ABAP RAP (RESTful Application Programming Model) это модель разработки приложений на языке ABAP для облачных решений, однако она доступна и в локальных системах актуальных версий (на 7.54 еще не работает).

За основу я взял пост Streams in RAP : Uploading PDF , Excel and Other Files in RAP Application, однако там файлы сохранялись в таблице. Я же сделаю возможность формирования документов (например авансового отчета) для командировок из Fiori-приложения на лету.

Читать далее «Формирование файла Excel в приложении Fiori. ч 4.»

Формирование файла Excel в приложении Fiori. ч 3.

В формировании файла Excel в Fiori осталось разработать Fiori приложение, которое позволяет пользователю обратиться к OData-сервису и сформировать нужный файл Excel. Для этого сделаем небольшое приложение, на экране которого можно выбрать год/месяц и кнопка, нажатие на которую вызовет нужный нам файл Excel.

Для разработки приложений Fiori есть несколько способов. Мы для данных целей будем использовать Web IDE Personal Edition, доступную по ссылке. Так как у меня имеется выделенный сервер под управлением Linux, я нашел в интернете Web IDE под Linux и успешно использую его.

В Web IDE создаем новый проект

Читать далее «Формирование файла Excel в приложении Fiori. ч 3.»

BOPF. ч. 6. Практические примеры

В данной статье опишу небольшие примеры работы с объектами BOPF.

Изменение данных.

Чтобы изменить те или иные данные в БО можно воспользоваться методом modify. Для этого нужно заполнить таблицу модификаций. При этом поле change_mode может принимать значение из константы /bobf/if_frw_c=>sc_modify_update для модификации существующего значения.

Читать далее «BOPF. ч. 6. Практические примеры»

Unit-test. Ч. 2.

В первой части я кратко описал назначение unit-test и сделал unit-test для локального класса. Теперь сделаем unit-test для функционального модуля и для глобального класса.

Unit-test для функционального модуля.

Сначала создадим функциональный метод ZFM_CALCULATOR и сделаем unit-test для него

Читать далее «Unit-test. Ч. 2.»

Unit-test

Юнит-тест это автоматизированный тест изолированного от зависимостей
логического блока кода. Юнит-тест даёт возможность разрабатывать код, который можно легко развивать с течением времени. При использовании unit-тестирования разработчик гарантирует правильность работы кода, упрощает проверку качества и рефакторинг кода.

Unit-test представляет собой специализированный локальный класс, который вызывает методы основного класса, разрабатываемые функциональные модули или подпрограммы программы. Затем в локальны класс анализирует результат работы программы и сравнивает его с эталонным. Таким образом для unit-test разработка представляет собой черный ящик, который должен в зависимости от специально подготовленных исходных данных возвращать ожидаемые от него результаты. Что именно происходит внутри разработки классу тестирование не важно.

Перейдем к практической реализации unit-test.

Читать далее «Unit-test»

Фреймворк BOPF. ч 5. Создание Query и Validation

Создание QUERY

Для создания запроса, достаточно в контекстном меню выбрать пункт Create Query

Создание Query

Создадим запрос Select_all, который будет показывать всё содержимое ноды

Читать далее «Фреймворк BOPF. ч 5. Создание Query и Validation»

Фреймворк BOPF. ч 4. Создание Determination.

В третьей части мы создали свой бизнес-объект ZTS_CLIENT. Сначала создадим determination – определение, которое отобразит значение полей из transient-структуры. В данном примере напишем функционал, который будет находить бизнес-партнера с номером PARTNER и копировать его наименование в поле transient-структуры.

Создание determination в Business Object

Новый determination назовём ZDET_ROOT_NAME_ORG

Читать далее «Фреймворк BOPF. ч 4. Создание Determination.»