in src/zrest/zcl_rest_utility_class.clas.abap [0:0]
METHOD download_payload_file.
TYPES : BEGIN OF ty_string,
line TYPE string,
END OF ty_string.
DATA : wa_payload TYPE zrest_mo_payload,
wa_string TYPE ty_string,
it_string TYPE STANDARD TABLE OF ty_string,
output TYPE xstring.
* Check if user has the authority to call.
* Begin of changes for VSTF# 2163894 | DGDK903413
* TRY.
* check_authority( ).
* CATCH zcx_http_client_failed INTO DATA(lv_textid).
* DATA(lv_text2) = lv_textid->if_t100_message~t100key.
* RAISE EXCEPTION TYPE zcx_http_client_failed EXPORTING textid = lv_text2.
* ENDTRY.
* End of changes for VSTF 2163894 | DGDK903413
SELECT SINGLE * FROM zrest_mo_payload INTO wa_payload WHERE messageid EQ message_id.
AUTHORITY-CHECK OBJECT 'ZREST_AUTH'
ID 'ZBOOLEAN' FIELD 'X'.
IF sy-subrc NE 0 AND check_obfuscation_needed( inetrface_in = wa_payload-interface_id ) EQ abap_true.
output = obfuscate( input = wa_payload-payload ).
wa_payload-payload = output.
ENDIF.
CALL FUNCTION 'ECATT_CONV_XSTRING_TO_STRING'
EXPORTING
im_xstring = wa_payload-payload
im_encoding = 'UTF-8'
IMPORTING
ex_string = wa_string-line.
APPEND wa_string TO it_string.
CLEAR wa_string.
DATA gv_filename TYPE string.
DELETE it_string WHERE line IS INITIAL.
IF it_string IS INITIAL.
MESSAGE 'Payload not found' TYPE 'I'.
RETURN.
ENDIF.
CALL FUNCTION 'GUI_FILE_SAVE_DIALOG'
IMPORTING
fullpath = gv_filename.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = gv_filename
filetype = 'ASC'
TABLES
data_tab = it_string
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.