請求書や納入書、発注書や製造指示書など、SAPでは様々な帳票やドキュメント類を扱っており、それらドキュメントを「PDF出力したい」という要件はどのプロジェクトでも当然のように挙がるだろう。
今回はSAPでのPDF出力方法について簡単にまとめる。
SAPからPDF形式でドキュメントを出力する方法
スプールからPDFを出力する
スプールとは、印刷イメージを一時的に蓄えておく領域のことで、Tr:SP01から参照する。
Tr:SP01からは印刷イメージを直接確認したり、印刷ステータスを確認したり、プリンタ設定を変更して再印刷をかけるといった操作ができる。(帳票が上手く印刷されない……系のトラブルは、まずここを確認する)
スプールに蓄えられた印刷イメージには、それぞれ「スプール番号」が割り当たっている。
このスプール番号を指定して、PDF出力を可能とするのが、以下の標準プログラムだ。
PGM:RSTXPDFT4
画面はシンプルで、スプール依頼番号と、PDFファイルの出力先を指定するのみで、ローカルにPDFをダウンロードできる。
このプログラムにトランザクションを被せて(Tr:SE93から設定)、ユーザが操作可能な機能として公開することで、PDFダウンロードの口を設けることが出来る。
汎用モジュールでPDFを出力する
Smartformによる帳票イメージを作成し、それを汎用モジュールを用いてPDF出力するための手順を紹介する。
Smartformの帳票イメージは、いったんSAPの印刷フォーム形式である「OTF形式」に出力してから、PDFに変換するという手順をとる。
1.SSF_FUNCTION_MODULE_NAME
2.SSF_GET_DEVICE_TYPE
3.上記1の汎用Mの返却値(FM_NAME)
4.CONVERT_OTF
詳細手順はSAP helpに載っているので、ここでは詳述しないが、ざっくりと以下の流れでデータを受け渡せばPDF出力できる。設計する時にこの流れを押さえておくと躓くことがなくなる。
・Smartformによる帳票イメージ(Tr:SMARTFORMS)を予め作成しておく。
↓
・フォームIDを、汎用M:SSF_FUNCTION_MODULE_NAMEに渡す。
↓
・汎用M名を生成して返してくるので、この汎用Mに各種出力パラメータを渡してCall functionで実行する。(このときデバイスタイプを渡す必要があるので先に汎用M:SSF_GET_DEVICE_TYPEを使ってデバイスタイプを取得する)
↓
・返却値としてOTF構造テーブルを受け取り、汎用M:CONVERT_OTFを実行して、OTF形式からPDF形式に変換する。