Skip to Content
0
Former Member
Mar 03, 2009 at 09:36 AM

CL_GUI_PICTURE: Show a bitmap on a dynpro

412 Views

Hi abap masters.

I want to show a bitmap on a dynpro stored on the application server. All seems to work fine: No FM exceptions, GUIDs generated, ... but I don't know why the picture is not shown.

Please, help!!

  TYPES pict_line(256) TYPE x.
  DATA: lt_pict_tab  TYPE TABLE OF pict_line,
        wa_pict_line TYPE pict_line,
        lv_url(255)  TYPE c,
        len          TYPE i.

  DATA: lv_direc   TYPE char50,
        lv_syrepid TYPE syrepid,
        lv_dynnr   TYPE sydynnr.

  lv_syrepid = sy-repid.
  lv_dynnr = '9001'.

 DATA: container1 TYPE REF TO cl_gui_custom_container,
            picture      TYPE REF TO cl_gui_picture.

  IF container1 IS INITIAL.
    CREATE OBJECT container1
      EXPORTING
*    PARENT                      =
        container_name              = 'PICTURE'
*    STYLE                       =
*    LIFETIME                    = lifetime_default
      repid                       = lv_syrepid
      dynnr                       = lv_dynnr
*    NO_AUTODEF_PROGID_DYNNR     =
      EXCEPTIONS
        cntl_error                  = 1
        cntl_system_error           = 2
        create_error                = 3
        lifetime_error              = 4
        lifetime_dynpro_dynpro_link = 5
        OTHERS                      = 6.

    IF sy-subrc = 0.

      IF picture IS INITIAL.
        CREATE OBJECT picture
          EXPORTING
*    LIFETIME =
*    SHELLSTYLE =
            parent = container1
*    NAME   =
          EXCEPTIONS
            error  = 1
            OTHERS = 2.

        IF sy-subrc = 0.
          CALL METHOD picture->set_display_mode
            EXPORTING
              display_mode = cl_gui_picture=>display_mode_fit_center
            EXCEPTIONS
              error        = 1
              OTHERS       = 2.

          IF sy-subrc <> 0.
**********
          ENDIF.
        ENDIF.

      ENDIF.
    ENDIF.
  ENDIF.

  IF picture IS NOT INITIAL.


* Obtener ruta del directorio
    SELECT SINGLE valor INTO lv_direc
    FROM t9lacredp_params
    WHERE clave1 = c_dir_fotos.

    CONCATENATE lv_direc wa_acred_aux-inss c_ext_bmp INTO lv_svrfile.

****Hay que cargar la imagen en LT_PICT_TAB
    DESCRIBE FIELD wa_pict_line LENGTH len IN BYTE MODE.

    OPEN DATASET lv_svrfile FOR INPUT IN BINARY MODE.
    IF sy-subrc = 0.
      DO.
        READ DATASET lv_svrfile INTO wa_pict_line MAXIMUM LENGTH len.
        IF sy-subrc = 0.
          APPEND wa_pict_line TO lt_pict_tab.
        ELSE.
          EXIT.
        ENDIF.
      ENDDO.
    ENDIF.
    CLOSE DATASET lv_svrfile.

    CALL FUNCTION 'DP_CREATE_URL'
      EXPORTING
        type                       = 'IMAGE'
        subtype                    = CNDP_SAP_SUBTYPE_UNKNOWN
*   SIZE                       =
*   DATE                       =
*   TIME                       =
*   DESCRIPTION                =
*   LIFETIME                   =
*   CACHEABLE                  =
*   SEND_DATA_AS_STRING        =
      TABLES
        data                       = lt_pict_tab
*   FIELDS                     =
*   PROPERTIES                 =
      CHANGING
        url                        = lv_url
   EXCEPTIONS
     dp_invalid_parameter       = 1
     dp_error_put_table         = 2
     dp_error_general           = 3
     OTHERS                     = 4.

    IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

    CALL METHOD picture->load_picture_from_url
      EXPORTING
        url    = lv_url 
      EXCEPTIONS
        error  = 1
        OTHERS = 2.

    IF sy-subrc = 0.
      CALL METHOD cl_gui_cfw=>flush.
    ELSE.
*******
    ENDIF.
  ENDIF.

  FREE lt_pict_tab.

Thanks in advance,

Jordi