!--a11y-->

一覧の登録中にプログラム内から印刷プロセスを開始するには、NEW-PAGE 命令と PRINT ON オプションを使用します。
NEW-PAGE PRINT ON [NEW-SECTION]
[<params> | PARAMETERS <pripar>]
[ARCHIVE PARAMETERS <arcpar>]
[NO DIALOG].
この命令により、後続の出力すべてが新規ページに配置され、NEW-PAGE PRINT ON 以降の出力命令すべてが印刷命令として解釈されます。
NEW-SECTION オプションを使用する場合は、ページ数 (SY-PAGNO システム項目) を 1 にリセットします。その他のオプションにより、印刷パラメータが決定されます ( 以下を参照してください) 。
この時点で登録された一覧が画面リストの場合、バッファに入れられます。NEW-PAGE PRINT ON から、表示用ではなくスプールシステムに対して一覧が登録されます。
スプールシステムに対する一覧がすでに登録されていて、NEW-SECTION オプションが使用されない場合には、新規スプール依頼は登録されません。指定された印刷パラメータは、後続のスプール依頼にのみ適用されます。
スプールシステムに対する一覧がすでに登録されていて、NEW-SECTION オプションが使用される場合には、2 つの可能性があります。
キ 指定された印刷パラメータが現在の一覧のパラメータに一致し、印刷パラメータ PRNEW が SPACE に等しい場合には、新規スプール依頼は登録されません。
キ 指定された印刷パラメータが現在の一覧のパラメータに一致せず、印刷パラメータ PRNEW が SPACE と同じでない場合には、現在のスプール依頼がクローズし、新規スプール依頼が登録されます。
NEW-PAGE PRINT ON で始まる命令ブロックは、NEW-PAGE 命令の PRINT OFF オプションで終了する必要があります。
NEW-PAGE PRINT OFF.
この命令は、改ページを登録し、最終ページをスプールシステムに送信します。
前の一覧が画面リストだった場合は、バッファからリトリーブされ、次の出力命令が再挿入されます。
前の一覧が印刷リストだった場合は、新規スプール依頼が登録され、次の出力命令が印刷リストに再挿入されます。印刷パラメータがNEW-PAGE PRINT ON に対して NEW-SECTION オプションなしで指定された場合、これらのパラメータが適用されます。
命令ブロック NEW-PAGE PRINT ON - NEW-PAGE PRINT OFF はネストしてはならず、前のブロック内で完了する必要があります。
印刷される出力に対する印刷パラメータを設定するには、NEW- PAGE PRINT ON 命令の後にこの命令のオプションを使用します。
複数のオプション <params> を使用して、各印刷パラメータを指定することができます (DESTINATION <dest> など) 。キーワード文書で各オプションが説明されています。NO DIALOG オプションを使用すると、印刷リスト出力ダイアログボックスを表示するか非表示にするかをシステムに指示することができます。この印刷パラメータの設定方法では、指定されたパラメータの完全性がチェックされないという不利な点があります。不完全な印刷パラメータは、 印刷リスト出力ダイアログボックスを使用する場合にのみ検出することができます。ただし、バックグラウンドジョブでは検出できません。印刷パラメータが不完全で NO DIALOG オプションを使用している場合は、構文チェックの後に警告が送信されますが、処理は中止されません。このため、プログラムの実行中に予想外の結果が生じる可能性があります。
そのため、SAP は<params> オプションを使用しないようにお奨めします。その代わりに PARAMETERS オプション、および必要であれば ARCHIVE PARAMETERS オプションを使用してください。対応する引数 <pripar> と <arcpar> を登録するには、汎用モジュール GET_PRINT_PARAMETERS のエクスポートパラメータを使用します。これが、印刷パラメータと実行可能印刷依頼の完全なセットを確認する唯一の方法です。汎用モジュールGET_PRINT_PARAMETERS には独自のユーザダイアログがあるため、常にNEW-PAGE PRINT ON 命令で NO DIALOG オプションを使用してください。

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.
このプログラムは、インポートパラメータを渡すことなく汎用モジュール GET_PRINT_PARAMETERS を即座に呼び出します。インポートパラメータは転送されません。印刷リスト出力ダイアログボックスで、ユーザはこのプログラムに対する印刷パラメータとアーカイブパラメータを入力することができます。汎用モジュールのエクスポートパラメータを使用して、これらのパラメータが構造 PRIPAR および ARCPAR に渡されます。パラメータの完全性と整合性を確認するために、プログラムはユーザダイアログを実行して VALID の戻り値をチェックします。
ダイアログを完了した後、以下の基本一覧が表示されます。

基本一覧のステータス PRINT で、機能コード PORT と LAND が機能キー F5 と F6 、およびアプリケーションツールバーの 2 つの押ボタンに割り当てられます。ユーザがこれらの機能のいずれかを選択すると、AT USER-COMMAND イベントが発生し、変数 LAY 、LINES 、および ROWS に対して縦向きまたは横向き出力書式の値が割り当てられ、サブルーチン FORMAT が呼び出されます。
サブルーチン FORMAT により、汎用モジュール GET_PRINT_PARAMETERS が呼び出されます。この際、パラメータ PRIPAR と ARCPAR がインポートパラメータとして渡されます。LAY 、LINES 、および ROWS からの値はそれぞれインポートパラメータ LAYOUT 、LINE_COUNT 、および LINE_SIZE に割り当てられます。ユーザダイアログはありません。パラメータが構造 PRIPAR と ARCPAR に戻されます。サブルーチンコールの機能は、構造 PRIPAR のコンポーネント PAART 、LINCT 、および LINSZ に新規値を設定することです。
パラメータの完全性と整合性をチェックした後、プログラムでサブルーチン LIST が呼び出されます。このサブルーチンは、NEW-PAGE PRINT ON を使用して一覧をスプールシステムに送信し、PRIPAR と ARCPAR を使用して印刷パラメータとアーカイブパラメータを決定します。必要な設定はすべてGET_PRINT_PARAMETERS によって行われるため、ユーザダイアログは不要です。
保存されたスプール依頼を参照するには、システム → サービス → 印刷依頼 を選択します。縦向きを選択すると、スプール依頼は以下のようになります。

ただし、横向きを選択すると、スプール依頼は以下のようになります。
