この記事を読むメリット
- SAPの内部書式(内部値)と外部書式(外部値)の概念および調査方法を理解することができます
SAP独特のデータ構造である内部書式(内部値)と外部書式(外部値)は、SAPのデータを扱う上で、避けては通れない重要事項です。
昨今は、S/4 HANAへのデータ移行に取り組んでいる企業も多いと思いますので、「価格の数値を100倍にして移行してしまった」などのミスを未然に防ぐことができるよう、このデータ構造をしっかりと理解しておきましょう!
この記事のポイント
内部書式・外部書式とは
『内部書式』とは、SAPがシステム内部で保持している書式です。そのため、ユーザーが目にすることはありません。一方、『外部書式』は、実際に画面上や帳票に出力される書式で、ユーザーが目にする情報になります。
この内部書式と外部書式の変換を採用している代表的な項目として、“金額”があります。
例えば、下図の通りデスクトップの画面上にはある受注の金額情報として ”1,230円” と表示されているとします。これが実際にユーザーが目にする『外部書式』です。
一方、システム内部のデータベース上では、金額の数値が“12.30”、通貨は”JPY”(日本円)となっています。このように、通貨が”JPY”であれば、外部書式は内部書式の金額の数値を100倍して表示しています。
内部書式と外部書式
USD(アメリカ$)の場合はどうでしょう?
受注の金額情報が、外部書式として ”$100” と表示されているとします。一方、システム内部のデータベース上では金額の数値が“100”、通貨は“USD”(アメリカドル)となっています。
これは、SAP内部で「金額情報のもととなる数値」と「通貨」をセットで管理しており、その通貨によって変換ロジックが異なる為です。
もっと詳しく💡
価格の金額値以外にも、内部書式と外部書式の変換を採用している項目はあります。
代表的なものに、取引先機能(Partner Function)や数量単位(UoM)、通貨(Currency)、言語キー(Language Key)、日付(Date)などがあります。
SE16Nでの内部書式・外部書式の参照方法
T-CODE:SE16Nでテーブルを参照する際に、内部書式で参照するのか・外部書式で参照するのかを下記の手順で選択することができます。
- T-CODE:SE16Nで選択画面を開く。
- 補足タブから“設定変更”を選択する。
- “変換Exitなしの出力”にチェックを入れる。
SE16Nの設定
デフォルトでは、“変換Exitなしの出力”にチェックが入っておらず、テーブルを参照時に内部書式から外部書式に変換するプログラムが走り、外部書式で表示されるようになっています。その為、このチェックを入れると、内部書式のままデータを出力、またはローカルにダウンロードすることができます。
書式変換方法について
技術的な話になりますが、外部書式⇔内部書式の書式変換方法について解説します。
たいていの書式変換は、SAP標準で用意されている汎用モジュールを利用して実行することが可能です。
そして、その変換処理には変換テーブルが使用されています。
汎用モジュールと変換テーブルの確認方法
項目“取引先機能(Partner Function)”を例に外部書式と内部書式の変換で使われている汎用モジュールと変換テーブルを見ていきます。
まず、下記の5ステップで汎用モジュールを特定し、ソースコードを確認します。
- T-CODE:SE11で取引先機能が使われているテーブルを検索します(ここではKNVP)
- 取引先機能の項目をダブルクリックします(項目名はPARVW)
- ポップアップ画面のドメインをダブルクリック(ドメイン名はPARVW)
- ドメイン照会画面からルーチンをダブルクリック(ルーチン名はPARVW)
- 変換用の汎用モジュールをダブルクリック(ここでは外部→内部の汎用モジュールを選択)
SE11_外部値&内部値の変換プログラム参照
上記手順により、汎用モジュールのコードを確認するとSELECT文からコールしているテーブル名を確認できます。取引先機能の場合、テーブル“TPAUM”を使用していることが分かります。さらに、言語キーと取引先機能の2つのKEYを用いて変換していることが確認できます。
変換処理のABAP
もっと詳しく💡
代表的な項目のSAP標準の汎用モジュールを紹介します。
<金額の書式変換 汎用モジュール>
- 内部書式 ⇒ 外部書式・・・BAPI_CURRENCY_CONV_TO_EXTERNAL
- 外部書式 ⇒ 内部書式・・・BAPI_CURRENCY_CONV_TO_INTERNAL
<日付の書式変換 汎用モジュール>
- 内部書式 ⇒ 外部書式・・・CONVERT_DATE_TO_EXTERNAL
- 外部書式 ⇒ 内部書式・・・CONVERT_DATE_TO_INTERNAL
カスタマイズからの確認方法
一部の項目については、この内部書式と回部書式の変換をカスタマイズで設定することが可能です。
取引先機能(Partner Function)もその1つであり、下記のパスから設定を確認・変更することができます。
SPRO > 販売管理 > 基本機能 > 取引先決定 > 設定: 取引先決定 > 設定: 得意先およびサプライヤマスタの取引先決定
取引先機能の内部/外部書式のカスタマイズ
考慮が必要なポイント
この外部書式と内部書式を考慮しないと、どんなリスクがあるのかな~?
外部システムとのインターフェイス
外部書式と内部書式の考慮漏れが影響するケースとして、特に外部システムとのインターフェイスがあげられます。
例えば、下記図の様にSAP内の”1,000円”というデータを外部のシステムにインターフェースする時、SAPのデータベース上の情報をそのまま連携してしまうと、受信するシステム側では“10円”と認識してしまいます。また、受信するシステム側も決まった書式がある場合は、受信データを取り込む際に書式変換が必要になります。インターフェース開発時は「外部システムとはどのような書式で連携をするのか」までしっかり確認しておく必要があります。
内部書式と外部書式の考慮点
逆に、外部システムからSAPにインターフェースするケースも同様に書式に注意が必要です。上図の通り、“1,000円”で連携されてきた金額情報をそのままSAPに取り込むことはできません。内部書式を使用している項目は、SAPに取り込む際に内部書式への変換が必要です。
SAP ECCからS/4 HANAへのデータ移行
SAPからSE16Nで抽出したデータを、再度SAPに登録する時も注意じゃぞい!
下記図の通り、SAPのテーブルからT-CODE:SE16Nなどを使用し、内部書式でデータを抽出した場合、そのデータを外部書式に変換してSAPの画面から登録する必要があります。
SE16Nでデータを抽出する場合は、上述の外部書式で表示させる設定にすれば、変換作業は不要ですが、仮にデータベースから直接データを抽出する場合は、内部書式から外部書式に変換してSAPに登録する必要があります。*もし、変換処理(内部→外部)が備わっているプログラムの場合は問題ないです。
まとめ
今回は、SAP独自のデータ構造である内部書式と外部書式の概要について紹介しました。
SAPを長くやっている人にとってはお馴染みの内容だったと思いますが、初学者とっては少し複雑で業務の中でも躓きやすいポイントです。本記事を通して、SAPのデータの持ち方や書式の確認方法を理解する一助になれば幸いです。
最後まで読んでいただきありがとうございました!