Druckansicht in SAP aus einem externen OMS erzeugen

Bei manchen SAP Anwendern werden SAP Formulare nicht mit den SAP-internen Formularwerkzeugen (SAP Script, Smart Forms, Adobe Forms) erzeugt, sondern die Formulargenerierung geschieht über ein externes Outputmanagement-System (OMS). Bei dem externen OMS kann es sich z.B. um die Produkte Jetforms, Formscape, Streamserve oder den TDS (Tentacle Document Server) handeln.

Werden SAP Formulare mit einem externen OMS erzeugt, so ist häufig die Druckbildansicht direkt in SAP nicht möglich. Man müsste in das externe OMS verzweigen, um die Druckbildansicht zu sehen. Ein typischer SAP Anwender hat jedoch keinen Zugang zum externen OMS und wünscht in vielen Fällen eine Druckbildansicht direkt in SAP, bevor das Formular gedruckt oder per Mail verschickt wird.

Szenario

Der SAP Anwender erzeugt die Formulare mit einem externen OMS, im expliziten Beispiel wurde ein TDS (Tentacle Document Server) über eine SAP PI an das SAP ERP angebunden. Die Rohdaten hierzu werden in einem SAP Script-Druckprogramm erzeugt. Das SAP Script-Formular ist so eingestellt, dass kein Formulardruck erfolgt, sondern die Rohdaten des Formulars als Idoc über die SAP PI an das externe OMS geschickt werden. Alternativ könnte auch ein RDI-Datenstrom im SAP Spool erzeugt werden, den sich dann das externe OMS abgreift.

Wünscht der SAP Anwender eine Druckbildansicht, so wird im Idoc ein Kennzeichen an das externe OMS mitgegeben, damit es eine PDF-Datei erstellt und als binäres Objekt in der SAP Datenbank ablegt. Die SAP-Anwendung wartet dabei so lange, bis die PDF-Datei gelesen werden und in einem HTML-Control im Sapgui angezeigt werden kann.

Umsetzen der Anforderung

Realisierung im Druckprogramm

Vor dem Aufruf des Funktionsbausteins OPEN_FORM wird im Falle einer Druckbildansicht eine eindeutige GUID erzeugt.

Direkt vor OPEN_FORM wird die GUID in das Feld ITCPO-TDCOVTITLE geschrieben.

Das Formular wird nun erzeugt, CLOSE_FORM wird prozessiert und das SAP Script-Formular geht als Idoc an das externe OMS.

Wenn die GUID gefüllt ist, dann druckt das externe OMS nicht das Formular, sondern reicht das PDF im Format BASE64 an die SAP PI weiter.

Die SAP PI ruft nun einen Proxy im ERP auf und übergibt die PDF-Datei in folgender Struktur.

SAP-Forms-Externes-OMS-Struktur-Proxy1

Im Feld Content vom Typ RAWSTRING befindet sich die PDF-Datei.

sap-forms-externes-oms-struktur-proxy2

In einem eigens entwickelten Funktionsbaustein Z_PI_SAVE_PDF_FROM_TDS erfolgt die Speicherung der PDF-Datei zur GUID in Tabelle ZTDS_PREVIEW. Der Funktionsbaustein Z_PI_SAVE_PDF_FROM_TDS wird in die Methode des Proxy im SAP ERP eingebunden.

SAP Forms Externes OMS-Struktur Tabelle PDF Daten

So sieht die PDF-Datei im Format BASE64 in der Datenbank aus (Transaktion SE16).

SAP Forms Externes OMS-Tabelleninhalt PDF Daten

Coding im Funktionsbaustein Z_PI_SAVE_PDF_FROM_TDS:

Das PDF liegt nun in der Tabelle und kann jetzt auf dem Bildschirm angezeigt werden.

Im FuBa CLOSE_FORM wurde direkt an das Ende ein Enhancement implementiert, wo dann das PDF in einem HTML-Control am Bildschirm angezeigt wird.

SAP Forms Externes OMS-Enhancement bei CLOSE_FORM

Coding im Enhancement am Ende des Funktionsbausteins CLOSE_FORM:

Der FuBa Z_FRM_PRINT_PREVIEW_FROM_TDS pollt jetzt insgesamt 10 x mit einer Verzögerung von 1 sec zur GUID auf die Tabelle ZTDS_PREVIEW und zeigt im Erfolgsfall das PDF in einem HTML-Control an. Wird nichts gefunden, wird nach 10 sec abgebrochen.

Coding im Funktionsbaustein Z_FRM_PRINT_PREVIEW_FROM_TDS:

sap-forms-externes-oms-enhancement-screen-painter

 

Weitere Informationen

Spezialthemen zu SAP Formularen

SAP Formulare zum Festpreis

SAP Formularentwicklung