SE80
- Button „MIME Repository“ klicken
SO2_MIME_REPOSITORY
Report: BSP_UPDATE_MIMEREPOS
SE80
SO2_MIME_REPOSITORY
Report: BSP_UPDATE_MIMEREPOS
* Demo: GRAPHICS_IGS_IMGCONV_DEMO
* Dateiname der Bilddatei zum hochladen
PARAMETERS: p_fname TYPE file_table-filename OBLIGATORY.
* wenn die F4-Hilfe für den Dateinamen aufgerufen wird
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.
DATA: lv_rc TYPE i.
DATA: it_files TYPE filetable.
DATA: lv_action TYPE i.
* File-Tabelle leeren, da hier noch alte Einträge von vorherigen Aufrufen drin stehen können
CLEAR: it_files.
* FileOpen-Dialog aufrufen
TRY.
cl_gui_frontend_services=>file_open_dialog( EXPORTING
file_filter = |gif (*.gif)\|*.gif\|{ cl_gui_frontend_services=>filetype_all }|
CHANGING
file_table = it_files
rc = lv_rc
user_action = lv_action ).
IF lv_action = cl_gui_frontend_services=>action_ok.
* wenn Datei ausgewählt wurde
IF lines( it_files ) > 0.
* ersten Tabelleneintrag lesen
p_fname = it_files[ 1 ]-filename.
ENDIF.
ENDIF.
CATCH cx_root INTO DATA(e_text).
MESSAGE e_text->get_text( ) TYPE 'S' DISPLAY LIKE 'E'.
ENDTRY.
START-OF-SELECTION.
TRY.
DATA: lv_filesize TYPE w3param-cont_len.
DATA: lv_filetype TYPE w3param-cont_type.
DATA: it_bin_data TYPE w3mimetabtype.
* Bild auf Appl. Server hochladen (binary)
cl_gui_frontend_services=>gui_upload( EXPORTING
filename = |{ p_fname }|
filetype = 'BIN'
IMPORTING
filelength = lv_filesize
CHANGING
data_tab = it_bin_data ).
* Konverterobjekt erzeugen
DATA(o_conv) = NEW cl_igs_image_converter( ).
* MIME-Typen (Format) für input und output festlegen
o_conv->input = 'image/gif'. " Quellformat ist ein GIF
o_conv->output = 'image/x-ms-bmp'. " Ausgabeformat ist ein BMP
* neue Bildgröße festlegen
* o_conv->height = '100'. " neue Höhe 100
* o_conv->width = '100'. " neue Breite 100
* Bildaten übergeben
o_conv->set_image( blob = it_bin_data
blob_size = lv_filesize ).
* Image konvertieren
o_conv->execute( ).
* Anzahl Ergebnisbilder > 0
IF o_conv->get_image_count( ) > 0.
* Bilddaten im Ausgabeformat holen
o_conv->get_image( IMPORTING
blob = it_bin_data
blob_size = lv_filesize
blob_type = lv_filetype ).
* Image lokal speichern
cl_gui_frontend_services=>gui_download( EXPORTING
filename = 'c:\temp\temp.bmp'
filetype = 'BIN'
bin_filesize = lv_filesize
CHANGING
data_tab = it_bin_data ).
ENDIF.
CATCH cx_root INTO DATA(e_txt).
WRITE: / e_txt->get_text( ).
ENDTRY.
DATA: o_dock TYPE REF TO cl_gui_docking_container.
PARAMETERS: p_name TYPE string. " Dummy-Parameter
AT SELECTION-SCREEN OUTPUT.
IF NOT o_dock IS BOUND.
* Dockingcontainer erzeugen
o_dock = NEW #( repid = sy-repid
dynnr = sy-dynnr
side = cl_gui_docking_container=>dock_at_right
ratio = 50 ).
* ECL viewer erzeugen
DATA(o_viewer) = NEW cl_gui_ecl_2dviewer( parent = o_dock ).
* Toolbar einstellen
o_viewer->create_toolbar( close_button = abap_false
navigation = abap_true
options = abap_true
remove_document = abap_true
tools = abap_false
tool_stamp = abap_false
tool_compare = abap_false
tool_measurement = abap_false
viewer = abap_true
viewer_openfile = abap_true
viewer_savefile = abap_true
viewer_closefile = abap_true ).
* JPEG anzeigen
o_viewer->open_document( file = 'c:\temp\temp.jpg'
file_type = 'image/jpeg' ). " https://wiki.selfhtml.org/wiki/Referenz:MIME-Typen
ENDIF.
* ECL viewer in extra Fenster
DATA(o_viewer) = NEW cl_gui_ecl_viewerbox( ).
* Fullscreen
o_viewer->set_alignment( alignment = cl_gui_control=>align_at_left + cl_gui_control=>align_at_right + cl_gui_control=>align_at_top + cl_gui_control=>align_at_bottom ).
* PDF öffnen
o_viewer->open_document( file = 'c:\temp\temp.pdf'
file_type = 'application/pdf' ). " https://wiki.selfhtml.org/wiki/Referenz:MIME-Typen
Weiterführende Infos:
* Demo-Programm: SAP_PICTURE_DEMO
DATA: o_dock TYPE REF TO cl_gui_docking_container.
PARAMETERS: p_name TYPE string. " Dummy-Parameter
AT SELECTION-SCREEN OUTPUT.
IF NOT o_dock IS BOUND.
* Dockingcontainer erzeugen
o_dock = NEW #( repid = sy-repid
dynnr = sy-dynnr
side = cl_gui_docking_container=>dock_at_right
ratio = 50 ).
DATA: lv_xstr TYPE xstring.
* MIME-API holen
DATA(o_mime_rep) = cl_mime_repository_api=>get_api( ).
* Bild aus dem MIME-Repository laden
o_mime_rep->get( EXPORTING
i_url = '/SAP/PUBLIC/Test123.jpg'
i_check_authority = abap_false
IMPORTING
e_content = lv_xstr ).
* xstring nach binary (RAW) wandeln
DATA(it_bin_data) = cl_bcs_convert=>xstring_to_solix( lv_xstr ).
DATA: lv_url TYPE swk_url.
* temporäre URL auf das Bild erzeugen
CALL FUNCTION 'DP_CREATE_URL'
EXPORTING
type = 'image/jpeg' " https://wiki.selfhtml.org/wiki/MIME-Type/%C3%9Cbersicht
subtype = 'jpg'
TABLES
data = it_bin_data
CHANGING
url = lv_url
EXCEPTIONS
dp_invalid_parameter = 1
dp_error_put_table = 2
dp_error_general = 3
OTHERS = 4.
* Bild über die URL laden und anzeigen
DATA(o_pic) = NEW cl_gui_picture( parent = o_dock ).
o_pic->set_display_mode( display_mode = cl_gui_picture=>display_mode_fit_center ).
o_pic->load_picture_from_url_async( lv_url ).
ENDIF.
Weiterführende Infos: Link
* Dateiname der Bilddatei zum hochladen
PARAMETERS: p_fname TYPE file_table-filename OBLIGATORY.
* Speicherpfad im MIME-Repository, muss vorhanden sein, andernfalls mit o_mime_rep->create_folder( ) erzeugen
PARAMETERS: p_mpath TYPE string DEFAULT '/SAP/PUBLIC/Test123.jpg' OBLIGATORY.
* wenn die F4-Hilfe für den Dateinamen aufgerufen wird
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.
DATA: lv_rc TYPE i.
DATA: it_files TYPE filetable.
DATA: lv_action TYPE i.
* File-Tabelle leeren, da hier noch alte Einträge von vorherigen Aufrufen drin stehen können
CLEAR it_files.
* FileOpen-Dialog aufrufen
TRY.
cl_gui_frontend_services=>file_open_dialog( EXPORTING
file_filter = |jpg (*.jpg)\|*.jpg\|{ cl_gui_frontend_services=>filetype_all }|
CHANGING
file_table = it_files
rc = lv_rc
user_action = lv_action ).
IF lv_action = cl_gui_frontend_services=>action_ok.
* wenn Datei ausgewählt wurde
IF lines( it_files ) > 0.
* ersten Tabelleneintrag lesen
p_fname = it_files[ 1 ]-filename.
ENDIF.
ENDIF.
CATCH cx_root INTO DATA(e_text).
MESSAGE e_text->get_text( ) TYPE 'S' DISPLAY LIKE 'E'.
ENDTRY.
START-OF-SELECTION.
DATA: lv_filesize TYPE i.
DATA: it_bin_data TYPE STANDARD TABLE OF raw255.
* Bild auf Appl. Server hochladen (binary)
cl_gui_frontend_services=>gui_upload( EXPORTING
filename = |{ p_fname }|
filetype = 'BIN'
IMPORTING
filelength = lv_filesize
CHANGING
data_tab = it_bin_data ).
DATA: lv_xstr TYPE xstring.
* RAW (binary) nach xstring
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
EXPORTING
input_length = lv_filesize
IMPORTING
buffer = lv_xstr
TABLES
binary_tab = it_bin_data
EXCEPTIONS
failed = 1
OTHERS = 2.
* MIME-API holen
DATA(o_mime_rep) = cl_mime_repository_api=>get_api( ).
* Bild im MIME-Repository speichern
* Objektkatalogeintrag wird erstellt, evtl. bestehende Dateien werden überschrieben
o_mime_rep->put( i_url = p_mpath
i_content = lv_xstr
i_check_authority = abap_false ).
* Objekt-ID des Mime-Objekts
DATA: lv_object_id TYPE char32 VALUE 'EE3ECB43B3E70B43E10000000A15509A'.
DATA: lv_desc TYPE skwf_desc.
DATA: lv_docname TYPE skwf_urlp.
DATA: lv_filename TYPE string.
DATA: lv_filesize TYPE i.
DATA: lv_mimetype TYPE mr_mimtype.
DATA: lv_langu TYPE sy-langu.
DATA: it_bin_data TYPE sdokcntbins. " RAW1022
DATA(lv_io) = VALUE skwf_io( objtype = 'L' " Unbestimmt (= alle), F Verzeichnis, L Loio, P Phio, R Relation
class = 'M_IMAGE_L'
objid = lv_object_id ).
* Sprachvorgabe
lv_langu = 'D'.
* MIME-Objekt laden
cl_wb_mime_repository=>load_mime( EXPORTING
io = lv_io
IMPORTING
docname = lv_docname
description = lv_desc
filename = lv_filename
filesize = lv_filesize
bin_data = it_bin_data
mimetype = lv_mimetype
CHANGING
language = lv_langu ).
WRITE: / lv_docname.
WRITE: / lv_desc.
WRITE: / lv_filename.
WRITE: / lv_filesize.
WRITE: / lv_mimetype.
WRITE: / lv_langu.
DATA: lv_xstr_line TYPE xstring.
DATA: lv_xstr_result TYPE xstring.
* RAW (binary) -> xstring
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
EXPORTING
input_length = lv_filesize
IMPORTING
buffer = lv_xstr_result
TABLES
binary_tab = it_bin_data
EXCEPTIONS
failed = 1
OTHERS = 2.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
MIME_FROLES - MIME Repository: Ordnerrollen MIMETYPES - Tabelle der MIME Typen SDOKFEXT - Dateinamenserweiterung zu MIME-Content-Type (SAP) SDOKFEXTT - Texttabelle zu SDOKFEXT SDOKMIME - MIME-Content-Type zu Dateinamenserweiterung SDOKMIME_C - MIME-Content-Type zu Dateinamenserweiterung (Kundentabelle) SDOKMIMS - MIME-Content-Type Ersetzung für Anzeige bzw. Editieren SDOKMIMS_C - MIME-Content-Type Ersetzung für Anzeige bzw. Editieren SMIMLOIO - Mime Ablage: Logische Dokumente SMIMLOIOT - Mime Ablage: Beschreibungen der logischen Dokumente SMIMLOPR - Mime Ablage: Eigenschaften der logischen Dokumente SMIMPHIO - Mime Ablage: Physische Dokumente SMIMPHF - Mime Ablage: Dateien physischer Informationsobjekte SMIMPHPR - Mime Ablage: Attribute physischer Informationsobjekte