SAPの拡張手段/Smartform
SAP標準が提供する帳票開発のプラットフォームで、SAP Scriptの後継機能。
SAP Scriptから移行(変換)することもできる。
概要 †
個人的には、割と好きな機能。
帳票(フォーム)といえばSVFなんかが有名だが、やっぱり外付けのツールよりかはSAP標準バンドルを使うに越したことはないでしょう。
技術的なトラブルが発生した際も、複数の仕組みを使っていると、サポートに連絡しても「相手側が原因でしょ」とかいう盥回しが横行するのだが、SAPというシステムが担保しているわけなので問題ない。
出力管理とあわせた使い方は、王道中の王道。
SAP ScriptとSmartformの違い †
基本的には、「元々、昔からあるSAP標準の開発プラットフォームとしてバンドルされているものがSAP Script」、その後継としてリリースされたものがSmartform」という認識で差支えない。
違いとしては、ざっくばらんに言えば、SAP Scriptに存在する「面倒臭さ」が排除され、機能が豊富になった、といったところ。
具体的には、一部コーディングが不要となり設定のみで実現可能になった、コードベースであった開発画面がグラフィカルになった、SAP Scriptではコーディングできなかった個所にコードを書くことができるようになった、等が挙げられる。
つまり、端的に申し上げれば、基本的には開発効率や不具合の発見においてSmartformが優位となり、また、個人的な感想としては、SAP ScriptよりもSmartformの方がメンテ可能な技術者が多いように思う。
そのため、既存の開発済みフォームについてはSAP Scriptのままとしても、新規開発するアドオンについては、Smartformにて開発することをお勧めする。
まあ、今となってはPDF Base Formがリリースされていたり、開発単価の高いSAPよりもデータだけ吐き出して外付けシステムで作った方が安いでしょといった話もあるのだが。
ちなみに、技術的基盤としての大きな違いは、内部的に[[汎用モジュール> SAPのオブジェクト/汎用モジュール]]を生成すること、クライアント非依存オブジェクトであることが挙げられる。
移送絡みのトラブルもないし、多言語対応もしやすい。
構成 †
出力管理を用いる場合は、コンフィグで割り当てられたプログラムとフォームが呼び出されるという動きとなっている。
もちろんSmartformの中でコーディングも可能であるが、フォーム側は「出すだけ」「出しっぷり*1だけ編集」とし、データを集めたり編集したりはプログラム側という構成で実装すべきと考える。
理由は、既存のものをコピー作成する場合など「上っ張りだけ変えたい」という場合に、不具合修正や仕様追加を原本とコピーにそれぞれ実施しなければならないなど、泣きを見るため。
ただし、プログラム側は標準をそのまま使うことで、抽出機能には手を入れない=プログラム側のテストが不要とし、過不足ある部分はフォーム側にだけコーディングする=テスト対象オブジェクトをフォームにだけ絞るというやり方もある。
プログラム側 †
出力管理で使用する場合は少しばかりのお作法があるので、標準の出力プログラムを参照のこと。 そんなに難しくはないが、サブルーチンの引数だとか、その辺を合わせていおけばよい。
その他の注意点としては、Smartfomrは汎用モジュールを裏側で自動生成するのだが、その汎用モジュール名をベタ指定してはいけないということ。
必ず、フォーム名称を汎用モジュール SSF_FUNCTION_MODULE_NAME に渡して汎用モジュール名を取得する動きにすること。
これは、SAPクエリを呼び出すトランザクションコードに直接プログラムIDを指定してはならないことと同じ理由。
フォーム側 †
Smart Style †
いわゆる「書式」を定義するオブジェクト。
例えばSmartformのテキスト表示エリアに直接フォントの種類や大きさを割り当てることはできるが、コードを定義して
フォームの中でフォントの種類や大きさがバラバラだと格好悪いし、フォーム間でも会社としての文書の統一感を意識したりもするので、意外と重要な設定。
Text Module †
いわゆる「文言」。
ABAPでいうリテラルのように表示する文言を直接Smartform上に仕込むこともできるが、翻訳の都合もあるし、やはりテキストエレメントのように別途定義したいもの。
Smartform †
上記のSmart StyleやText Moduleを割当て、紙出ししたりPDFにしたりする「フォームそのもの」。
属性の定義として、「どのような情報を呼び出し側から受け取るか」「プリンタなどの出力情報は何であるか」「出力管理上のデータはどのようなものか」を定義し、場合によってはコーディングも行い、文言を表示していく。
表示する明細データについては、ページの中にひとつだけ定義が可能。 無理やり表示することもできなくはないが、単に、例えば発注書における明細などは紙の中で一意でしょという話。
用途 †
ロジ †
標準バンドルされているものをコピー作成したりもできるし、受注伝票を保存する=オーダーを受け付ける=注文請け書を印刷する等、取引の進捗とシステムへの入力と「それが形になること」が連動するため、直感的に非常にわかりやすい。
会計 †
会計には、連絡文書や支払プログラム+そこから呼び出されるSAP Scriptという黄金パターンがあるため、コピーアドオンするパターンを含めロジほど活用しないかもしれないが、スタンドアロンの帳票出力機能で使用したりする。
ロジと違い、元ネタとなる伝票登録とフォームの出力のタイミングが異なるのが特徴。 (殆どの場合、リアルタイムないしその日の夜間バッチなんかでは出さない)
その他 †
Smartform概要 †
SAP Help Portal Smartformのチュートリアル Smartform FAQ SmartformとSAP Scriptの違い Smartformにバーコード Smart Form in PDF Format SMART FORM guide Smart Forms Best Practices Smartform Basics SAP Help Smartform概要
バーコード †
入庫処理や出荷処理において、当方あるいは先方の業務を効率化させるためにバーコードつきのラベルを印刷することは多い。 バーコード用のNote:645158も参照のこと。
SAP Script - Part 7- Day 28 二次元バーコードスキャン SAPバーコードDLL TBarCode / SAPwin ランキング&まとめ スマートフォーム用の新しいバーコード印刷
コメントはありません。 Comments/SAPの拡張手段/Smartform