ABAPの基礎知識 出力系その1

なんだか乱暴に書き連ねているABAPの基礎知識シリーズであるが、
とりあえず、前回のI/Fの泥沼に関しての記述で、更新系は終わりにして、
今回からは出力系のお話をしたいと思う。


で、まずは、業務帳票のセクションから話をしたいと思う。
うーん、本当にこいつは、お客さんの思い切りでまったく工数が変わってくるところである。


R/3から帳票を出す手段は大きくわけて3つである。
1.クエリで無理やり作る
2.ABAPレポートで作る
3.SAP ScriptもしくはSmartFormで作成する
ちなみに、裏技としては、Excel連携で吐き出してしまう、というものもある。
で、かかる工数としては、1<2<<3という感じであることは、
まあ、異論のないところではないかと思う。


いや、ほんとに、同一帳票のなかで、フォントの制御をしなくていい、
と、ユーザが割り切ってくれれば、はるかに工数の小さな、1.もしくは2.の方法で、
業務帳票は作れるのである。
1.なんてのは、Wordとの連携(差込印刷に良く似た仕組み)が標準で用意されているので、
本気でがんばれば、なかなかに使いやすいものである。
ただし、1.は、多明細にわたる帳票は、クエリの性質上使えない。
その場合は、2.が選択肢になってくる。
逆に、同一帳票内で、複数フォントサイズを制御したいなあ、と、言った瞬間に、
3.のScriptやSmartFormの採用を余儀なくされるのである。
対外帳票はともかくとして、自社内の作業指示だとか、出荷指図、承認のための
起案書なんてのは、同一フォントでいいじゃねーかよお!!
と、常に主張するのだが、特に「歴史ある」企業においては、
「そんなこともできないのは、帳票じゃない」
なんていう、イスラム原理主義も真っ青の原理主義に阻まれ、むなしく泡と消えるのである。


実は、SmartFormはあまりよく知らないのだが、少なくともScriptは、そのフォームは
クライアント依存である、という性質により、移送トラブルが起きやすい、
という側面もあり、できれば回避したいものである。
ということで、裏技である。
Excelと連携してしまうのである。


Excelとの連携はいくつかの方法があるが、一番安直なのは、「GUI_EXEC」を使用した方法である。
これを使う場合には、いくつかの前提があるのだが、大きくは二つ。
1.Excelマクロを、それなりに使いこなす人間がいること
2.作ったExcelマクロを、ユーザに配布する方法が確立されていること
特に、2つ目は大きい。グループウェアでもなんでもいいので、最新版を速やかに配布する
方法がなければ、この方式の運用はおぼつかないのである。


GUI_EXEC」がやることは結構簡単で、要するにパソコンに入っているファイルを
実行する汎用モジュールである。
だから、Wordといわず、Excelといわず、NotePadといわず、起動できるのである。
しかし、起動しただけではのっぺらぼうの画面が出るだけなので、
データの連携をしなければならない。
で、その部分は、Excelマクロに書くのである。


例えば、Excelマクロに、同一フォルダの「File.txt」を読み込み、Excelに展開する、
というコードを書き込んでおく。
もちろん、Excelシートには、フォントの設定だとか、題名だとかを仕込んでおくのである。
で、R/3側では、ユーザにフォルダを指定してもらい、抽出条件に合わせて
「File.txt」を作り、用意していたExcelマクロを「GUI_EXEC」で実行。
すると、見やすい業務帳票が出来上がり、ということになるのである。


この仕掛け、特に、客先指定請求書が多いユーザには有効である。
Excelマクロを直せば、複数の客先指定請求書向けの仕掛けができる。
ABAPから作るときには、費用対効果上、絶対ペイしないものが、
ユーザ側に、Excelマクロが組めるちょっとしたパソコンオタクがいてくれれば、
できてしまう軽い仕組みに早変わりなのである。


ただ、現実問題として、Excelマクロを組める人、というリソースを、追加で一人張るのは、
プロジェクト運営上、難しい場合が多い。
ABAPは、そもそもCOBOLに良く似た文法を持っているため、ABAPExcelマクロを、
仕事として満足にできるレベルで両立している人は、かなり限られている。
となると、この裏技が有効なのは、やはりユーザ側に、そのスキルを持った人がいる場合、
ということになりそうである。


けど、便利なので、「Excelとの連携?ウザそう」と、毛嫌いする前に、
ぜひ検討をしていただきたいところなのである。