Transaktion SFP - Formularvorlage als Hintergrundbild einbinden per MIME-Repository

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

Bei manchen Formularen wird auf eine Formularvorlage/Druckvorlage gedruckt, die in den Drucker, bzw. in einen bestimmten Schacht des Druckers gelegt wird. Das ist dann beim Ausdruck auch kein Problem. Wenn allerdings das Formular in der Vorschau angezeigt wird, ist logischerweise das Formular zunächst nur ohne Formularvorlage zu sehen. Hier möchten manche Kunden in der Druckvorschau die Daten inklusive der Formularvorlage sehen.

Es ist möglich die Formularvorlagen einzuscannen, in SAP abzulegen und in SAP bei der Druckvorschau inklusive der Daten anzuzeigen und dann beim Druck auf den Drucker ohne Formularvorlage auszugeben.

Scannen Formularvorlagen

  • Die Formularvorlagen sind im DIN-A4-Format einzulesen, sofern das Formular auch als DIN-A4 ausgegeben wird.
  • Die Datei kann z. B. im Grafikformat JPG gespeichert werden.


Grafikdateien kleiner skalieren

Es kann Probleme geben, wenn im Adobe LiveCycle Designer die Formularvorlage auf die komplette Breite einer DIN-A4-Vorlage ausgegeben wird. Hier hilft die Skalierung innerhalb vom Adobe LiveCycle Designer auch nicht zuverlässig weiter. Es ist hier besser die gescannte Grafikdatei in einem Bildbearbeitungsprogramm kleiner zu machen. Hier reicht z. B. das Grafikprogramm "Paint" unter Windows 7, welches unter Windows als Standardzubehör vorhanden ist.

Anzeige der Grafik in Paint

Paint1.jpg


Größe ändern in Symbolleiste

Paint4.jpg


Z. B. das Größenverhältnis 95% einstellen

Paint5.jpg


Kontrolle der Größe

Paint2.jpg

Paint3.jpg

Einlesen Grafikdatei in MIME-Repository

In der Transaktion SE80 kann die Grafikdatei/Formularvorlage eingelesen werden als Datei in das MIME-Repository.

SE80 aufrufen mit MIME-Repository in Transaktion SE80

  • Hier wurde die SE80 aufgerufen und auf die Schaltfläche MIME-Repository geklickt.

Formularvorlagen1.jpg

Ordner anlegen im MIME-Repository

  • Ein Ordner kann im MIME-Repository angelegt werden über das Kontextmenü des übergeordneten Ordners "Anlegen - Ordner".

Formularvorlagen2.jpg

Hochladen der Datei ins MIME-Repository

  • Die Grafik-Datei wird hochgeladen ebenfalls über das Kontextmenü. In diesem Fall vom Ordner "PDF_FORMULARE". Hier wählt man "Importieren MIME-Objekte"

Formularvorlagen3.jpg


Man navigiert zum gewünschten Ordner auf der Festplatte, markiert die Datei und drückt auf "Öffnen". Die Datei wird nun ins MIME-Repository hochgeladen.

Formularvorlagen4.jpg


Die Datei steht nun im MIME-Repository zur Verfügung.

Formularvorlagen5.jpg

Erweitern Übergabestruktur an Formular

In der Übergabestruktur wird ein neues strukturiertes Feld FORMVORLAGE hinzugefügt. Dieses Feld typisiert hier auf die Struktur /XXX/SD_FORMVORLAGE.

Formularvorlagen6.jpg

Die Struktur /XXX/SD_FORMVORLAGE hat drei Felder.

  • 1. Das Feld FORMVORL_URL enthält den URL-Pfad zum MIME-Repository (CHAR Länge 132). Dieses Feld wird im Formular nicht mehr benötigt, dient aber zu Informationszwecken für den Entwickler.

Für die Ausgabe der Grafikdatei nötig sind die Felder

  • 2. FORMVORL_BIN vom Typ RAWSTRING mit der Länge 1024 mit dem Inhalt der Grafikdatei
  • 3. Feld FORMVORL_TYPE vom Typ STRING. Hier steht der Grafiktyp der Datei.

Formularvorlagen7.jpg

Einlesen MIME-Repository-Datei als Grafikinhalt

Aufrufen Funktionsbaustein im Druckrahmenprogramm

  • Übergebe Pfad zum MIME-Repository
  pvs_a_tr-formvorlage-FORMVORL_URL = '/sap/public/pdf_formulare/ATR.jpg'.
  • Hier soll die Druckvorlage nur bei der Preview angezeigt werden. Da beim Druck die Druckvorlage im Drucker liegt.
 CALL FUNCTION 'FP_JOB_OPEN'
   CHANGING
     ie_outputparams = ls_outputpar
   EXCEPTIONS
     cancel          = 1
     usage_error     = 2
     system_error    = 3
     internal_error  = 4
     OTHERS          = 5.
 IF sy-subrc <> 0.
   MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
           WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
   pv_retcode = sy-subrc.
 ENDIF.

  • Im Parameter "ls_outputpar-preview" steht ein 'X', sofern Druckvorschau ausgewählt wurde
  • Beim Fax (Nachrichtenmedium = 2) und Mail (Nachrichtenmedium = 5) soll auch Hintergrundbild angezeigt werden
 IF ls_outputpar-preview = 'X' or
    nast-nacha = '2' or "Fax
    nast-nacha = '5'.   "Mail versenden.
   ...
 endif.
  • Pfad zum MIME-Repository wird einem Funktionsbaustein '/XXX/SD_GET_FORMVORLAGE' übergeben. Ein Funktionsbaustein (oder eine Methode) sollte verwendet werden, damit von verschiedenen Formularen mit Formularvorlagen die Funktionalität genutzt werden kann.
  • Lesen Grafikstrom für Formularvorlage
CALL FUNCTION '/XXX/SD_GET_FORMVORLAGE'
  EXPORTING
    iv_url         = ps_a_tr-formvorlage-formvorl_url
  IMPORTING
    es_formvorlage = ps_a_tr-formvorlage.

Funktionsbaustein zum Lesen Grafikinhalt der Formularvorlage

Importschnittstelle

Formularvorlagen8.jpg

Exportschnittstelle

Formularvorlagen9.jpg

Coding

 DATA: lr_api       TYPE REF TO if_mr_api,
       lv_content   TYPE xstring,
       lv_mime_type TYPE string.

 lr_api = cl_mime_repository_api=>get_api( ).

 CLEAR lv_mime_type.
 CLEAR lv_content.

* Füllen Datenstrom für Formularvorlage
  lr_api->get( EXPORTING
                 i_url = iv_url
               IMPORTING
                 e_content   = lv_content
                 e_mime_type = lv_mime_type ).

* Exportstruktur wird gefüllt
  es_formvorlage-formvorl_url  = iv_url.
  es_formvorlage-formvorl_bin  = lv_content.
  es_formvorlage-formvorl_type = lv_mime_type.

Transaktion SFP

Grafik im Kontext hinzufügen

  • Die Grafik wurde hier hinzugefügt mit dem Namen FORMULARVORLAGE. Der Feldinhalt wird versorgt mit den Schnittstellenfeldern
  1. Feld "A_TR-FORMVORLAGE-FORMVORL_BIN"
  2. MIME-Typ "A_TR-FORMVORLAGE-FORMVORL_TYPE"

Formularvorlagen10.jpg

  • Die Grafik mit dem Namen FORMULARVORLAGE wurde im Kontext per Kontextmenü hinzufügt

Formularvorlagen11.jpg

  • Der Grafiktyp wird auf "Grafikinhalt" umgestellt

Formularvorlagen12.jpg


Grafik im Layout (Adobe LiveCycle Designer) hinzufügen

Ein Bildfeld wird auf der Masterseite hinzugefügt. Hier auch mit dem Namen FORMULARVORLAGE.

Formularvorlagen16.jpg

Das neue Feld hat den Typ "Bildfeld".

Formularvorlagen13.jpg

Das neue Feld wird an das Feld "Formularvorlage" im Kontext gebindet.

Formularvorlagen14.jpg

  • Unter dem Reiter Layout wird die Formularvorlage fast über die gesamte DIN-A4-Seite abgebildet. Da es einen nichtdruckbaren Bereich gibt, werden hier 0,7 cm von links (X) und 0,8 cm von oben (Y) Platz vom Seitenrand eingestellt. Entsprechend muss dann die Seitenhöhe und Seitenbreite etwas verringert werden. Hier muss man im Projekt bei den jeweiligen Druckern eventuell etwas testen, um die optimalen Seitenabstände zu finden.
  • Die Beschriftung des Feldes wird leer gelassen

Formularvorlagen15.jpg


Wichtig ist noch das Bildfeld in den "Hintergrund" zu setzen, damit die Grafik nicht die Datenfelder überdeckt, sondern die Datenfelder über der Formularvorlage abgebildet werden. Hierzu markiert man unter dem Reiter "Masterseite" das Feld FORMULARVORLAGE und wählt dann im Kontextmenü "In den Hintergrund".

Formularvorlagen17.jpg

Ausgabe Formular in der Preview mit Formularvorlage

Das Ergebnis der ganzen Mühe sieht man beim Druck auf die Schaltfläche "Druckansicht"

Formularvorlagen18.jpg


Die Formularvorlage wird angezeigt und auf die Formularvorlage werden die Datenfelder projiziert (Empfänger wurde ausgeschnitten im Screenshot).

Formularvorlagen19.jpg