Короткая заметка по отправке файла на фронт.
- В транзакции SEGW, создаем сущность;
![](https://sapcode.ru/wp-content/uploads/2022/06/image.png)
![](https://sapcode.ru/wp-content/uploads/2022/06/image-2.png)
2. Для сущности устанавливаем галочку Media
![](https://sapcode.ru/wp-content/uploads/2022/06/image-4.png)
3. Указываем поля которые необходимы для выбора файла. Для учебного случая хватит имени файла:
![](https://sapcode.ru/wp-content/uploads/2022/06/image-3-1024x83.png)
4. Сохраняем и активируем сервис. Не забываем после изменения сервиса обновлять сервис:
![](https://sapcode.ru/wp-content/uploads/2022/06/image-5.png)
5. Далее в классе *DPC_EXT необходимо переопределить метод GET_STREAM
![](https://sapcode.ru/wp-content/uploads/2022/06/image-6-1024x316.png)
6. Реализуем метод. Для учебных целей используем трансформацию для генерации файла. У вас будет какое-то свое получение.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
METHOD /iwbep/if_mgw_appl_srv_runtime~get_stream. DATA lv_file TYPE xstring. DATA lt_data TYPE zsb_data. IF it_key_tab[ name ='FileName' ]-value = 'Excel.xls'. CALL TRANSFORMATION zsb_sm_audit_check SOURCE maindata = lt_data RESULT XML lv_file. DATA ls_stream TYPE /iwfnd/if_mgw_core_runtime=>ty_s_media_resource. ls_stream-value = lv_file. ls_stream-mime_type = 'application/xml'. copy_data_to_ref( EXPORTING is_data = ls_stream CHANGING cr_data = er_stream ). set_header( is_header = VALUE #( name = 'Content-Disposition' value = 'attachment' ) ). set_header( is_header = VALUE #( name = 'filename' value = 'List.xls' ) ). ENDIF. ENDMETHOD |
Примечание:
set_header - устанавливает заголовок ответа. В общем случае это необязательно, но при необходимости параметры можно задавать.
Для получения данных используется GET запрос cо следующим url /sap/opu/odata/sap/ZZ_TEST_SERVICE_SRV/FileSet('Excel.xls')/$value
Вместо ZZ_TEST_SERVICE_SRV следует указать ваш сервис. И набор ключей будет ваш соответственно.
Тест в транзакции /IWFND/GW_CLIENT
![](https://sapcode.ru/wp-content/uploads/2022/06/image-7-1024x525.png)
Можно ли этим способом обработать несколько файлов? И как ,если да? Спасибо
Не могу подсказать. Не делал подобного