ABAP SAP モジュール共通

【SAP】『内部書式』『外部書式』とは?考慮すべきポイントや確認方法を徹底解説!

SAPに携わっていると『内部書式』や『外部書式』といったワードを聞くことがあると思います。実際にSAPを使って業務を行うユーザーが気にすることではないのですが、SAPコンサルタントは知っておくべき仕組みなので、まだ聞いたことがない人はぜひご一読ください。

『内部書式』『外部書式』とは

『内部書式』とは、SAPがシステム内部で保持している書式です。そのため、ユーザーが目にすることはありません。一方、『外部書式』は、実際に画面上や帳票に出力される書式で、ユーザーが目にする情報になります。

金額を例に解説します。例えば、上図の通り画面上にはある受注の金額情報として ”1,000円” と表示されているとします。これが実際にユーザーが目にする『外部書式』です。

一方、システム内部のデータベース上では、金額の数値が"10.00"通貨は"JPY"(日本円)となっています。これは決して10円を意味するわけではありません。SAP内部では金額情報のもととなる数値」と「通貨」をセットで管理しています。画面上に金額情報を表示する際は、この「通貨」をもとに「金額情報のもととなる数値」を外部書式に変換しています。通貨が"JPY"であれば、金額のもととなる数値を100倍して(日本円では小数点以下が存在しないため)表示しています。

ココがポイント

『外部書式』・・・画面上や帳票に出力されるユーザーが目にする書式

『内部書式』・・・システム内部で保持している書式

 

書式が影響するポイント

では、書式はどのようなケースで考慮が必要になるのでしょうか。主に外部システムへのインターフェースアドオン開発時に考慮する必要があります。誤った書式で開発を進めてしまうと誤った値でデータベースに格納をしてしまったり、ショートダンプの原因になってしまいます。

簡単な例ではありますが、上図を使って解説します。例えばSAPから他のシステムにインターフェースするとします。"1,000円"というデータを連携したいのに、SAPのデータベース上の情報をそのまま連携してしまうと、受信するシステム側では"10円"と認識してしまいます。また、受信するシステム側も決まった書式がある場合は、受信データを取り込む際に書式変換が必要になります。インターフェース開発時は「外部システムとはどのような書式で連携をするのか」までしっかり確認しておく必要があります。

 

また、外部システムからSAPにインターフェースするケースも同様に書式に注意が必要です。上図の通り、"1000円"で連携されてきた金額情報をそのままSAPに取り込むことはできません。内部書式を使用している項目は、SAPに取り込む際に内部書式への変換が必要です。

ココがポイント

今回は金額を例に解説しましたが、「日付」「数量単位」「品目コード」など、SAPでは様々な情報を内部書式で保持しています。

 

書式の確認方法

トランザクションコード:SE16Nでは、各テーブルの内部書式と外部書式を同時に確認することができます。内部書式と外部書式に異なる値が入っている場合は変換が必要です。

 

書式の変換方法

最後に技術的な話になりますが、外部書式⇔内部書式の書式変換方法について解説します。たいていの書式変換は、SAP標準で用意されている汎用モジュールを利用して実行することが可能です。(実際に汎用モジュールを使用して書式変換をするのは開発者の役割になりますが)

SAP標準で用意されている汎用モジュールの一部を紹介します。

金額の書式変換 汎用モジュール

内部書式 ⇒ 外部書式・・・BAPI_CURRENCY_CONV_TO_EXTERNAL 

外部書式 ⇒ 内部書式・・・BAPI_CURRENCY_CONV_TO_INTERNAL

日付の書式変換 汎用モジュール

内部書式 ⇒ 外部書式・・・CONVERT_DATE_TO_EXTERNAL

外部書式 ⇒ 内部書式・・・CONVERT_DATE_TO_INTERNAL

ココがポイント

汎用モジュールとは、SAP内のどのプログラムからも呼び出すことのできるプログラムで、パラメータ(値)を渡すことで処理が実行されます。

 

最後に

『内部書式』『外部書式』はSAP独特の考え方であるため、SAPコンサルタントであれば理解しておく必要があります。今回は通貨と金額を例に解説しましたが、金額以外にも内部書式と外部書式が異なる項目は多くあるため、開発に携わる際は注意してみてください。

-ABAP, SAP, モジュール共通
-,