たまにはABAP ALV List その5

今回は小ネタ集でございます。

Excelダウンロード

REUSE_ALV_GRID_DISPLAYを使ったとき、標準のGUIにくっついているExcelボタンは、GUIの中にExcelが現れるパターンです。人情として、SE16データブラウザのALV GRIDみたいに、ローカルダウンロードした上で、Excel自動立ち上げの方式にしたいところ。
やり方は案外単純。
たまにはABAP ALV List その3で説明したように、自分のテストプログラムにGUIステータスをコピーしてきて、ExcelボタンのOKコードを&XXLにいたしましょう。もれなく、SE16チックなExcelダウンロードができます。
ちなみに、ExcelダウンロードのPOPUPで、「常に選択した書式を使用」というチェックボックスを入れてしまい、形式が変更できなくなったかたは、Note1125812あたりをごらんくださいませ。

表示長の固定

FIELDCATのOUTPUTLENを指定しても、指定長より長い表示長のデータが入っていると、自動で調整されちゃいます〜というあなた。そんんな方は、is_layoutのcolwidth_optimaizeに、spaceを明示的に設定してあげましょう。
まあ、パラメータのテキストに書いてあるので、ちょっと調べればわかることでございますが、備忘として・・・

一項目の最大表示長

128バイトだそうです、1項目の最大表示長。
で、この「バイト」ってやつが曲者。今のシステムは大抵UNICODEなので、文字によってバイト数が違います。半角英数は大抵一文字1バイト。全角の日本語は、大体1文字3バイト。ということで、全角テキストは42文字あたりが表示最大長です。
これ、もうちょっと表示できるようになった、という話を聞いた記憶があるんですが、Note発見できませんでした・・・

印刷

印刷ねえ、難しいんですよ、GRID Dysplayでは。
いや、やろうと思えばできるんですよ。けど、表示の横幅は半角256文字以下にしないと、うまく印刷できないんです。それ以上になると、右側が切れちゃう。大体、256文字ってのも、実際に印刷してみると小さくって仕方ないので、A4横だとやっぱり170文字が限界。
標準の挙動を追ってみたところ、どうも半角1054文字で自動で折り返す(2行明細にする)という仕様らしい。じゃあってんで、書式設定で256文字折り返し最大4回設定(合計1024文字分)にして、切れた部分を次のページに送ってみたんだけれども、その折り返し部分に全角文字が入ると、当然文字化け。
じゃあ、170文字以下に項目を限定するか、という話になるんですが、そも、GRIDにする目的は、広めに項目を用意しておいて、レイアウトでユーザさんに絞ってもらおうと思っているからやっているわけで、170文字なんてあっという間に超えてしまう。
ということで、「いや〜GRIDは印刷厳しいっすよ〜印刷用途があるんだったら、REUSE_ALV_LIST_DISPLAY使いましょうよ〜」と、言ってみるのが吉ですな。3行明細の表示レイアウトが設定できるので、170文字に収めるのに便利な感じです。

ま、こんな感じでおしまい!