Unterdrückung vom Druckdialog in Smartforms
In einigen Anwendungen kann die Unterdrückung vom Druckdialog im Druckprozess sinnvoll sein. Wenn Sie zum Beispiel nicht wollen, dass der Benutzer hier Eingaben verändern kann oder wenn sie einfach Zeit sparen wollen und in diesem Beitrag zeigen wir Ihnen wie es funktioniert.
Der Aspekt der Zeitersparnis ist auch für Entwickler interessant, die die Formulare häufig testen und sich so durch eine kleine Anpassung des Druckprogramms einen zusätzlichen Klick und damit wertvolle Entwicklungszeit sparen können. Es folgt nun eine Schritt für Schritt Anleitung, wie das Druckfenster zu unterbinden ist:
Schritt 1: Erstellen eines Smartforms Formulars
Als erstes müssen Sie ein Formular zum Ausgeben erstellen. Dazu gehen Sie in die Transaktion SMARTFORMS und legen ein neues Formular an.
Legen Sie danach im Formular ein Textelement auf dem Hauptfenster an.
In dieses Textfeld können Sie nach Auswahl auf der rechten Seite einen einfachen Beispieltext eintragen.
Speichern und aktivieren Sie anschließend das Formular.
Schritt 2: Erstellen des Druckprogramms
Nachdem nun das anzuzeigende Formular erstellt wurde, muss die Ausgabe noch über das Druckprogramm gesteuert werden. Dafür gehen Sie in die Transaktion SE38 und erstellen ein neues Programm.
In diesem Programm muss nun die Druckausgabe stattfinden. Dazu muss der Funktionsbaustein des Formulars aufgerufen werden. Um aus dem Namen des Formulars den Namen des dazugehörigen Funktionsbaustein zu erfahren, gibt es einen Funktionsbaustein mit dem Namen SSF_FUNTION_MODULE_NAME, der zuvor aufgerufen werden muss. Nehmen wir das alles zusammen, so erhalten wir folgendes Druckprogramm:
REPORT ZMMA_PRINT_SMARTFORM_SF. DATA: gv_funcname TYPE RS38L_FNAM. ********************************************************************** *** Get function name ********************************************************************** CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = 'ZMMA_SMARTFORM' IMPORTING FM_NAME = gv_funcname EXCEPTIONS NO_FORM = 1 NO_FUNCTION_MODULE = 2 . ********************************************************************** *** Print function ********************************************************************** CALL FUNCTION gv_funcname EXCEPTIONS FORMATTING_ERROR = 1 INTERNAL_ERROR = 2 SEND_ERROR = 3 USER_CANCELED = 4 .
Speichern, aktivieren und führen wir nun dieses Programm aus, so erhalten wir folgendes Popup-Fenster:
Dieses Fenster wollen wir jedoch unterdrücken. Dazu muss das Druckprogramm angepasst werden. Klicken Sie nun auf Druckansicht, so sehen Sie das zuvor erstellte Formular mit dem Beispieltext:
Schritt 3: Anpassung des Druckprogramms
Der Code des Druckprogramms muss nun angepasst werden, um das Druckfenster zu unterdrücken. Dazu stellt SAP zwei Strukturen bereit über die wir diese Optionen steuern können. Diese Strukturen müssen dem Aufruf des Funktionsbaustein mitgegeben werden. Das fertige Druckprogramm sieht dann folgendermaßen aus:
REPORT ZMMA_PRINT_SMARTFORM_SF. DATA: gv_funcname TYPE RS38L_FNAM, gs_cparam TYPE ssfctrlop, gs_output TYPE ssfcompop. ********************************************************************** *** Set preview true, supress dialogue and set print destination ********************************************************************** gs_cparam-preview = 'X'. gs_cparam-no_dialog = 'X'. gs_output-tddest = 'LOCL'. ********************************************************************** *** Get function name ********************************************************************** CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = 'ZMMA_SMARTFORM' IMPORTING FM_NAME = gv_funcname EXCEPTIONS NO_FORM = 1 NO_FUNCTION_MODULE = 2 . ********************************************************************** *** Print function ********************************************************************** CALL FUNCTION gv_funcname EXPORTING CONTROL_PARAMETERS = gs_cparam OUTPUT_OPTIONS = gs_output USER_SETTINGS = '' EXCEPTIONS FORMATTING_ERROR = 1 INTERNAL_ERROR = 2 SEND_ERROR = 3 USER_CANCELED = 4 .
Dabei haben die drei Parameter folgende Bedeutung:
- gs_cparam–preview = ‘X’ : Auswahl der Druckvorschau
- gs_cparam–no_dialog = ‘X’ : Unterdrückung vom Druckdialog
- gs_output–tddest = ‘LOCL’ : Auswahl des Ausgabegeräts
Nachdem diese Parameter gesetzt sind, müssen die Strukturen noch an den Druckfunktionsbaustein übergeben werden. Dafür gibt es die EXPORTING-Variablen CONTROL_PARAMETERS und OUTPUT_OPTIONS. Wie Sie das genau übergeben müssen, sehen Sie oben im Text.
SAPscript & Smart Forms
Ist SAPscript und/oder Smart Forms überhaupt noch der richtige Weg? Erfahren Sie hier alles zum Thema und profitieren Sie von unseren Erfahrungen.
Speichern und aktivieren Sie nun das Programm. Wenn Sie es nun erneut ausführen, sehen Sie die Unterdrückung vom Druckdialog und direkt die PDF-Ausgabe und den Beispieltext. So können Sie mit nur wenig Zeilen Code die Unterdrückung vom Druckdialog einstellen und sparen einiges an Zeit beim Testen Ihrer Formulare.
Haben Sie Fragen zum Code oder Anregungen? Zögern Sie nicht und schreiben Ihre Fragen in die Kommentare.