Form Stamp for SAP (OTF-Stempelung)

Form Stamp for SAP (OTF-Stempelung)
Ziel ist es, Formularausgaben im SAP mit Wasserzeichen oder Stempel zu kennzeichnen. Die vorliegende
Lösung leistet dies bei den Formulartechniken SAPscript und Smart Forms, die beide Ausgaben im OTFFormat liefern können. Auf diese OTF-Daten können entsprechende Informationen aufgebracht werden.
Bei SAP wird mit Adobe Document Services (ADS, SIFbA) eine weitere Formulartechnik verwendet. Diese
verwendet kein OTF und kann daher auch von einer OTF-Stempelung nicht betroffen sein.
Die OTF-Stempelung geschieht rein im SAP-System. Es ist keine externe Lösung erforderlich.
Die Objekte der OTF-Stempelung sind in der Entwicklungsklasse /SEAL/FRM_ST zusammengefasst und
werden mit einem Transport ausgeliefert. Zum Funktionieren ist das Modul Core Basis ab Version 1.3.2
erforderlich, sowie die Möglichkeit im Zielsystem Erweiterungen/Enhancements auch in "Objekten der
zentralen [SAP]Basis" vorzunehmen (in neueren SAP-Releases ist das der Fall). Die notwendigen
Erweiterungen sind nicht im ausgelieferten Transport enthalten.
Aufgestempelt werden können nur Bitmaps als Wasserzeichen. Diese müssen zuvor mit der Transaktion
SE78 im SAP-Zielsystem angelegt worden sein.
Das Aufstempeln von Texten ist nicht freigegeben und darf nicht produktiv eingesetzt werden.
Nach Einspielen des Transports können die Konfigurationen zur OTF-Stempelung mit der Transaktion
/SEAL/FRM_ST_IMG aufgerufen werden.
SEAL Systems; Winfried Gerum-Nees
f:\plossys\doku\sap\formstamp4sap\formstamp4sap_tec_de.docx
19.10.2015
1/5
Die Bitmaps können nach Benutzergruppe, Formularname, Sprache, zu stempelnde Seite, Stempelposition
festgelegt werden.
Je Seite kann es nur eine Hintergrundgraphik geben. Wenn schon eine vorhanden ist, wird diese entfernt.
Vordergrundgraphiken kann es mehrere geben. Über die Zahl "Stempelreihenfolge" kann bei diesen
festgelegt werden, in welcher Reihenfolge sie aufgebracht werden. Bei den Hintergrundgraphiken kann
noch unterschieden werden, ob diese generell oder nur für die Vorschau gelten.
Die Schlüsselfelder in der Konfiguration können jeweils auch leer bleiben. Solche Konfigurationseinträge
gelten dann, wenn zu einem gegebenen Wert eines Schlüsselfelds kein Konfigurationseintrag existiert.
Man kann also ausgewählte oder auch alle Formulare stempeln.
Wird bei der Konfiguration eine Sprache angegeben, so ist dies die Anmeldesprache des Anwenders, wenn
im Einzelfall nicht eine andere Sprache über einen Aufruf des Funktionsbausteins
/SEAL/FRM_ST_STP_LANGU_SET vorgegeben wird.
"Textname" ist der Name den das Bitmap beim Anlegen in der Transaktion SE78 erhalten hat.
Soll das Stempeln für gewählten Schlüssel durchgeführt werden, so muss das entsprechende Kennzeichen
„Stempeln durchführen“ gesetzt sein. Damit kann eine Stempelung deaktiviert werden, ohne den
Konfigurationseintrag zu löschen. Weiterhin kann das genutzt werden, um bei einer Stempelung aller
Formulare einzelne von der Stempelung auszunehmen. Gleichbedeutend mit dem Deaktivieren ist auch,
wenn bei "Textname" keine Eingabe erfolgt oder wenn dort ein nicht existierendes Bitmap konfiguriert ist.
Die Aktionen im Funktionsbaustein /SEAL/FRM_ST_STP_STAMP können protokolliert werden. Hierzu muss
die gewünschte Protokollierung konfiguriert sein. Da die OTF-Stempelung kein eigenes Datenbank-Commit
enthält, kann es vorkommen, dass ein Protokolleintrag nicht verbucht wird.
2/5
f:\plossys\doku\sap\formstamp4sap\formstamp4sap_tec_de.docx
19.10.2015
SEAL Systems; Winfried Gerum-Nees
Die Protokollierung kann für SAPscript und Smart Forms getrennt eingestellt werden.
Integration
Aktivierung der Stempelung nur beim Drucken
Damit die OTF-Stempelung auch aufgerufen wird, ist an geeigneten Stellen eine Erweiterung
("Enhancement") erforderlich.
Für SAPscript ist am Ende des Funktionsbausteins CLOSE_FORM folgendes einzufügen:
CALL FUNCTION '/SEAL/FRM_ST_STP_STAMP'
TABLES
t_otf = otfdata.
Für Smart Forms ist am Ende der Formroutine CONV_STRUC_OTF_TO_PLAIN_OTF folgendes einzufügen:
CALL FUNCTION '/SEAL/FRM_ST_STP_STAMP'
TABLES
t_otf = p_plain_otf.
SEAL Systems; Winfried Gerum-Nees
f:\plossys\doku\sap\formstamp4sap\formstamp4sap_tec_de.docx
19.10.2015
3/5
Aktivierung der Stempelung beim Preview
Sofern nur bei der Anzeige ein Stempel aufgebracht werden soll, kann dies durch Enhancement zum Beginn
des Funktionsbausteins DISPLAY_OTF erreicht werden:
CALL FUNCTION
EXPORTING
i_compact
TABLES
t_otf
CHANGING
c_control
'/SEAL/FRM_ST_STP_STAMP'
= ' '
= otf
= control.
Erweiterte Funktionen
Sofern zur Auswertung der Konfiguration eine andere Sprache als die Anmeldesprache verwendet werden
soll, ist an geeigneter Stelle eine Erweiterung um folgenden Aufruf einzubauen
CALL FUNCTION '/SEAL/FRM_ST_STP_LANGU_SET'
EXPORTING
i_spras = 'F'.
('F' ist hier beispielhaft zu sehen.)
Sofern in einem gegebenen Kontext die Stempelung unterdrückt werden soll, ist an geeigneter Stelle eine
Erweiterung um folgenden Aufruf einzubauen:
CALL FUNCTION '/SEAL/FRM_ST_STP_NOSTAMP_SET'.
oder gleichbedeutend:
CALL FUNCTION '/SEAL/FRM_ST_STP_NOSTAMP_SET'
EXPORTING
i_nostamp = 'X'.
Mit dem folgenden Code wird der Stempelmechanismus im aktuellen Kontext wieder eingeschaltet:
CALL FUNCTION '/SEAL/FRM_ST_STP_NOSTAMP_SET'
EXPORTING
i_nostamp = ' '.
Für die Bestellungen soll gelten: Im Produktivsystem sollen Bestellungen mit Freigabekennzeichen nicht
gestempelt werden. Andere Bestellungen sollen stets gestempelt werden.
Hierfür wird zu Beginn des Funktionsbausteines ME_PRINT_PO eingefügt
IF EKKO-FRGKE EQ '1' AND ',CH2,CH3,' NS SYST-SYSID.
CALL FUNCTION '/SEAL/FRM_ST_STP_NOSTAMP_SET'.
ENDIF.
Und am Ende des Funktionsbausteines
CALL FUNCTION '/SEAL/FRM_ST_STP_NOSTAMP_SET'
EXPORTING
I_NOSTAMP = ' '.
Performance und Datenmengen
Ich habe mit Powerpoint eine Seite erstellt, die nur den Schriftzug „SEAL Systems AG Test-Ausdruck“ in rot
diagonal auf DINA4 angepasst enthält und daraus eine Bitmap (*.bmp) Datei erstellt. Diese hat
unkomprimiert die stattliche Größe von 748.986 Byte. Dabei beträgt Breite 720Pixel, die Höhe 1040Pixel
und die Farbtiefe 8 Bit. Mit RLE-Komprimierung sind es noch 27kB.
Das unkomprimierte bmp habe ich im W74 unter der Bezeichnung ZSEAL_TEST_AUSDRUCK als Farbgrafik
importiert.
Sodann habe ich zwei Testformulare mit unterschiedlichen Einstellungen erstellt und die Dateigrößen sowie
den Zeitbedarf festgehalten.
Die Ergebnisse:
W74, Formular (ZSEP_INTERN_RPRB) mit drei Seiten:
4/5
19.10.2015
f:\plossys\doku\sap\formstamp4sap\formstamp4sap_tec_de.docx
SEAL Systems; Winfried Gerum-Nees
Ohne Stempel: Zusätzliche Zeit zum Aufruf der Funktion zur Stempelung, Prüfen der Konfiguration:
6,9ms Dateigröße 28.361 Byte
Mit einem Stempel (Wasserzeichen) je Seite. Wiederholung des Bitmap pro Seite.
Zeit 39,6ms Dateigröße 203.210 Byte
Desgleichen, aber Wiederholungs-Wasserzeichen per Referenz
Zeit 37,4ms Dateigröße 86.798 Byte
W74, Formular (MEDRUCK) mit einer Seite:
Ohne Stempel: Zusätzliche Zeit zum Aufruf der Funktion zur Stempelung, Prüfen der Konfiguration: 6,8ms
Dateigröße 3.474 Byte
Mit einem Stempel (Wasserzeichen)
Zeit 26,3ms Dateigröße 61.757 Byte
Gemessen wurde hier der zusätzliche Zeitbedarf, nicht der in Vergleich dazu vielleicht auch interessierende
Gesamtbedarf.
Erstaunlich ist, dass, obwohl die Bitmap-Graphik mit 748kB sehr groß ist, diese im OTF nur ca. 58kB
beansprucht. Auch wenn keine Stempelung erfolgt, entsteht ein gewisser Aufwand durch Aufruf der
Funktion und Lesen der Konfiguration. Mit 7ms ist das vernachlässigbar.
Bei Durchführung einer Stempelung sind entstehen weitere Aufwände in der Größen-Ordnung 20-34ms bei
den hier betrachteten Formularen.
Anmerkung: Die OTF-Dateien mit Wasserzeichen werden vom sap2pdf wie erwartet verarbeitet.
Der Funktionsbaustein CONVERT_OTF von SAP gibt die Wasserzeichen nicht immer als erstes aus. Bei
farbigen BMP werden teilweise Linien von Boxen durch das Bitmap-Bild überdeckt, nicht jedoch bei
schwarz-weiß BMPs. Weiterhin werden Bitmaps, die in einer Referenz bestehen, ignoriert
SEAL Systems; Winfried Gerum-Nees
f:\plossys\doku\sap\formstamp4sap\formstamp4sap_tec_de.docx
19.10.2015
5/5