Smart Formsは、請求書や納品書などの帳票レイアウトを作成するSAPの機能です。開発はフォームの定義とデータを渡して出力するプログラムに分けて考えると整理できます。
作成前に決めること
出力項目、繰り返す明細、改ページ条件、言語、ロゴ、出力先を確認します。既存の標準帳票を拡張できるかも先に調べます。帳票出力の全体像は請求書や納品書の印刷・PDF出力も参照してください。
Smart Formsの作成手順
- SMARTSTYLESで必要に応じて文字・段落書式を定義する。
- SMARTFORMSでフォームを作り、フォームインターフェースに伝票ヘッダや明細テーブルの受け口を定義する。
- ページとウィンドウを配置し、テキスト、表、条件、改ページを設定する。明細はメインウィンドウの流れとページ境界を確認する。
- 有効化してテストし、サンプルデータで表示崩れを確認する。
- ドライバープログラムで業務データを取得し、フォームに渡す。
ドライバープログラムから呼び出す
有効化時に生成される汎用モジュール名はシステムごとに変わり得ます。名前をプログラムに固定せず、SSF_FUNCTION_MODULE_NAMEで実行時に取得します。得られた名前の汎用モジュールへ、フォームインターフェースの値と必要な出力設定を渡します。
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING formname = 'Z_SAMPLE_FORM'
IMPORTING fm_name = lv_fm_name
EXCEPTIONS no_form = 1 no_function_module = 2 OTHERS = 3.
IF sy-subrc <> 0.
" フォーム未登録・未有効化などを処理
RETURN.
ENDIF.
CALL FUNCTION lv_fm_name
EXPORTING control_parameters = ls_control
output_options = ls_output
EXCEPTIONS formatting_error = 1 internal_error = 2
send_error = 3 user_canceled = 4 OTHERS = 5.
この例は呼出しの骨格です。実際のフォームインターフェースに定義したパラメータも渡し、戻り値と例外を処理します。
印刷・PDFの確認
印刷は出力デバイスとスプール設定を確認します。PDFが必要な場合は、フォーム出力でOTFを取得し、CONVERT_OTFで変換する構成があります。ただしOTF取得には制御パラメータ等の設定が必要で、単にフォームを呼ぶだけではPDFデータが返るとは限りません。日本語フォント、複数ページ、空明細、異常終了時もテストします。利用する製品・帳票シナリオによってAdobe Formsなど別方式が採用されるため、対象システムの出力管理も確認してください。