SAPの構成/内外変換
SAPに内部形式で保存されている項目を外部出力用に変換する、またはその逆の処理や機能のこと。
代表的なものとして、100JPYが1で保存されデータブラウザでも1JPYに見えるが、標準の伝票照会では100JPYで見える仕組み。
概要 †
SAPでは、外部形式と内部形式という概念があり、端的に言えば必ずしも見た目どおりにシステムに格納されているわけではないということ。
そのため、SELECT命令によるデータの抽出やアドオンレポートを作成する場合は、ケアする必要がある。
外部形式とは標準トランザクションコードでの伝票照会などで表示される内容であり、実際にテーブルに格納されている内部形式とは異なる。
こういった仕組みの背景は、数量単位など項目に関してはログオン言語ごとに表示する内容を変更できるように配慮されているためである。
これを馬鹿正直に実現しようとするとテーブルの値そのものを変更することになり、インパクトは決して小さくないが、画面に表示する直前に内部で表示のみを変換するとすれば、傷は浅くて済む。
実現手段 †
変換Exitと呼ばれる汎用モジュールを使用し、外部形式と内部形式を変換する。
概ね以下のような汎用モジュールである。(例:CONVERSION_EXIT_CUNIT_INPUT)
テーブル項目に対してドメインを経由し変換Exitは設定されており、割り当てられている場合はダブルクリックすると該当する汎用モジュールが表示される。
日付 †
内外変換といえばAlpha変換(いわゆる前ゼロを付与する/省く)、金額や数量の変換が代表的だが、日付にも内外変換はある。
具体的には換算レートが格納されるTCURRの日付で、生データをみると「79848770」のように設定されている。
これをメンテ画面のT-Code:OB08などでは通常の西暦で表示されるのだが、これは、このテーブルの項目のデータエレメントに割り当てられたドメインには変換ルーチンが割り当てられているため。
その変換EXITでは「99999999 - テーブルの値」という計算があり、例えば値が79848770であれば減算の結果は20151229となる。
ちなみに、SE16のユーザパラメータに「変換EXIT」という項目があるが、このチェックボックスをOnにすると上記の例では2015/12/29と表示される。
コメントはありません。 Comments/SAPの構成/内外変換?