lunes, 9 de noviembre de 2026

Exportar a disco logos cargados por la SE78

 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