Bilder aus MIME-Repository anzeigen

Ich präsentiere: Das hässlichste Logo aller Zeiten:

Allerdings hat es auch einen Vorteil: Taucht dieses Bild irgendwo auf, weiß man sofort: Es handelt sich um ein Demo-Programm.

SAP-Web-Repository

Das Bild ist im SAP-Web Repository gespeichert. Dieses Repository wird mit Transaktion SMW0 aufgerufen. Zur Auswahl stehen “HTML-Schablonen” und “Binäre Daten”. Wähle “Binäre Daten” aus:

Wenn du weißt, wie der Name des Bildes lautet, kannst du diesen vorbelegen:

Die entsprechenden Dateien im Web-Repository werden angezeigt:

Einlesen eines Web-Repository-Objektes

Das Einlesen und des Bildes erfolgt mit Hilfe der Funktionsbausteine WWW_GET_MIME_OBJECT und DP_CREATE_URL. Das Beispielprogramm zeigt das Bild in einem Docking-Container auf dem Selektionsbild an:

Code

REPORT.

PARAMETERS dummy.

CLASS mime_picture DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS get IMPORTING name TYPE clike RETURNING VALUE(url) TYPE w3url.
ENDCLASS.

CLASS mime_picture IMPLEMENTATION.
  METHOD get.

    DATA query_table TYPE STANDARD TABLE OF w3query.
    DATA query_line TYPE w3query.
    DATA html_table TYPE STANDARD TABLE OF w3html .
    DATA html_line TYPE w3html .
    DATA return_code TYPE w3param-ret_code.
    DATA content_type TYPE  w3param-cont_type.
    DATA content_length TYPE  w3param-cont_len.
    DATA pic_data TYPE STANDARD TABLE OF w3mime .

    query_line-name = '_OBJECT_ID'.
    query_line-value = name.
    APPEND query_line TO query_table.

    CALL FUNCTION 'WWW_GET_MIME_OBJECT'
      TABLES
        query_string        = query_table
        html                = html_table
        mime                = pic_data
      CHANGING
        return_code         = return_code
        content_type        = content_type
        content_length      = content_length
      EXCEPTIONS
        object_not_found    = 1
        parameter_not_found = 2
        OTHERS              = 3.

    CALL FUNCTION 'DP_CREATE_URL'
      EXPORTING
        type     = 'image'
        subtype  = cndp_sap_tab_unknown
        size     = content_length
        lifetime = cndp_lifetime_transaction
      TABLES
        data     = pic_data
      CHANGING
        url      = url
      EXCEPTIONS
        OTHERS   = 1.

  ENDMETHOD.
ENDCLASS.

INITIALIZATION.

  DATA(go_pic) = NEW cl_gui_picture(
                  parent = NEW cl_gui_docking_container(
                                 side  = cl_gui_docking_container=>dock_at_bottom
                                 ratio = 80 ) ).
  go_pic->load_picture_from_url( mime_picture=>get( 'ENJOYSAP_LOGO' ) ). 
  go_pic->set_display_mode( cl_gui_picture=>display_mode_fit ).

Obsoleter Baustein WWW_GET_MIME_OBJECT

Anstelle der beiden Funktionsbausteine WWW_GET_MIME_OBJECT (als obsolet gekennzeichnet) und DP_CREATE_URL kann auch der Funktionsbaustein DP_PUBLISH_WWW_URL verwendet werden. Das Coding wird hierdurch deutlich schlanker:

METHOD get.
    
    CALL FUNCTION 'DP_PUBLISH_WWW_URL'
      EXPORTING
        objid                 = conv W3OBJID( name )
        lifetime              = cndp_lifetime_transaction
      IMPORTING
        url                   = url
      EXCEPTIONS
        OTHERS                = 1.

  ENDMETHOD.
Enno Wulff