はじめに
SAP S/4HANA Cloud(以降、S4HC)のデータを扱う際に、内部書式と外部書式に関する内容で苦労した点がございましたので、事象と対処法について当記事に記します。
内部書式と外部書式について
外部書式とは、実際に画面上や帳票などに出力される書式で、ユーザーが目にする情報となります。
一方、内部書式は、SAPがシステム内部で保持している書式であるため、ユーザーが目にすることはありません。
躓いた内容
事象
S4HCの購買依頼画面から、評価額(金額の項目)に11桁の金額を入力して保存ボタンを押下すると、データが登録されます。
しかし、APIを使用してデータの登録を行う際に、評価額に11桁(※1)のデータをセットして登録すると、桁数オーバーのエラーが発生しました。
※1…ビューブラウザで定義されている最大桁数
・エラーの内容
Overflow converting from '10000000000.00'
原因
原因としては、通貨に"JPY"を設定せずに登録処理をかけていたため、最大桁数が9桁になっていたことから、桁数オーバーのエラーが発生していました。
画面上にはある金額情報として 「10,000,000,000」 と表示されているものが外部書式に該当します。一方、システム内部のデータベース上では、金額の数値が「100000000.00」、通貨は「JPY(日本円)」となっています。
つまり、SAP内部では金額情報のもととなる数値と通貨をセットで管理しています。
画面上に金額情報を表示する際は、この通貨をもとに金額情報のもととなる数値を外部書式に変換しています。
通貨が「JPY」であれば、金額のもととなる数値を100倍して表示する流れになります。(日本円では小数点以下が存在しないため)
解決策
登録する際に、通貨に「JPY」をセットすると、11桁で登録が可能になります。
※購買依頼画面では、デフォルトで通貨に「JRY」が設定されているため、最初から11桁で登録ができました。
おわりに
今回は、S4HCで使用している画面とデータを用いて記事にしましたが、SAPを使用する上では、外部書式と内部書式は意識するべき内容になります。
金額の他にも、日付やコード値などの項目も該当するため、結構身近な存在です。開発を行う方は、是非、頭の片隅に入れて実装いただければと思います。