REPORT Z_DECARGAIMAGEN.
PARAMETERS: p_name TYPE tdobname DEFAULT 'ZMI_LOGO' OBLIGATORY, " Nombre del gráfico en SE78
p_btype TYPE tdbtype DEFAULT 'BCOL' OBLIGATORY, " BMON = BMP monocromo / BCOL = BMP color
p_file TYPE string LOWER CASE DEFAULT 'C:\temp\logo.bmp' OBLIGATORY.
DATA: lv_bmp TYPE xstring,
lv_size TYPE i,
lt_bin TYPE STANDARD TABLE OF x255,
lv_msg TYPE string.
START-OF-SELECTION.
" 1. Leer el gráfico (se devuelve como BMP en xstring)
CALL METHOD cl_ssf_xsf_utilities=>get_bds_graphic_as_bmp
EXPORTING
p_object = 'GRAPHICS'
p_name = p_name
p_id = 'BMAP'
p_btype = p_btype
RECEIVING
p_bmp = lv_bmp
EXCEPTIONS
not_found = 1
internal_error = 2
OTHERS = 3.
IF sy-subrc <> 0 OR lv_bmp IS INITIAL.
MESSAGE 'No se encontró el gráfico o no se pudo leer' TYPE 'S' DISPLAY LIKE 'E'.
RETURN.
ENDIF.
" 2. Convertir xstring a tabla binaria
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lv_bmp
IMPORTING
output_length = lv_size
TABLES
binary_tab = lt_bin.
" 3. Descargar a disco
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = p_file
filetype = 'BIN'
bin_filesize = lv_size
TABLES
data_tab = lt_bin
EXCEPTIONS
OTHERS = 1.
IF sy-subrc = 0.
lv_msg = |Gráfico exportado a { p_file }|.
MESSAGE lv_msg TYPE 'S'.
ELSE.
MESSAGE 'Error al descargar el archivo' TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.
No hay comentarios:
Publicar un comentario