REPORT zrich_0001.
DATA: lr_mime_rep TYPE REF TO if_mr_api.
DATA: lv_filename TYPE string.
DATA: lv_path TYPE string.
DATA: lv_fullpath TYPE string.
DATA: lv_content TYPE xstring.
DATA: lv_length TYPE i.
DATA: lv_rc TYPE sy-subrc.
DATA: lt_file TYPE filetable.
DATA: ls_file LIKE LINE OF lt_file.
DATA: lt_data TYPE STANDARD TABLE OF x255.
PARAMETERS: p_path TYPE string
DEFAULT 'SAP/PUBLIC/Test.jpg'. "<<-- Mime path, save to path
cl_gui_frontend_services=>file_open_dialog(
CHANGING
file_table = lt_file " Table Holding Selected Files
rc = lv_rc ). " Return Code, Number of Files or -1 If
Error Occurred
READ TABLE lt_file INTO ls_file INDEX 1.
IF sy-subrc = 0.
lv_filename = ls_file-filename.
ENDIF.
cl_gui_frontend_services=>gui_upload(
EXPORTING
filename = lv_filename " Name of file
filetype = 'BIN'
IMPORTING
filelength = lv_length " File length
CHANGING
data_tab = lt_data " Transfer table for file contents
EXCEPTIONS
OTHERS = 19 ).
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
EXPORTING
input_length = lv_length
* first_line = 0
* last_line = 0
IMPORTING
buffer = lv_content
TABLES
binary_tab = lt_data
EXCEPTIONS
failed = 1
OTHERS = 2.
lr_mime_rep = cl_mime_repository_api=>if_mr_api~get_api( ).
lr_mime_rep->put(
EXPORTING
i_url = p_path
i_content = lv_content
EXCEPTIONS
parameter_missing = 1
error_occured = 2
cancelled = 3
permission_failure = 4
data_inconsistency = 5
new_loio_already_exists = 6
is_folder = 7
when you are ready to show the image in a picture control on a screen.
You can do something like this. This uses a docking container so that
you don't have to create a screen, but it works the same way with a
customer container.
REPORT zrich_0001.
DATA: lr_mime_rep TYPE REF TO if_mr_api.
DATA: lv_url TYPE char255.
DATA: lv_content TYPE xstring.
DATA: lv_repid TYPE sy-repid.
DATA: lt_data TYPE STANDARD TABLE OF x255.
DATA: lo_docking TYPE REF TO cl_gui_docking_container.
DATA: lo_picture TYPE REF TO cl_gui_picture.
DATA: p_path TYPE string VALUE 'SAP/PUBLIC/Test.jpg'.
PARAMETERS: p_check.
AT SELECTION-SCREEN OUTPUT.
* Create controls
CREATE OBJECT lo_docking
EXPORTING
repid = lv_repid
dynnr = sy-dynnr
side = lo_docking->dock_at_left
extension = 200.
CREATE OBJECT lo_picture
EXPORTING
parent = lo_docking.
lr_mime_rep = cl_mime_repository_api=>if_mr_api~get_api( ).
lr_mime_rep->get(
EXPORTING
i_url = p_path
IMPORTING
e_content = lv_content
EXCEPTIONS
not_found = 3 ).
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lv_content
TABLES
binary_tab = lt_data.
CALL FUNCTION 'DP_CREATE_URL'
EXPORTING
type = 'IMAGE'
subtype = 'JPG'
TABLES
data = lt_data
CHANGING
url = lv_url.
lo_picture->load_picture_from_url_async( lv_url ).