Um das Drucken einer Liste während ihrer Erstellung programmgesteuert zu starten, verwenden Sie die Anweisung NEW-PAGE mit dem Zusatz PRINT ON:
NEW-PAGE PRINT ON
[NEW-SECTION]
[PARAMETERS
pripar]
[ARCHIVE
PARAMETERS arcpar]
[NO
DIALOG].
Diese Anweisung bewirkt, dass alle nachfolgenden Ausgaben auf einer neuen Seite plaziert werden und das System interpretiert alle folgenden Ausgabeanweisungen als Druckanweisungen.
Mit dem Zusatz NEW-SECTION setzen Sie die Seitenzählung (Systemfeld sy-pagno) auf 1 zurück. Die übrigen Zusätze dienen zur Festlegung der Druckparameter (siehe unten).
Falls die bis dahin erstellte Liste eine Bildschirmliste ist, wird sie zwischengespeichert. Ab der Anweisung NEW-PAGE PRINT ON erstellt das System die Liste nicht mehr für das Ausgabebild, sondern für das Spool-System.
Falls schon eine Liste für das Spool-System erstellt wird, und der Zusatz NEW-SECTIONnicht verwendet wird, wird kein neuer Spool-Auftrag erzeugt. Die angegebenen Druckparameter gelten erst für den folgenden Spool-Auftrag.
Falls schon eine Liste für das Spool-System erstellt wird, und der Zusatz NEW-SECTIONverwendet wird, gibt zwei Möglichkeiten:
· Falls die angegebenen Druckparameter mit denen der gerade erstellten Liste übereinstimmen und der Druckparameter PRNEW gleich SPACE ist, wird kein neuer Spool-Auftrag erzeugt.
· Falls die angegebenen Druckparameter nicht mit denen der gerade erstellten Liste übereinstimmen oder der Druckparameter PRNEW ungleich SPACE ist, wird der aktuelle Spool-Auftrag abgeschlossen und ein neuer Spool-Auftrag erzeugt.
Eine mit NEW-PAGE PRINT ON eingeleiteter Anweisungsblock sollte mit dem Zusatz PRINT OFF der Anweisung NEW-PAGE beendet werden.
NEW-PAGE PRINT OFF.
Diese Anweisung erzeugt einen Seitenvorschub und sendet die letzte Seite an das Spool-System.
Wenn die vorhergehende Liste eine Bildschirmliste war, wird sie vom Zwischenspeicher geholt und folgende Ausgabeanweisungen werden wieder in diese gestellt.
Wenn die vorhergehende Liste eine Druckliste war, wird ein neuer Spool-Auftrag erzeugt und folgende Ausgabeanweisungen werden wieder in eine neue Druckliste gestellt. Falls bei NEW-PAGE PRINT ON Druckparameter ohne den Zusatz NEW-SECTION angegeben wurden, gelten diese.
Die Anweisungsblöcke NEW-PAGE PRINT ON - NEW-PAGE PRINT OFF dürfen nicht geschachtelt werden und sollten innerhalb eines Verarbeitungblocks beendet werden.
Um die Druckparameter für das Drucken der Ausgaben nach der Anweisung NEW- PAGE PRINT ON festzulegen, verwenden Sie folgende Zusätze dieser Anweisung:
Die Druckparameter geben Sie mit dem Zusatz PARAMETERS und gegebenenfalls bei Archivierung dem Zusatz ARCHIVE PARAMETERS an. Die entsprechenden Argumente pripar und arcpar erstellen Sie mit den Exportparametern des Funktionsbausteins GET_PRINT_PARAMETERS. Dieser gewährleistet, dass die Druckparameter vollständig gesetzt werden und dass der Druckauftrag ausführbar ist. Da der Funktionsbaustein GET_PRINT_PARAMETERS über einen eigenen Benutzerdialog verfügt, sollten Sie dann in der Anweisung NEW-PAGE PRINT ON immer den Zusatz NO DIALOG verwenden.
REPORT demo_list_new_page_print_on NO STANDARD PAGE HEADING.
DATA: val(1) TYPE c,
pripar TYPE pri_params,
arcpar TYPE arc_params,
lay TYPE pri_params-paart,
lines TYPE pri_params-linct,
rows TYPE
pri_params-linsz.
CALL FUNCTION 'GET_PRINT_PARAMETERS'
IMPORTING
out_parameters
= pripar
out_archive_parameters
= arcpar
valid =
val
EXCEPTIONS
archive_info_not_found
= 1
invalid_print_params
= 2
invalid_archive_params
= 3
OTHERS
= 4.
IF val <> space AND sy-subrc = 0.
SET PF-STATUS 'PRINT'.
WRITE ' Select a format!'.
ENDIF.
TOP-OF-PAGE DURING LINE-SELECTION.
WRITE: 'Page', sy-pagno.
ULINE.
AT USER-COMMAND.
CASE sy-ucomm.
WHEN 'PORT'.
lay = 'X_65_80'.
lines = 60.
rows = 55.
PERFORM format.
WHEN 'LAND'.
lay = 'X_65_132'.
lines = 60.
rows = 110.
PERFORM format.
ENDCASE.
FORM format.
CALL FUNCTION 'GET_PRINT_PARAMETERS'
EXPORTING
in_archive_parameters =
arcpar
in_parameters =
pripar
layout
= lay
line_count
= lines
line_size =
rows
no_dialog =
'X'
IMPORTING
out_archive_parameters
= arcpar
out_parameters
= pripar
valid =
val
EXCEPTIONS
archive_info_not_found
= 1
invalid_print_params
= 2
invalid_archive_params
= 3
OTHERS
= 4.
IF val <> space AND sy-subrc = 0.
PERFORM list.
ENDIF.
ENDFORM.
FORM list.
NEW-PAGE PRINT ON
NEW-SECTION
PARAMETERS pripar
ARCHIVE PARAMETERS arcpar
NO DIALOG.
DO 440 TIMES.
WRITE (3) sy-index.
ENDDO.
NEW-PAGE PRINT OFF.
ENDFORM.
Dieses Programm ruft gleich nach dem Start den Funktionsbaustein GET_PRINT_PARAMETERS auf. Es werden keine Importparameter übergeben. Der Benutzer kann auf dem Druckparameter-Selektionsbild die Druck- und Archivierungsparameter für dieses Programm eingeben. Diese Parameter werden über die Exportparameter an die Feldleisten pripar und arcpar übergeben. Das Führen des Benutzerdialogs über das Dialogfenster und die Abfrage des Rückgabewerts valid garantieren die Vollständigkeit und Konsistenz der Parameter.
Nach dem Abschluss des Dialogs erscheint folgende Grundliste:
Im Status PRINT der Grundliste belegen die Funktionscodes PORT und LAND die Funktionstasten F5 und F6, sowie zwei Tasten in der Drucktastenleiste. Wählt der Benutzer eine dieser Funktionen, werden beim Ereignis AT USER-COMMAND den Variablen lay, lines und rows die Werte für ein hochformatiges bzw. querformatiges Ausgabeformat zugewiesen und das Unterprogramm format aufgerufen.
Das Unterprogramm format ruft den Funktionsbaustein GET_PRINT_PARAMETERS auf. Bei diesem Aufruf werden die vorher festgelegten Parameter pripar und arcpar als Importparameter übergeben. Den Importparametern layout, line_count und line_size werden die Werte in lay, lines und rows zugewiesen. Es wird kein Benutzerdialog geführt. Die Parameter werden wieder in die Feldleisten pripar und arcpar zurückgestellt. Der Aufruf bewirkt also, dass die Komponenten PAART, LINCT und LINSZ der Struktur pripar neu gesetzt werden.
Nach der Überprüfung der Vollständigkeit und Konsistenz wird das Unterprogramm list aufgerufen. Diese Unterprogramm sendet eine Liste über NEW-PAGE PRINT ON an das Spool-System, wobei die Druck- und Archivierungsparameter durch pripar und arcpar bestimmt werden. Es ist keine Benutzerdialog nötig, da alle notwendigen Einstellungen durch GET_PRINT_PARAMETERS vorgenommen wurden.
Über System →Dienste → Druckaufträge, kann der Benutzer sich die abgespeicherten Spool-Aufträge anzeigen lassen. Nach der Auswahl von PORTRAIT sieht der Spool-Auftrag wie folgt aus:
Nach der Auswahl von LANDSCAPE sieht der Spool-Auftrag dagegen so aus: