Jeremia Girke
 - 24. April 2018

Unterdrückung vom Druckdialog in Smartforms

Druckdialog

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.

Unterdrückung vom Druckdialog

Erstellen Sie ein neues Formular

 

Legen Sie danach im Formular ein Textelement auf dem Hauptfenster an.

Unterdrückung vom Druckdialog

Legen Sie ein neues Textelement an

 

In dieses Textfeld können Sie nach Auswahl auf der rechten Seite einen einfachen Beispieltext eintragen.

Unterdrückung vom Druckdialog

Fügen Sie einen Beispieltext in das Textelement ein

Speichern und aktivieren Sie anschließend das Formular.

E-Book Smartforms

In diesem E-Book erfahren Sie mehr über die Smartforms-Funktionen, Stärken und Schwächen und erhalten Best Practices zur Einführung. 

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.
 
 DATAgv_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:

Unterdrückung vom Druckdialog

Druckdialog

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:

Unterdrückung vom Druckdialog

PDF mit 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.
 
 DATAgv_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_cparampreview ‚X‘ : Auswahl der Druckvorschau
  • gs_cparamno_dialog ‚X‘ : Unterdrückung vom Druckdialog
  • gs_outputtddest ‚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.

E-Book SAP Druckprogramme

In diesem E-Book erhalten Sie einen leicht verständlichen Einstieg in die Architektur, Funktionen und Wartbarkeit.

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.

Jeremia Girke

Seit 10 Jahren berate ich Unternehmen im Bereich Formulare und Outputmanagement im SAP und NON-SAP Umfeld.Profitieren Sie von meiner Erfahrung in Ihren Projekten.

Sie haben Fragen? Kontaktieren Sie mich!




Das könnte Sie auch interessieren


Schreiben Sie einen Kommentar

Bitte füllen Sie alle mit * gekennzeichneten Felder aus. Ihre E-Mail Adresse wird nicht veröffentlicht.





Angebot anfordern
Preisliste herunterladen
Expert Session
Support