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

博士
SAPラボの所長。SAP大好き博士!SAP導入プロジェクトを構想策定~運用保守まであらゆるフェーズを数多く経験。
いまは優しきおじいちゃんだが、プロマネバリバリの時代はかなり怖かったらしい。現在は引退し、SAPの後進育成と啓蒙活動に従事中!
登場人物紹介
三崎レイナ
社会人1年目。新卒でITコンサルティングファームに就職。初配属がSAPプロジェクトにアサインされる。SAPがわからないことだらけで悩んでいたところ、会社の先輩にSAPラボの所長を紹介され、毎週末に所長とSAPのお勉強中!
博士
SAPラボの所長。SAP大好き博士!SAP導入プロジェクトを構想策定~運用保守まであらゆるフェーズを数多く経験。
いまは優しきおじいちゃんだが、プロマネバリバリの時代はかなり怖かったらしい。現在は引退し、SAPの後進育成と啓蒙活動に従事中!
この記事を読むメリット
今回はABAPの数値操作について説明するぞい!
SAPのABAPプログラミングでは、数値の操作は多くの業務処理に欠かせません。この記事では、数値データの扱い方について、基本的なデータ型、よく使われる関数、計算方法、そして便利な関数を紹介します。
新着のSAPフリーランス案件
【CO】
【FI】
【MM】
【PP】
【SD】
【S/4HANAモジュールコンサル~基本設計支援】東京都/リモート併用/即日~
担当領域のコンサルタント業務
要件定義(基本設計)~本稼働までの対応
アドオン設計、受入テスト
顧客やその他関係者とのセッション
【FI】
【不動産業向けSAP導入支援(財務会計・RPA)】東京都/オンサイト/即日~2027年1月
SAP FI(財務会計)領域の導入経験
RPA(WinActor・VBA)による業務効率化経験
業務理解をもとにした仕様整理・開発連携が可能であること
不動産業のバックオフィス業務におけるSAP導入支援
財務会計領域の実現フェーズ支援(要件に基づいた開発支援)
RPA(WinActor/VBA)を活用した自動化実装支援
【FI】
【不動産業向けSAP導入支援(財務会計・RPA)】大阪/オンサイト/即日~2027年1月
SAP FI(財務会計)領域の導入経験
RPA(WinActor・VBA)による業務効率化経験
業務理解をもとにした仕様整理・開発連携が可能であること
不動産業のバックオフィス業務におけるSAP導入支援
財務会計領域の実現フェーズ支援(要件に基づいた開発支援)
RPA(WinActor/VBA)を活用した自動化実装支援
【FI】
【エネルギー業向けSAP会計テスト支援】東京都/リモート併用/即日~
次期ERP導入プロジェクトにおける会計領域のテスト支援
テスト計画/ケース策定、テスト実施支援
会計チームと連携した進捗管理、課題対応
【SD】
【その他】
【食品業向けSAP構想策定支援(販売・物流)】東京都/リモート併用/2025年6月~
食品業界のクライアント向けSAPテンプレート導入プロジェクトの構想策定支援
販売(SD)および物流(LE)領域の業務整理、To-Be定義、ギャップ分析等
チームリーダーとしてプロジェクト全体の推進
【CO】
【FI】
【MM】
【PP】
【SD】
【その他】
【塗料会社向けS/4HANA導入プロジェクト】テスト移行フェーズ支援/フルリモート+大阪出張あり
いずれかのモジュールにおけるSAPの標準機能の理解
SAPでのデータ移行などの業務経験
事前に定義された手順に沿って、データの事前検証、投入、投入後検証を実施
リハーサルを通じて手順の不備があれば修正を実施
不具合発生時に原因を調査し、データ作成元のお客様とコミュニケーションを取って解決
業務的な不具合にも対応できるよう、前提となる業務やシステムの理解
若手メンバーのサポート
【CO】
【FI】
【MM】
【PP】
【SD】
精密機器企業向けS/4 HANAの新規導入支援(既存EBS)
業務フロー作成(Lv4)および領域ごとの論点検討/要件定義の実施経験
担当領域のCRP準備/実施経験
要件定義から本稼働までのフルサイクルの経験
業務フローの整理および論点検討
担当領域の要件定義
CRP(Conference Room Pilot)の準備および実施
本社および工場を対象とした業務プロセスの最適化
【MM】
【PP】
製造業向けSAP基幹システム保守運用プロジェクト
SAP PPまたはMMモジュールでの業務経験
SAP保守運用の経験
顧客との円滑なコミュニケーション能力
本案件では製造業のエンドユーザー企業におけるSAP基幹システムの保守運用をご担当いただきます。
現在のベンダーからの引継ぎを行い、システム管理、保守運用、周辺システムとの連携などを実施していただきます。
具体的な作業内容としては以下が想定されます。
定常監視
障害対応
顧客報告
周辺システム連携
【MM】
【PP】
【その他】
製造業(自動車部品)のグローバルテンプレートロールイン
MM、PP、EWMいずれかのSAPモジュールにおけるコンサルティング経験
構想・先行検討フェーズの推進経験
グローバルプロジェクトでの業務経験
グローバルテンプレートの維持管理
テンプレートの拡張
業務要件の整理とFit&Gap分析
カスタマイズ設定
関係者との調整
【MM】
【PP】
製造業向けSAP PP領域の工場展開支援
ABAPには、数値を表すためのデータ型がいくつかあります。以下がよく使われるものです。
データ型 | 意味 | 有効項目長 | 範囲・精度 |
---|---|---|---|
I(Integer) | 整数型 | 固定長(4バイト) | -2,147,483,648 ~ 2,147,483,647 |
P (Packed Decimal) | パック形式の小数型 | 可変長(桁数に応じて変動) | 小数点以下最大14桁の精度 |
F (Floating-point number) | 浮動小数点型 | 固定長(8バイト) | 約15桁の精度 |
ABAPで数値操作を行うための基本的な演算子(加算・減算・乗算・除算)と、計算を簡潔にする文法について解説します。
加算には演算子 + または 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命令 が使用されます。
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命令 が使用されます。
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命令は小数を含む結果を返します。
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 演算子が使用されます。
小数部分は切り捨てられ、整数の結果が返されます。
DATA: num1 TYPE I VALUE 10,
num2 TYPE I VALUE 3,
result TYPE I.
* 整数除算(num1をnum2で除算する)
result = num1 DIV num2. " 結果: 3
このプログラムでは、num1 を num2 で割った整数部分が返されます。小数部分は無視されます。
剰余計算には 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 命令は、内部テーブル内の数値フィールドの合計値を計算するために使用されます。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関数は、数値の絶対値を取得します。負の値の場合は正の値に変換されます。
DATA: lv_value TYPE I VALUE -15,
result TYPE I.
result = abs( lv_value ). " 結果は 15
このプログラムでは、変数 lv_value に初期値として -15 が設定されています。ABS 関数を使用することで、負の値が正の値に変換され、結果は 15 となります。
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関数は、数値を最も近い整数に切り捨てます。
DATA: lv_value TYPE F VALUE '3.99',
result TYPE I.
result = floor( lv_value ). " 結果は 3
このプログラムでは、変数 lv_value に 3.99 が設定されています。FLOOR 関数を使用すると、小数点以下が切り捨てられ、結果は 3 になります。
TRUNC関数は、小数点以下を切り捨てて整数部分のみを返します。
DATA: lv_value TYPE F VALUE '7.68',
result TYPE I.
result = trunc( lv_value ). " 結果は 7
このプログラムでは、変数 lv_value に 7.68 が設定されています。TRUNC 関数を使用することで、小数点以下が切り捨てられ、結果は 7 となります。
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】
【PP】
【SD】
【S/4HANAモジュールコンサル~基本設計支援】東京都/リモート併用/即日~
担当領域のコンサルタント業務
要件定義(基本設計)~本稼働までの対応
アドオン設計、受入テスト
顧客やその他関係者とのセッション
【FI】
【不動産業向けSAP導入支援(財務会計・RPA)】東京都/オンサイト/即日~2027年1月
SAP FI(財務会計)領域の導入経験
RPA(WinActor・VBA)による業務効率化経験
業務理解をもとにした仕様整理・開発連携が可能であること
不動産業のバックオフィス業務におけるSAP導入支援
財務会計領域の実現フェーズ支援(要件に基づいた開発支援)
RPA(WinActor/VBA)を活用した自動化実装支援
【FI】
【不動産業向けSAP導入支援(財務会計・RPA)】大阪/オンサイト/即日~2027年1月
SAP FI(財務会計)領域の導入経験
RPA(WinActor・VBA)による業務効率化経験
業務理解をもとにした仕様整理・開発連携が可能であること
不動産業のバックオフィス業務におけるSAP導入支援
財務会計領域の実現フェーズ支援(要件に基づいた開発支援)
RPA(WinActor/VBA)を活用した自動化実装支援
【FI】
【エネルギー業向けSAP会計テスト支援】東京都/リモート併用/即日~
次期ERP導入プロジェクトにおける会計領域のテスト支援
テスト計画/ケース策定、テスト実施支援
会計チームと連携した進捗管理、課題対応
【SD】
【その他】
【食品業向けSAP構想策定支援(販売・物流)】東京都/リモート併用/2025年6月~
食品業界のクライアント向けSAPテンプレート導入プロジェクトの構想策定支援
販売(SD)および物流(LE)領域の業務整理、To-Be定義、ギャップ分析等
チームリーダーとしてプロジェクト全体の推進
【CO】
【FI】
【MM】
【PP】
【SD】
【その他】
【塗料会社向けS/4HANA導入プロジェクト】テスト移行フェーズ支援/フルリモート+大阪出張あり
いずれかのモジュールにおけるSAPの標準機能の理解
SAPでのデータ移行などの業務経験
事前に定義された手順に沿って、データの事前検証、投入、投入後検証を実施
リハーサルを通じて手順の不備があれば修正を実施
不具合発生時に原因を調査し、データ作成元のお客様とコミュニケーションを取って解決
業務的な不具合にも対応できるよう、前提となる業務やシステムの理解
若手メンバーのサポート
【CO】
【FI】
【MM】
【PP】
【SD】
精密機器企業向けS/4 HANAの新規導入支援(既存EBS)
業務フロー作成(Lv4)および領域ごとの論点検討/要件定義の実施経験
担当領域のCRP準備/実施経験
要件定義から本稼働までのフルサイクルの経験
業務フローの整理および論点検討
担当領域の要件定義
CRP(Conference Room Pilot)の準備および実施
本社および工場を対象とした業務プロセスの最適化
【MM】
【PP】
製造業向けSAP基幹システム保守運用プロジェクト
SAP PPまたはMMモジュールでの業務経験
SAP保守運用の経験
顧客との円滑なコミュニケーション能力
本案件では製造業のエンドユーザー企業におけるSAP基幹システムの保守運用をご担当いただきます。
現在のベンダーからの引継ぎを行い、システム管理、保守運用、周辺システムとの連携などを実施していただきます。
具体的な作業内容としては以下が想定されます。
定常監視
障害対応
顧客報告
周辺システム連携
【MM】
【PP】
【その他】
製造業(自動車部品)のグローバルテンプレートロールイン
MM、PP、EWMいずれかのSAPモジュールにおけるコンサルティング経験
構想・先行検討フェーズの推進経験
グローバルプロジェクトでの業務経験
グローバルテンプレートの維持管理
テンプレートの拡張
業務要件の整理とFit&Gap分析
カスタマイズ設定
関係者との調整
【MM】
【PP】
製造業向けSAP PP領域の工場展開支援
SAPラボでは、SAPの知識を活かして副業をしたい方を募集してるのじゃ!
SAPラボのライターの特徴
・ライティング初心者OK!
・報酬高単価!
・業務委託契約なので副業として最適!
SAP記事執筆者としての活動実績として利用可能なので、転職時や案件探しの際に企業へのアピール材料にもなります。
募集要項
・SAP導入や運用保守プロジェクトへの参画経験1年以上
ご応募/お問合せ先
info@sap-labo.com
少しでもご興味ある方、ぜひお気軽にご連絡下さい!
新卒でSAPエンジニアとしてABAPでの新規開発や保守業務を担当。
業務内容としてはロジ系(MM/SD)がメインで、ABAPの開発が最も得意。