【SAP ABAP】基本構文:数値計算(ADD、SUBTRACT、MULTIPLY、DIVIDE、SUMなど)

登場人物紹介

三崎レイナ
社会人1年目。新卒でITコンサルティングファームに就職。初配属がSAPプロジェクトにアサインされる。SAPがわからないことだらけで悩んでいたところ、会社の先輩にSAPラボの所長を紹介され、毎週末に所長とSAPのお勉強中!

博士
SAPラボの所長。SAP大好き博士!SAP導入プロジェクトを構想策定~運用保守まであらゆるフェーズを数多く経験。
いまは優しきおじいちゃんだが、プロマネバリバリの時代はかなり怖かったらしい。現在は引退し、SAPの後進育成と啓蒙活動に従事中!

この記事を読むメリット

  • 基本的な演算子や計算命令、便利な関数を用いることで、効率的かつ精度の高い計算が可能になります。
博士

今回はABAPの数値操作について説明するぞい!

SAPのABAPプログラミングでは、数値の操作は多くの業務処理に欠かせません。この記事では、数値データの扱い方について、基本的なデータ型、よく使われる関数、計算方法、そして便利な関数を紹介します。

SAPフリーランスバンク SAPフリーランスバンク

新着のSAPフリーランス案件

【CO】

【FI】

S/4 HANA FI/CO導入支援(シニアレベル)

要スキル:
・S/4 HANA (FI/CO)の導入経験(8年以上) ・財務会計に関する業務知識 ・クライアント及び他コンサルメンバーとの円滑なコミュニケーション能力 ・ドキュメンテーション能力 ・日本語レベル:ネイティブ 【歓迎条件】 ・S/4 HANA Cloud Public EditionのFI/COモジュールの導入経験 ・SAP Activateの理解 ・チームリーダー経験
月額単価:
~1,700,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
・S/4 HANA Cloud Public EditionのFI/COモジュールの導入 ・クライアントの業務要件のヒアリングおよび業務プロセス分析 ・システム設計、設定、テスト、ユーザートレーニングの実施 ・導入後の運用サポートおよび改善提案

【PP】

S/4 HANA PP導入支援(ジュニアレベル)

要スキル:
・S/4 HANA (PP)の導入経験(2年以上) ・生産管理や製造業務に関する基礎的な知識 ・クライアントとの円滑なコミュニケーション能力 ・ドキュメンテーション能力 ・日本語レベル:ネイティブ 【歓迎条件】 ・S/4 HANA Cloud Public EditionのPPモジュールの導入経験 ・SAP Activateの理解
月額単価:
~1,200,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
・S/4 HANA Cloud Public EditionのPPモジュールの導入支援 ・クライアントの業務要件のヒアリングおよび業務プロセス分析 ・システム設計、設定、テスト、ユーザートレーニングのサポート ・導入後の運用サポートおよび改善提案

【CO】

製造業向けS/4HANA導入支援プロジェクトCO支援

要スキル:
・管理会計コンサル(CO)でのコンサル経験
月額単価:
~1,350,000円 / 月
稼働場所:
フルリモート
稼働率:
100%
作業内容:
・SAP S/4HANA システム導入におけるCOモジュールでの要件定義/実装支援を行っていただきます。

【CO】

S/4HANA導入プロジェクト支援(名古屋/COコンサル)

要スキル:
SAP COにおける要件定義コンサル業務経験
月額単価:
~1,650,000円 / 月
稼働場所:
愛知県
稼働率:
100%
作業内容:
SAP S/4HANA システム導入におけるCOモジュールでの要件定義/実装支援を行っていただきます。

【FI】

S/4HANA導入プロジェクト支援(名古屋/FIコンサル)

要スキル:
SAP FIにおける要件定義コンサル業務経験
月額単価:
~1,650,000円 / 月
稼働場所:
愛知県
稼働率:
100%
作業内容:
SAP S/4HANA システム導入におけるFIモジュールでの要件定義/実装支援を行っていただきます。

【PP】

S/4HANA導入プロジェクト支援(名古屋/PPコンサル)

要スキル:
SAP PPにおける要件定義コンサル業務経験
月額単価:
~1,650,000円 / 月
稼働場所:
愛知県
稼働率:
100%
作業内容:
SAP S/4HANA システム導入におけるPPモジュールでの要件定義/実装支援を行っていただきます。

【SD】

S/4HANA導入プロジェクト支援(名古屋/SDコンサル)

要スキル:
SAP SDにおける要件定義コンサル業務経験
月額単価:
~1,650,000円 / 月
稼働場所:
愛知県
稼働率:
100%
作業内容:
SAP S/4HANA システム導入におけるSDモジュールでの要件定義/実装支援を行っていただきます。

【MM】

【PP】

【SD】

組立製造業向けロジ領域におけるS/4導入案件支援

要スキル:
・ロジ関連アドオンの概要設計(基本設計)の経験 ・複数モジュールの知識(SD、MM、PPいずれかのうち最低2つ)
月額単価:
~850,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
SAP S/4HANA導入時にSD/MM/PPモジュールでのアドオン開発が必要となっています。 その際に必要となる概要設計書を要件定義書から作成頂きます。

【MM】

【SD】

S/4 HANA導入 開発フェーズ支援(ロジ系)

要スキル:
・新規設計~テストを一人称で対応可能 ・S/4 HANAのSQL構文に抵抗がない ・ABAP開発経験がある 尚可) ・レビュー経験 ・ALV/クラス/Odata実装経験 ・標準機能の調査可能
月額単価:
~900,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
S/4 HANA導入開発フェーズでのロジ系Add-onの開発支援業務になります。

【CO】

【FI】

【MM】

製造業向けSAP運用保守支援

要スキル:
・SAPの保守や開発業務にてSEとして稼働した経験がある方 ・品質向上に向けた標準化レビューができる方
月額単価:
~800,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
SAPにおける保守業務を担当頂きます。 基本的にはマニュアルに従い作業を進める内容が多いですが、軽微な調査やリカバリの対応等も必要になるので基礎的なSAPの知見・経験は必要となります。
この記事のポイント

数値データ型

ABAPには、数値を表すためのデータ型がいくつかあります。以下がよく使われるものです。

データ型意味有効項目長範囲・精度
I(Integer)整数型固定長(4バイト)-2,147,483,648 ~ 2,147,483,647
P (Packed Decimal)パック形式の小数型可変長(桁数に応じて変動)小数点以下最大14桁の精度
F (Floating-point number)浮動小数点型固定長(8バイト)約15桁の精度
数値データ型

基本的な演算子と計算命令

ABAPで数値操作を行うための基本的な演算子(加算・減算・乗算・除算)と、計算を簡潔にする文法について解説します。

加算(+ または ADD)

加算には演算子 + または ADD命令 が使用されます。

使用例
DATA: num1 TYPE I VALUE 10,
      num2 TYPE I VALUE 3,
      result TYPE I.

* 演算子を使った加算(num1とnum2を加算する)
result = num1 + num2.   " 結果: 13

* 計算命令を使った加算(resultにnum1を加算する)
ADD num1 TO result.     " 結果: 23

このプログラムでは、最初に num1 と num2 を加算し、次に result にさらに num1 を加算しています。最初の result が13で、加算後は 23 となります。

減算(- または SUBTRACT)

減算には演算子 – または SUBTRACT命令 が使用されます。

使用例
DATA: num1 TYPE I VALUE 10,
      num2 TYPE I VALUE 3,
      result TYPE I.

* 演算子を使った減算(num1からnum2を減算する)
result = num1 - num2.      " 結果: 7

* 計算命令を使った減算(resultからnum2を減算する)
SUBTRACT num2 FROM result. " 結果: 4

このプログラムでは、まず num1 から num2 を減算し、その後に result からさらに num2 を減算しています。結果は 4 です。

乗算(* または MULTIPLY)

乗算には演算子 * または MULTIPLY命令 が使用されます。

使用例
DATA: num1 TYPE I VALUE 10,
      num2 TYPE I VALUE 3,
      result TYPE I.

* 演算子を使った乗算(num1とnum2を乗算する)
result = num1 * num2.    " 結果: 30

* 計算命令を使った乗算(resultとnum2を乗算する)
MULTIPLY result BY num2. " 結果: 90

このプログラムでは、最初に num1 と num2 を乗算し、その後 result に再度 num2 を掛けています。最終的な結果は 90 です。

除算(/ または DIVIDE)

除算には演算子 / または DIVIDE命令 が使用されます。
/ 演算子、DIVIDE命令は小数を含む結果を返します。

使用例
DATA: num1 TYPE I VALUE 10,
      num2 TYPE I VALUE 3,
      result TYPE I.

* 演算子を使った除算(num1をnum2で除算する)
result = num1 / num2.    " 結果: 3.33333…

* 計算命令を使った除算(resultをnum1で除算する)
DIVIDE result BY num2.   " 結果: 1.11111…

このプログラムでは、まず num1 を num2 で除算し、その後 result を num2 で再度割っています。DIVIDE 命令も小数を含む結果を返します。

整数除算(DIV)

整数除算には DIV 演算子が使用されます。
小数部分は切り捨てられ、整数の結果が返されます。

使用例
DATA: num1 TYPE I VALUE 10,
      num2 TYPE I VALUE 3,
      result TYPE I.

* 整数除算(num1をnum2で除算する)
result = num1 DIV num2. " 結果: 3

このプログラムでは、num1 を num2 で割った整数部分が返されます。小数部分は無視されます。

剰余(MOD)

剰余計算には MOD 演算子が使用されます。これは、割り算の余りを返します。

使用例
DATA: num1 TYPE I VALUE 10,
      num2 TYPE I VALUE 3,
      result TYPE I.

* 剰余(num1をnum2で除算して余りを格納する)
result = num1 MOD num2. " 結果: 1

このプログラムでは、num1 を num2 で割った余りが返されます。

合計計算(SUM)

SUM 命令は、内部テーブル内の数値フィールドの合計値を計算するために使用されます。LOOP 処理内で使用すると、対象フィールドの値を自動的に集計します。

使用例
DATA: BEGIN OF itab OCCURS 0,
        key    TYPE I,
        field1 TYPE I,
      END OF itab.

* データの登録
itab-key = 1. itab-field1 = 10. APPEND itab.
itab-key = 1. itab-field1 = 20. APPEND itab.
itab-key = 2. itab-field1 = 30. APPEND itab.
itab-key = 2. itab-field1 = 40. APPEND itab.

* 合計計算
LOOP AT itab.
  AT END OF key.
    SUM. " 同じ key の field1 の合計値を計算
    WRITE: / 'Key:', itab-key, 'Sum:', itab-field1.
  ENDAT.
ENDLOOP.

このプログラムでは、LOOP 処理中に AT END OF key を使用して key ごとにデータをグループ化しています。SUM 命令は、同じ key を持つすべてのレコードの field1 を自動的に合計し、最後のレコードにその結果を反映します。この場合、key = 1 の合計は 30、key = 2 の合計は 70 です。

博士

他にも、内部テーブルにレコードを追加すると同時に、キーが一致する場合に数値フィールドを自動的に集約(合計)するCOLLECT 命令があるぞい。

数値関数の利用

ABAPには、数値操作のための便利な関数もいくつかあります。以下はその一部です。

絶対値(ABS)

ABS関数は、数値の絶対値を取得します。負の値の場合は正の値に変換されます。

使用例
DATA: lv_value TYPE I VALUE -15,
      result TYPE I.
result = abs( lv_value ). " 結果は 15

このプログラムでは、変数 lv_value に初期値として -15 が設定されています。ABS 関数を使用することで、負の値が正の値に変換され、結果は 15 となります。

切り上げ(CEIL)

CEIL関数は、数値を最も近い整数に切り上げます。

使用例
DATA: lv_value TYPE F VALUE '3.14',
      result TYPE I.
result = ceil( lv_value ). " 結果は 4

このプログラムでは、変数 lv_value に 3.14 が設定されています。CEIL 関数を使用すると、3.14 は最も近い整数である 4 に切り上げられます。

切り捨て(FLOOR)

FLOOR関数は、数値を最も近い整数に切り捨てます。

使用例
DATA: lv_value TYPE F VALUE '3.99',
      result TYPE I.
result = floor( lv_value ). " 結果は 3

このプログラムでは、変数 lv_value に 3.99 が設定されています。FLOOR 関数を使用すると、小数点以下が切り捨てられ、結果は 3 になります。

小数点以下を切り捨て(TRUNC)

TRUNC関数は、小数点以下を切り捨てて整数部分のみを返します。

使用例
DATA: lv_value TYPE F VALUE '7.68',
      result TYPE I.
result = trunc( lv_value ). " 結果は 7

このプログラムでは、変数 lv_value に 7.68 が設定されています。TRUNC 関数を使用することで、小数点以下が切り捨てられ、結果は 7 となります。

四捨五入(ROUND)

ROUND関数は、指定した小数点以下の桁数に四捨五入します。

使用例
DATA: lv_value TYPE P DECIMALS 2 VALUE '3.456',
      result TYPE F.
result = round( val = lv_value dec = 1 ). " 結果は 3.5

このプログラムでは、変数 lv_value に 3.456 が設定されています。ROUND 関数を使用して、小数点第1位に四捨五入され、結果は 3.5 になります。

数値のフォーマットと出力

ABAPでは、フォーマット指定で数値の出力を見やすく整形できます。通貨や桁区切りを指定することで、ユーザーにとっても見やすい表示が可能です。

小数点以下の桁数を指定

使用例
DATA: lv_value TYPE P DECIMALS 2 VALUE '1234.5678'.
WRITE: / lv_value. " 出力は 1234.57

このプログラムでは、lv_value の値が小数点以下2桁に丸められて表示されます。結果は 1234.57 となります。

数値操作の使用例

カウンタの増加と減少

ループ処理でカウンタを増加させることはよく行われます。

使用例
DATA: counter TYPE I VALUE 0.
DO 10 TIMES.
  ADD 1 TO counter.
ENDDO.
WRITE: / counter. " 結果は 10

このプログラムでは、DO 10 TIMES ループが10回繰り返されるたびに、カウンタが1ずつ増加します。最終的な結果は 10 となります。

演算結果の丸め誤差対策

浮動小数点の計算では、丸め誤差が生じることがあります。桁数を指定することで、精度を管理します。

使用例
DATA: result TYPE P DECIMALS 2 VALUE '0'.
result = 10 / 3.
WRITE: / result. " 出力は 3.33

このプログラムでは、10を3で割った結果が小数点第2位まで表示されます。丸められた結果は 3.33 です。

まとめ

ABAPにおける数値操作は、業務処理において重要な役割を担っています。基本的なデータ型、演算子や計算命令(ADD、SUBTRACT、MULTIPLY、DIVIDE)、そして便利な数値関数を活用することで、効率的で精度の高い数値計算が可能です。適切な操作方法をマスターしましょう!

新着のSAPフリーランス案件

【CO】

【FI】

S/4 HANA FI/CO導入支援(シニアレベル)

要スキル:
・S/4 HANA (FI/CO)の導入経験(8年以上) ・財務会計に関する業務知識 ・クライアント及び他コンサルメンバーとの円滑なコミュニケーション能力 ・ドキュメンテーション能力 ・日本語レベル:ネイティブ 【歓迎条件】 ・S/4 HANA Cloud Public EditionのFI/COモジュールの導入経験 ・SAP Activateの理解 ・チームリーダー経験
月額単価:
~1,700,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
・S/4 HANA Cloud Public EditionのFI/COモジュールの導入 ・クライアントの業務要件のヒアリングおよび業務プロセス分析 ・システム設計、設定、テスト、ユーザートレーニングの実施 ・導入後の運用サポートおよび改善提案

【PP】

S/4 HANA PP導入支援(ジュニアレベル)

要スキル:
・S/4 HANA (PP)の導入経験(2年以上) ・生産管理や製造業務に関する基礎的な知識 ・クライアントとの円滑なコミュニケーション能力 ・ドキュメンテーション能力 ・日本語レベル:ネイティブ 【歓迎条件】 ・S/4 HANA Cloud Public EditionのPPモジュールの導入経験 ・SAP Activateの理解
月額単価:
~1,200,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
・S/4 HANA Cloud Public EditionのPPモジュールの導入支援 ・クライアントの業務要件のヒアリングおよび業務プロセス分析 ・システム設計、設定、テスト、ユーザートレーニングのサポート ・導入後の運用サポートおよび改善提案

【CO】

製造業向けS/4HANA導入支援プロジェクトCO支援

要スキル:
・管理会計コンサル(CO)でのコンサル経験
月額単価:
~1,350,000円 / 月
稼働場所:
フルリモート
稼働率:
100%
作業内容:
・SAP S/4HANA システム導入におけるCOモジュールでの要件定義/実装支援を行っていただきます。

【CO】

S/4HANA導入プロジェクト支援(名古屋/COコンサル)

要スキル:
SAP COにおける要件定義コンサル業務経験
月額単価:
~1,650,000円 / 月
稼働場所:
愛知県
稼働率:
100%
作業内容:
SAP S/4HANA システム導入におけるCOモジュールでの要件定義/実装支援を行っていただきます。

【FI】

S/4HANA導入プロジェクト支援(名古屋/FIコンサル)

要スキル:
SAP FIにおける要件定義コンサル業務経験
月額単価:
~1,650,000円 / 月
稼働場所:
愛知県
稼働率:
100%
作業内容:
SAP S/4HANA システム導入におけるFIモジュールでの要件定義/実装支援を行っていただきます。

【PP】

S/4HANA導入プロジェクト支援(名古屋/PPコンサル)

要スキル:
SAP PPにおける要件定義コンサル業務経験
月額単価:
~1,650,000円 / 月
稼働場所:
愛知県
稼働率:
100%
作業内容:
SAP S/4HANA システム導入におけるPPモジュールでの要件定義/実装支援を行っていただきます。

【SD】

S/4HANA導入プロジェクト支援(名古屋/SDコンサル)

要スキル:
SAP SDにおける要件定義コンサル業務経験
月額単価:
~1,650,000円 / 月
稼働場所:
愛知県
稼働率:
100%
作業内容:
SAP S/4HANA システム導入におけるSDモジュールでの要件定義/実装支援を行っていただきます。

【MM】

【PP】

【SD】

組立製造業向けロジ領域におけるS/4導入案件支援

要スキル:
・ロジ関連アドオンの概要設計(基本設計)の経験 ・複数モジュールの知識(SD、MM、PPいずれかのうち最低2つ)
月額単価:
~850,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
SAP S/4HANA導入時にSD/MM/PPモジュールでのアドオン開発が必要となっています。 その際に必要となる概要設計書を要件定義書から作成頂きます。

【MM】

【SD】

S/4 HANA導入 開発フェーズ支援(ロジ系)

要スキル:
・新規設計~テストを一人称で対応可能 ・S/4 HANAのSQL構文に抵抗がない ・ABAP開発経験がある 尚可) ・レビュー経験 ・ALV/クラス/Odata実装経験 ・標準機能の調査可能
月額単価:
~900,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
S/4 HANA導入開発フェーズでのロジ系Add-onの開発支援業務になります。

【CO】

【FI】

【MM】

製造業向けSAP運用保守支援

要スキル:
・SAPの保守や開発業務にてSEとして稼働した経験がある方 ・品質向上に向けた標準化レビューができる方
月額単価:
~800,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
SAPにおける保守業務を担当頂きます。 基本的にはマニュアルに従い作業を進める内容が多いですが、軽微な調査やリカバリの対応等も必要になるので基礎的なSAPの知見・経験は必要となります。

★★★SAPラボのライター募集★★★

SAPラボでは、SAPの知識を活かして副業をしたい方を募集してるのじゃ!

SAPラボのライターの特徴

・ライティング初心者OK!
・報酬高単価!
・業務委託契約なので副業として最適!

SAP記事執筆者としての活動実績として利用可能なので、転職時や案件探しの際に企業へのアピール材料にもなります。

募集要項

・SAP導入や運用保守プロジェクトへの参画経験1年以上

ご応募/お問合せ先

info@sap-labo.com

少しでもご興味ある方、ぜひお気軽にご連絡下さい!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

新卒でSAPエンジニアとしてABAPでの新規開発や保守業務を担当。
業務内容としてはロジ系(MM/SD)がメインで、ABAPの開発が最も得意。

この記事のポイント