内部形式と外部形式
簡単に言ってしまえば、内部形式とは、システムに格納されているデータの形。外部形式とは、ユーザが解釈しやすいデータの形である。
人と、コンピュータでは解釈、管理しやすいデータの形が異なるため内部形式と外部形式が存在する。
内外変換
SAPでは、変換Exitという汎用モジュールを用いて内部形式と外部形式のデータを相互に変換する内外変換を行う事が可能である。
変換Exitを考慮した場合、外部形式でデータを出力する事が可能である。逆に、変換Exitの考慮をなしにした場合内部形式でデータを出力する事が可能である。
当勉強会においては、ゼロ埋めと、コードそのものの内外変換を行う際に変換Exitで変換を行った。
SAPにおける内外変換
今回の勉強会では、SAPの代表的な3つの内外変換を学んだ。
ゼロ埋め
データの桁数を合わせるために、決まった長さに満たない桁を0で埋めることをゼロ埋めと呼び、内部的にはゼロ埋めされた値で保存されている。
SE16→LFA1→実行→設定→ユーザパラメータ→変換Exit考慮なし
仕入先コードを内部形式で出力する(ゼロ埋めされている)
SE16→LFA1→実行→設定→ユーザパラメータ→変換Exit考慮あり
仕入先コードを外部形式で出力する(ゼロ埋めされていない)
金額項目
以下、JPYの例である。
SE16→BSEG→実行
金額は内部形式である2.00で出力される(100分の1に変換されている)
FB03→伝票番号を入力→Enter
金額は外部形式である金額200で出力される(画面に入力した通りの値)
データを変換する必要があるか、あるいはそもそも変換する必要がないかは通貨によって異なる。
整数9桁少数2桁で管理ができる通貨(10億通貨単位未満):そのままのデータで管理可能
(例)USD・AUD・EUR etc…
整数9桁少数2桁で管理が難しい通貨(10億通貨単位未満):内部形式と外部形式が存在する
(例)JPY・VND etc…
- これら、整数9桁少数2桁で管理が難しい通貨に関しては、通貨ごとの係数で変換する
コードそのもの
コンピュータと人間では解釈しやすいデータの形が異なるため、内部形式と外部形式でコードが異なる項目もある。
SE16→MARA→基本単位:PC →実行→設定→ユーザパラメータ→変換Exit 考慮なし
基本単位は内部形式で出力される
SE16→MARA→基本単位:PC →実行→設定→ユーザパラメータ→変換Exit 考慮あり
基本単位は外部形式で出力される
まとめ
内部形式と外部形式ではデータの形が異なる。
そのため、データが見かけ通りの形でシステムに格納されている訳ではないことに注意したい。
特に、ABAPプログラムを作る時は誤った値のデータを格納してしまうことや、狙い通りにデータの検索ができなどの不具合が発生しうるため、データが内部形式であるか、外部形式であるかは、正しく理解して使い分ける必要がある。

コメント