in src/zgoog_conversation_agent/zgoog_i_conv_agent_imp.prog.abap [0:0]
METHOD get_file_data.
DATA ls_file_data TYPE gty_file_data.
DATA lv_file_length TYPE i.
DATA lt_bin_data TYPE STANDARD TABLE OF char1024.
DATA lv_xfile TYPE xstring.
DATA lv_output TYPE string.
DATA lv_filename TYPE string.
FIELD-SYMBOLS:
<ls_file_table> TYPE gty_file_table.
LOOP AT gt_file_table ASSIGNING <ls_file_table>.
lv_filename = <ls_file_table>-filename.
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = lv_filename
filetype = 'BIN'
IMPORTING
filelength = lv_file_length
CHANGING
data_tab = lt_bin_data
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
not_supported_by_gui = 17
error_no_gui = 18
OTHERS = 19.
IF sy-subrc <> 0.
MESSAGE TEXT-001 TYPE 'S' DISPLAY LIKE 'E'.
ev_error = abap_true.
RETURN.
ENDIF.
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
EXPORTING
input_length = lv_file_length
IMPORTING
buffer = lv_xfile
TABLES
binary_tab = lt_bin_data.
CALL FUNCTION 'SCMS_BASE64_ENCODE_STR'
EXPORTING
input = lv_xfile
IMPORTING
output = lv_output.
ls_file_data-filename = lv_filename.
IF <ls_file_table>-mime_type <> p_mime_file.
<ls_file_table>-mime_type = p_mime_file.
ENDIF.
ls_file_data-mime_type = <ls_file_table>-mime_type.
ls_file_data-filedata = lv_output.
APPEND ls_file_data TO et_file_data.
CLEAR ls_file_data.
ENDLOOP.