Bilder aus dem MIME-Repository

Bilder aus dem MIME-Repository

Es stellt sich immer wieder die Frage, wo Bilder wie Logos, Grafiken und sonstige Bilder für die Formulare gespeichert werden sollen. Auch bei Adobe Forms Formularen stellen sich viele Entwickler diese Frage.

In SAPScript gab es hierzu die Transaktion SE78 in der Bitmaps gespeichert werden können. Dies ist allerdings nicht nur "outdated" sondern mittlerweile viel zu kompliziert was das Hochladen und Transportieren angeht und letztlich auch - aufgrund der eingeschränkten Dateiformate - viel zu groß (mehrere hundert kB aufwärts).

Doch seit der Einführung von SAPScript hat SAP viele weitere Möglichkeiten ins ERP eingebaut um Bilder zu speichern und abzurufen. Hier nutzen wir das von SAP mitgelieferte MIME-Repository und wechseln hierzu einfach in die SE80 um dort das MIME-Repository auszuwählen:

Einfach in Transaktion SE80 gehen und "MIME Repository" wählen

Sie sind in der SE80 und finden den Button MIME Repository nicht? Dann ist dieser ausgeblendet. Im Menü Hilfsmittel --> Einstellungen... können Sie diesen wieder einblenden:

Auswahlmöglichkeiten: Alles was ausgeählt ist findet sich dann auch in der SE80

Nachdem im MIME-Repository die Bilder hinterlegt sind müssen wir im Formular auch auf diese zugreifen können. Das Lesen der Datei wird in der Schnittstelle des Formulars durchgeführt. Aufbereitet wird die Bilddatei im Kontext mit dem Grafik-Knoten und im Adobe Lifecycle Designer kann dieser Knoten dann frei platziert werden.

Schnittstelle

Wir gehen also über die Transaktion SFP in die Schnittstelle und legen dort eine Variable in "Globale Daten" an. Diese Variable wird dann mit dem zulesenden Bild aus dem MIME-Repository gefüttert und an den Kontext übergeben:

GV_BILD vom Typ XSTRING

In "Coding Initialisierung" füttern wir nun die globale Variable mit dem Bild aus dem MIME-Repository. Hierzu einfach folgenden Code verwenden:


  DATA lo_mime  TYPE REF TO if_mr_api.
  DATA lv_url   TYPE csequence.
  
  lv_url  = '/sap/public/LOGO.gif'               "Pfad zur Bildatei
  lo_mime = cl_mime_repository_api=>get_api( ) .
  
  lo_mime->get( EXPORTING  i_url     = lv_url    
                IMPORTING  e_content = gv_bild
                           "e_mime_type = gv_mime_type 
              ). 

Bei lv_url muss natürlich der Pfad inklusive des Dateinamens hinterlegt werden den Sie ziehen wollen.
Ob Sie darüber hinaus noch weitere Steuerungen (anhand BUKRS, VKORG oder sonstige) einbauen ist natürlich Ihnen überlassen. Hier wollen wir nur ein konkretes Beispiel verwenden.
Neben e_content können Sie auch den tatsächlichen MIME-Typ anhand der Dateiendung mit übergeben lassen, dann muss dieser später nicht "hart" gesetzt werden.

Kontext

In der Variable GV_BILD ist nun das Bild hinterlegt, was wörtlich zu nehmen ist. Da GV_BILD vom Typ XSTRING ist beinhaltet die Variable tatsächlich das Bild. Diese Zeichenkette an Bilddaten muss im Kontext nun mit dem Bild-Knoten noch aufbereitet werden. Hierzu im Kontext an der gewünschten Stelle ein Rechts-Klick --> Anlegen --> Grafik auswählen:

Der Grafik-Knoten wird standardmäßig vom Grafiktyp als Grafikreferenz angelegt. Dieses ändern wir in Grafikinhalt.
Nun bekommen wir zwei neue Felder in denen wir unsere Variable GV_BILD als Feld übernehmen und in MIME-Typ 'image/gif' eintragen (inklusive den Hochkommatas!). Wahlweise können Sie aus dem Code oben sich auch den MIME-Typ als Variable übergeben lassen (wurde auskommentiert):

angelegter Grafik-Knoten vom Grafiktyp "Grafikinhalt"

Layout

Dieses angelegte GRAPHIC Objekt kann nun frei im Adobe Lifecycle Designer verwendet werden. Sollten Sie manuell die Verknüpfung herstellen, bitte ein Bildfeld nutzen und nicht Bild:

Nicht Bild sondern Bildfeld nutzen