「SAPから外部システムに数値を送ったら、なぜか桁がズレている…」
「数量や金額が意図しない形で変換されてしまった…」
そんな経験はありませんか?
実はその原因、データ型(DEC / NUM)の扱いの違いにあるかもしれません。
インターフェースの疎通テストでは、項目の内容や値の並びだけでなく、
型定義の違いが予期せぬ変換エラーや計算ミスを引き起こすことがあります。
この記事では、私が経験したDEC/NUM差異による実際のトラブルと、その原因・防止策を紹介します。
発生状況と背景
ある疎通テストで、SAPから外部システムへ数量や金額を送信した際、受信側で計算が合わない現象が発生しました。
送信側のSAPでは正しい値(例:1234.56
)が保持されているにも関わらず、受信側では 123456
や 12.34
のように桁が変化していたのです。
調査の結果、SAP側では DEC(Decimal)型、受信側では NUM(Numeric)型で項目が定義されており、
小数点位置やゼロパディングの扱いが異なることが原因でした。
技術的な背景
データ型は、システムが値をどう解釈するかを決めるルールです。
SAPと外部システムでは、同じ「数値型」でも内部的な扱い方が異なることがあります。
- DEC(Decimal)型
小数点の位置を保持し、精度を維持する数値型。SAPでは金額や数量など精度が重要な項目で利用される。 - NUM(Numeric)型
桁数固定の数値型で、小数点を持たない。小数点が必要な場合は桁位置を暗黙的に決める運用が必要。
この違いが、送信側と受信側での値の解釈ズレを生み、変換エラーや桁ズレの原因になります。
📦 SAPでよく使われる主要データ型と注意点
データ型 | 説明 | よく使われる用途 | 注意点 |
---|---|---|---|
CHAR | 固定長の文字列 | コード、ID、フラグ | 長さ固定のため短い値はスペース埋めされる。比較時にスペースを意識。 |
NUMC | 固定長の数字文字列(数値ではなく文字として扱う) | コード、連番、郵便番号 | 数値計算不可。桁数固定。ゼロパディングあり。 |
DEC | 固定精度の小数(パック形式) | 金額、数量 | 小数点位置を内部的に保持。送受信時に桁位置がズレる可能性。 |
CURR | 通貨型(DEC+通貨コード) | 金額 | 通貨単位ごとの小数点位置を考慮。通貨コードが必須。 |
QUAN | 数量型(DEC+単位) | 数量、重量 | 単位変換に注意。単位フィールドとセットで扱う必要あり。 |
DATS | 日付(YYYYMMDD形式) | 伝票日付、有効期限 | 数値型ではなく文字列型。計算には日付関数が必要。 |
TIMS | 時刻(HHMMSS形式) | 処理時刻、登録時刻 | 日付とは別管理。タイムゾーンの扱いに注意。 |
💡 ポイント
- NUMCとDECは**「見た目は数字」でも内部表現が違う**ため、外部システム連携で混乱しやすい。
- CURRとQUANは、単位や通貨コードを忘れると意味が変わるため、必ずセットで連携。
- DATSやTIMSは見た目は数値でも日付型/時刻型であることを明記しておく。
SAP固有の注意点:ユーザー設定による小数点/カンマ表示
SAPでは、ユーザーごとの設定で数値の区切り記号(小数点と桁区切りカンマ)が異なる場合があります。
例えば、あるユーザーは 1.234,56
(ヨーロッパ形式)で表示され、別のユーザーは 1,234.56
(日本・米国形式)で表示されるケースです。
この設定は表示上の違いですが、CSVやテキスト出力に影響する場合があり、外部システム側で予期せぬ解釈をされることがあります。
確認・変更方法(SU01)
- SAPで
SU01
を実行 - 対象ユーザーIDを入力し、「表示」または「変更」をクリック
- 「デフォルト」タブを開く
- 「数値書式(Decimal Notation)」を確認
- 例:
1.234.567,89
(ヨーロッパ式) - 例:
1,234,567.89
(日本・米国式)
- 例:
- 必要に応じて変更し、保存
原因特定までの流れ
- 仕様書の型定義確認
送信側と受信側の型を突き合わせ、小数点位置・桁数・符号位置を確認 - 実データ検証
疎通テスト用ファイルをHEXや固定長ビューで確認し、内部表現を特定 - 変換仕様の有無を確認
送信プログラムやミドルウェアの型変換ロジックを確認 - 修正方針決定
送信側で変換するか、受信側で解釈ルールを修正するか決定
防止策
- 要件定義段階
型・桁数・小数点位置・符号位置・単位や通貨コードを明記 - 開発段階
境界値(ゼロ、小数、マイナス値など)を含めたテストデータを作成 - テスト段階
送受信後に件数・合計値・フォーマットを突き合わせ - 運用段階
型変換仕様をマニュアル化し、改修時にも必ず参照
まとめ
SAPのデータ型は、見た目が似ていても内部表現や扱い方が大きく異なります。
特にDECとNUMC(NUM)は外部システムとの連携で桁ズレや小数点喪失を引き起こしやすい項目です。
さらに、SAP固有のユーザー設定(小数点・カンマの表示)も予期せぬ差異を生むため、必ず確認しましょう。
今回のテーマに加えて、「拡張子の大文字小文字問題」や「ファイル名仕様の不一致」も、疎通テストの品質を左右する重要なポイントです。
📚 SAPインターフェース疎通テストでの課題シリーズ
品質を高めたい方は、ぜひシリーズ全記事をあわせてご覧ください。
書籍で勉強するのもおすすめです。
以下の書籍は、2024年出版のSAP全体を示す書籍ではとても新しく、
S/4 HANAについてもしっかりと体系的に学ぶことが出来る1冊です。
こちらもぜひご検討ください。
コメント