SAPのERP開発において使用される
ABAP(Advanced Business Application Programming)では、
業務ロジックの中で数値演算を扱うことが非常に多くあります。
本記事では、除算(DIVIDE)と合計(SUM)に焦点を当て、
基本構文と実用例をわかりやすく紹介します。
ぜひ参考にしてみてください!
【初心者向け】SAP ABAP言語の基本構文数値計算
早速SAP ABAP言語の基本構文数値計算について、
見出し別にご紹介していきます!
DIVIDE
除算処理
DIVIDE
は、ある値を別の値で割るときに使うABAPの命令文です。
🔹 基本構文
DIVIDE <割られる値> BY <割る値>.
この命令では、割られる変数の値が上書きされます。
COMPUTE lv_result = lv_a + lv_b * lv_c.
🔹 使用例
DATA: lv_total TYPE i VALUE 100,
lv_quantity TYPE i VALUE 4.
DIVIDE lv_total BY lv_quantity. "→ lv_total = 25
この場合、lv_total
に 100 ÷ 4 の結果である 25 が代入されます。
ゼロ除算の注意点
DIVIDE
を使用する際、割る値がゼロの場合はエラーになるため、
必ずゼロチェックを行う必要があります。
例:ゼロチェック付きのDIVIDE
IF lv_quantity <> 0.
DIVIDE lv_total BY lv_quantity.
ELSE.
WRITE: '割る数が0のため、処理をスキップしました'.
ENDIF.
小数の除算には「P型」データ型を使う
DATA: lv_price TYPE p DECIMALS 2 VALUE 100.00,
lv_quantity TYPE p DECIMALS 2 VALUE 3.00.
DIVIDE lv_price BY lv_quantity. "→ lv_price = 33.33...
SUM
内部テーブルの合計処理
SUM
は、内部テーブル内の指定列の合計を算出する命令で、LOOP
構文の中で使用されます。
基本構文
LOOP AT <内テーブル>.
SUM.
ENDLOOP.
この構文で、数値列の合計がワークエリアの対応フィールドに自動的に入ります。
使用例
TYPES: BEGIN OF ty_sales,
amount TYPE i,
END OF ty_sales.
DATA: lt_sales TYPE TABLE OF ty_sales,
ls_sales TYPE ty_sales.
APPEND VALUE #( amount = 100 ) TO lt_sales.
APPEND VALUE #( amount = 150 ) TO lt_sales.
APPEND VALUE #( amount = 200 ) TO lt_sales.
LOOP AT lt_sales INTO ls_sales.
SUM.
ENDLOOP.
WRITE: / '合計金額:', ls_sales-amount. "→ 合計金額:450
補足:SUM
は「LOOP内の同一構造の合計」に限定される
SUM
は、現在LOOPしている構造体のうち、数値フィールドにだけ適用されます。READ TABLE
やFOR EACH
では使えません。
まとめ:DIVIDEとSUMの違いと使い所
まとめとして、DIVIDEとSUMの違いと使い所について
ご紹介していきます!
命令 | 目的 | 用途例 |
---|---|---|
DIVIDE | 除算(割り算) | 単価の計算、平均値の算出など |
SUM | 合計処理(内部テーブル) | 売上合計、在庫総数、工数合計など |
実務での活用シーン
実務での活用シーンについてご紹介していきます!
DIVIDE:請求書作成時の「合計金額 ÷ 数量」= 単価計算
SUM:日次レポートの「全社員の残業時間合計」や「全製品の売上合計」
コメント