Transaktion SFP - Formularvorlage als Hintergrundbild einbinden per MIME-Repository
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
Größe ändern in Symbolleiste
Z. B. das Größenverhältnis 95% einstellen
Kontrolle der Größe
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.
Ordner anlegen im MIME-Repository
- Ein Ordner kann im MIME-Repository angelegt werden über das Kontextmenü des übergeordneten Ordners "Anlegen - Ordner".
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"
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.
Die Datei steht nun im MIME-Repository zur Verfügung.
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.
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.
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
Exportschnittstelle
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
- Feld "A_TR-FORMVORLAGE-FORMVORL_BIN"
- MIME-Typ "A_TR-FORMVORLAGE-FORMVORL_TYPE"
- Die Grafik mit dem Namen FORMULARVORLAGE wurde im Kontext per Kontextmenü hinzufügt
- Der Grafiktyp wird auf "Grafikinhalt" umgestellt
Grafik im Layout (Adobe LiveCycle Designer) hinzufügen
Ein Bildfeld wird auf der Masterseite hinzugefügt. Hier auch mit dem Namen FORMULARVORLAGE.
Das neue Feld hat den Typ "Bildfeld".
Das neue Feld wird an das Feld "Formularvorlage" im Kontext gebindet.
- 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
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".
Ausgabe Formular in der Preview mit Formularvorlage
Das Ergebnis der ganzen Mühe sieht man beim Druck auf die Schaltfläche "Druckansicht"
Die Formularvorlage wird angezeigt und auf die Formularvorlage werden die Datenfelder projiziert (Empfänger wurde ausgeschnitten im Screenshot).