Короткая заметка по отправке файла на фронт.
- В транзакции SEGW, создаем сущность;
2. Для сущности устанавливаем галочку Media
3. Указываем поля которые необходимы для выбора файла. Для учебного случая хватит имени файла:
4. Сохраняем и активируем сервис. Не забываем после изменения сервиса обновлять сервис:
5. Далее в классе *DPC_EXT необходимо переопределить метод GET_STREAM
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
Можно ли этим способом обработать несколько файлов? И как ,если да? Спасибо
Не могу подсказать. Не делал подобного