【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】

【MM】

【SD】

商社向けSAP導入プロジェクト支援

要スキル:
FI、CO、SD、MMの中の一つのモジュールで要件定義経験から一人称で対応可能な方
月額単価:
~1,500,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
各モジュールについてSAPコンサルとして下記の対応を想定 ・要件定義 ・Add-on外部設計書の作成 ・Add-on受入の検証作業

【CO】

【PP】

グループ内新会社設立対応支援

要スキル:
◇募集要領 ・モジュール CO:シニアコンサル1名 PP:シニアコンサル1名  ・スキル FIT&GAPの結果を理解し、売却先グループ会社のシステムを活かしつつ、新会社のシステム設計の検討ができること ・カスタマイズの検討 現行のアドオンを調査し、先方システムでの対応方法の検討を支援 ・移行について、移行要件の検討とマッピング作業を支援 売却先システムへの移行要件の検討ができること 一部、周辺システムからの移行もあり 現行のマスタ、トランの項目定義調査(アドオン含む) 実機でのデータ調査 ユーザ側のマスタ整備の支援 
月額単価:
~1,500,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
・製造ラインを他社に売却し、売却先で新会社を設立。 ・現行はSAPを使用。 売却先のグループ会社もSAPを導入しており、売却先のSAPを使用して設立新会社を新たにSAPに加える対応。できる限り、追加アドオンせずに現行機能ベースでSAP使用する方針。 ・現行と売却先グループとの業務・システムのFIT&GAPは完了。  現在、それを踏まえて新会社の業務・システムの要件定義を実施中。 ・今後は移行要件の検討、マッピング作業の支援、 売却先グループで実施したシステム設定・アドオン設計のレビュー、UATの支援を実施。 2025年7月に新会社をSAPシステムにサービスイン

【FI】

BlackLine導入案件支援

要スキル:
会計業務シニアコンサルタント(日本人が望ましい) 必須: SAP FI(特にAR)導入経験及び知識 お客様をリードできるスキル及び経験 会計システム調査経験 あると良い: SAP Public Cloud導入経験
月額単価:
~1,900,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
タスク: ・現行コンサル会社からUATを引き継いでリード。 ・4月以降にBlackLineを導入する会社の現行業務およびシステム解析

【FI】

S/4HANAへのバージョンアップ支援(Jrコンサル可)

要スキル:
・FIの標準機能と会計業務に関する知識 ・FIのプロジェクトにおけるコンサルとしての業務経験 【尚可】 FI-AAの業務経験
月額単価:
~800,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
S/4HANAへバージョンアップに向けた、会計領域の要件定義を行っております。 要件定義後の移行設計や作業も行っていただく想定です。 ・現行の業務の整理 ・移行要件定義 ・現行のアドオン調査と設計 ・移行設計 ・移行作業 など

【PP】

メーカー向けSAP移行プロジェクト支援

要スキル:
・PPモジュールでのコンサルとしての業務経験 ・SAPプロジェクトにおける総合テストやユーザテストの対応経験 ・チームリーダーとしての経験
月額単価:
~1,500,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
ECCからS/4HANAへのバージョンアップを行っています。業務自体も見直し再構築する流れとなっており2026年の稼働に向けてプロジェクトが進んでおります。 ・インターフェース設計 ・ジョブ設計 ・総合テスト対応(不具合調査など含む) ・ユーザテスト対応(不具合調査など含む) など

【MM】

【SD】

製造業向けロジ領域の運用保守支援

要スキル:
・SDもしくはMMでのコンサルとしての業務経験 ・アドオン機能(ABAP)の調査経験 ・改善提案の経験
月額単価:
~900,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
フルモジュール稼働しているシステムにおける運用保守業務を担当頂きます。 ・顧客からのQA対応 ・不具合の調査や改善提案 ・顧客要望による機能拡張調査や実装~テスト など ※今後、S/4HANAへのバージョンアッププロジェクトも控えております。  そのプロジェクトにもアサイン頂く可能性がございます。

【BASIS】

【MM】

【SD】

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

要スキル:
・SDもしくはMMもしくはBASISでのコンサルとしての業務経験
月額単価:
~900,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
製造業のクライアント向けの運用保守業務を担当頂きます。 ・顧客からのQA対応 ・不具合の調査や改善提案 ・顧客要望による機能拡張調査や実装~テスト

【CO】

【FI】

【MM】

【PP】

【SD】

大手メーカー社向けSAP導入支援

要スキル:
・SAPコンサルとしてロジ領域もしくは会計領域での要件定義から本番稼働まで担当した経験
月額単価:
~1,400,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
複数の子会社を持つ大手メーカーでのSAP導入プロジェクトになります。 まずは数年かけ本社へのSAP導入を実施し、その後子会社へ展開する予定となります。 ・要件定義 ・プロトタイプの作成 ・アドオン設計 ・開発チームへの依頼や受け入れ等 ・総合テストやユーザテスト など

【FI】

商社向け基幹システムバージョン支援

要スキル:
(必須) SAP S/4HANA FIモジュールの保守開発経験(障害対応など) ABAP開発経験 (尚可) 商社関連案件の経験 リーダー経験
月額単価:
~1,000,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
SAPベースの基幹システムのバージョンアップ(S/4HANA1909⇒S/4HANA2023)に伴う調査を行っていただきます。 担当いただくモジュールはFIになります。機能毎の影響度や動作確認を行います。 また、SAP案件でのリーダー経験がある場合は上記のバージョンアップ調査ではなく 通常の保守チームにアサインいただく可能性もございます。(ユーザー窓口対応、問合せ調査・障害対応、マスタメンテナンス) バージョンアップ調査のチーム構成としては、SD、MM担当が1名、FI担当が1名となります。 そのため、基本的に1人称で調査を行い報告まで行っていただきます。 バージョンアップのスケジュール感 調査:2024年1月まで 実施:2024年2月から

【FI】

SAP運用業務支援

要スキル:
・SAPにおける運用保守経験(3年以上目安) ・FIまたはMMのユーザーとしての使用経験
月額単価:
~900,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
【作業概要】 現行SAP ECCからS/4 HANAへの移行試験が進行中です。 【作業内容】  現行SAP ECCのAA、FI、MMモジュールにおける運用業務  ・問合せ対応  ・障害対応  ・運用オペレーション
この記事のポイント

数値データ型

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】

【MM】

【SD】

商社向けSAP導入プロジェクト支援

要スキル:
FI、CO、SD、MMの中の一つのモジュールで要件定義経験から一人称で対応可能な方
月額単価:
~1,500,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
各モジュールについてSAPコンサルとして下記の対応を想定 ・要件定義 ・Add-on外部設計書の作成 ・Add-on受入の検証作業

【CO】

【PP】

グループ内新会社設立対応支援

要スキル:
◇募集要領 ・モジュール CO:シニアコンサル1名 PP:シニアコンサル1名  ・スキル FIT&GAPの結果を理解し、売却先グループ会社のシステムを活かしつつ、新会社のシステム設計の検討ができること ・カスタマイズの検討 現行のアドオンを調査し、先方システムでの対応方法の検討を支援 ・移行について、移行要件の検討とマッピング作業を支援 売却先システムへの移行要件の検討ができること 一部、周辺システムからの移行もあり 現行のマスタ、トランの項目定義調査(アドオン含む) 実機でのデータ調査 ユーザ側のマスタ整備の支援 
月額単価:
~1,500,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
・製造ラインを他社に売却し、売却先で新会社を設立。 ・現行はSAPを使用。 売却先のグループ会社もSAPを導入しており、売却先のSAPを使用して設立新会社を新たにSAPに加える対応。できる限り、追加アドオンせずに現行機能ベースでSAP使用する方針。 ・現行と売却先グループとの業務・システムのFIT&GAPは完了。  現在、それを踏まえて新会社の業務・システムの要件定義を実施中。 ・今後は移行要件の検討、マッピング作業の支援、 売却先グループで実施したシステム設定・アドオン設計のレビュー、UATの支援を実施。 2025年7月に新会社をSAPシステムにサービスイン

【FI】

BlackLine導入案件支援

要スキル:
会計業務シニアコンサルタント(日本人が望ましい) 必須: SAP FI(特にAR)導入経験及び知識 お客様をリードできるスキル及び経験 会計システム調査経験 あると良い: SAP Public Cloud導入経験
月額単価:
~1,900,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
タスク: ・現行コンサル会社からUATを引き継いでリード。 ・4月以降にBlackLineを導入する会社の現行業務およびシステム解析

【FI】

S/4HANAへのバージョンアップ支援(Jrコンサル可)

要スキル:
・FIの標準機能と会計業務に関する知識 ・FIのプロジェクトにおけるコンサルとしての業務経験 【尚可】 FI-AAの業務経験
月額単価:
~800,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
S/4HANAへバージョンアップに向けた、会計領域の要件定義を行っております。 要件定義後の移行設計や作業も行っていただく想定です。 ・現行の業務の整理 ・移行要件定義 ・現行のアドオン調査と設計 ・移行設計 ・移行作業 など

【PP】

メーカー向けSAP移行プロジェクト支援

要スキル:
・PPモジュールでのコンサルとしての業務経験 ・SAPプロジェクトにおける総合テストやユーザテストの対応経験 ・チームリーダーとしての経験
月額単価:
~1,500,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
ECCからS/4HANAへのバージョンアップを行っています。業務自体も見直し再構築する流れとなっており2026年の稼働に向けてプロジェクトが進んでおります。 ・インターフェース設計 ・ジョブ設計 ・総合テスト対応(不具合調査など含む) ・ユーザテスト対応(不具合調査など含む) など

【MM】

【SD】

製造業向けロジ領域の運用保守支援

要スキル:
・SDもしくはMMでのコンサルとしての業務経験 ・アドオン機能(ABAP)の調査経験 ・改善提案の経験
月額単価:
~900,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
フルモジュール稼働しているシステムにおける運用保守業務を担当頂きます。 ・顧客からのQA対応 ・不具合の調査や改善提案 ・顧客要望による機能拡張調査や実装~テスト など ※今後、S/4HANAへのバージョンアッププロジェクトも控えております。  そのプロジェクトにもアサイン頂く可能性がございます。

【BASIS】

【MM】

【SD】

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

要スキル:
・SDもしくはMMもしくはBASISでのコンサルとしての業務経験
月額単価:
~900,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
製造業のクライアント向けの運用保守業務を担当頂きます。 ・顧客からのQA対応 ・不具合の調査や改善提案 ・顧客要望による機能拡張調査や実装~テスト

【CO】

【FI】

【MM】

【PP】

【SD】

大手メーカー社向けSAP導入支援

要スキル:
・SAPコンサルとしてロジ領域もしくは会計領域での要件定義から本番稼働まで担当した経験
月額単価:
~1,400,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
複数の子会社を持つ大手メーカーでのSAP導入プロジェクトになります。 まずは数年かけ本社へのSAP導入を実施し、その後子会社へ展開する予定となります。 ・要件定義 ・プロトタイプの作成 ・アドオン設計 ・開発チームへの依頼や受け入れ等 ・総合テストやユーザテスト など

【FI】

商社向け基幹システムバージョン支援

要スキル:
(必須) SAP S/4HANA FIモジュールの保守開発経験(障害対応など) ABAP開発経験 (尚可) 商社関連案件の経験 リーダー経験
月額単価:
~1,000,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
SAPベースの基幹システムのバージョンアップ(S/4HANA1909⇒S/4HANA2023)に伴う調査を行っていただきます。 担当いただくモジュールはFIになります。機能毎の影響度や動作確認を行います。 また、SAP案件でのリーダー経験がある場合は上記のバージョンアップ調査ではなく 通常の保守チームにアサインいただく可能性もございます。(ユーザー窓口対応、問合せ調査・障害対応、マスタメンテナンス) バージョンアップ調査のチーム構成としては、SD、MM担当が1名、FI担当が1名となります。 そのため、基本的に1人称で調査を行い報告まで行っていただきます。 バージョンアップのスケジュール感 調査:2024年1月まで 実施:2024年2月から

【FI】

SAP運用業務支援

要スキル:
・SAPにおける運用保守経験(3年以上目安) ・FIまたはMMのユーザーとしての使用経験
月額単価:
~900,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
【作業概要】 現行SAP ECCからS/4 HANAへの移行試験が進行中です。 【作業内容】  現行SAP ECCのAA、FI、MMモジュールにおける運用業務  ・問合せ対応  ・障害対応  ・運用オペレーション

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

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

SAPラボのライターの特徴

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

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

募集要項

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

ご応募/お問合せ先

info@sap-labo.com

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

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

この記事を書いた人

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

この記事のポイント