【SAP ABAP】基本構文:条件分岐(IF、CASE)

登場人物紹介

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

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

この記事を読むメリット

  • IF文、CASE文を使用して、条件分岐の処理を作成できるようになります。
博士

今回は条件分岐について説明するぞい!

条件分岐は、プログラムが特定の状況や条件に応じて異なる処理を行うための重要な構文です。これをマスターすることで、プログラムをもっと柔軟かつ効率的に動かすことができます。頻繁に使用されるのでしっかりマスターしておきましょう。

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

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

【MM】

【PP】

製造業向けSAP PP領域の工場展開支援

要スキル:
・PP/MMのSAP導入をコンサルとして要件定義の対応経験のある方 ・顧客と直接対話し、業務を進めて頂く事が可能な方 ・国内の工場への出張対応が可能な方(関西方面や九州など)
月額単価:
~1,700,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
顧客用テンプレートをベースとした国内工場へのSAP展開プロジェクトになります。 PPコンサルタントとしてFit&GAP、課題検討、テストや移行支援を実施頂きます。

【SD】

大手国内SIer関連会社に対するテンプレート展開PJの要件定義支援(SD)

要スキル:
・SD領域における要件定義の対応経験 ・顧客折衝し業務を推進していける方
月額単価:
~1,750,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
関連会社へテンプレートを用いSAP展開していくプロジェクトとなります。 SDのコンサルタントとして要件定義からご担当頂きます。

【FI】

大手国内SIer関連会社に対するテンプレート展開PJの要件定義支援(FI)

要スキル:
・FI領域における要件定義の対応経験 ・顧客折衝し業務を推進していける方
月額単価:
~1,750,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
関連会社へテンプレートを用いSAP展開していくプロジェクトとなります。 FIのコンサルタントとして要件定義からご担当頂きます。

【FI】

輸送用機器企業様向けS/4導入案件支援

要スキル:
S/4HANAでの上流工程の業務経験
月額単価:
~1,600,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
国内基幹システムをSAP S/4HANAへ移行する案件プロジェクトになります。 同社の海外向けS/4販売物流テンプレートを日本向けにロールインするもの。 現在、基本設計フェーズに着手中(~2025/4)。2027/1リリース予定。

【CO】

【FI】

S/4HANA Privateの導入支援(開発~単体テスト)

要スキル:
・ABAP開発経験5年以上の方 【尚可】 ・基本設計者と開発者をつなぐような品質管理やリーダーポジションを対応できる方
月額単価:
~850,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
基本的に会計系のモジュールにおける詳細設計以降の工程を担当頂きます。

【PP】

生産領域(PP)でのテスト工程支援

要スキル:
・テスト工程におけるSAP導入のプロジェクト経験がある方 ・PPモジュール経験があり、顧客と対峙してタスクの推進ができる方 ※コミュニケーション力重視
月額単価:
~1,500,000円 / 月
稼働場所:
フルリモート
稼働率:
100%
作業内容:
国内大手化学品メーカー向けのS/4 HANAへの移行プロジェクトにおいて、S/4チームの生産チームメンバー・タスクリーダーとして稼働頂きます。 ・結合テスト、システムテスト、ユーザテストの計画・推進・実施 ・ユーザ教育(業務変更点説明、オペレーション教育)および移行タスクの推進(業務切替、システム切替の周知や啓蒙活動)

【CO】

【FI】

ハードウエアリプレイスに伴うSAPシステム検証支援

要スキル:
・SAPの会計領域の知識がある方
月額単価:
~800,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
サーバの引っ越しに伴いSAPの機能変更等はないものの、システムが正しく動作するのかを検証するためのプロジェクトです。 対象モジュールはFI/COとなり、該当モジュールにおけるテストシナリオ作成・システムデータ作成・SAPの動作確認を行っております。 業務フローやSAPマニュアルがあるので、それを基にテストシナリオを作成して進めて頂きます。

【SD】

空調機メーカーS/4導入におけるFiori設計支援

要スキル:
・要件確認から設計書修正~開発受入実施ができる方 ・デバックで不具合箇所を特定できる方 ・販売領域における標準テーブルの知識を持っている方
月額単価:
~1,100,000円 / 月
稼働場所:
フルリモート
稼働率:
100%
作業内容:
S/4導入時におけるFioriの設計以降の作業をご担当頂きます。

【MM】

【PP】

電気機器メーカー向けSAPの運用保守支援

要スキル:
業務要件を整理して、設計書、ABAP開発が可能な方。 Jrコンサル、SEレベルの方が望ましい
月額単価:
~1,000,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
SAPのAdd-on追加開発または、運用保守をご担当頂きます。 業務領域としては、MMおよびPP領域となります。

【MM】

【SD】

ERPシステム要件定義支援

要スキル:
パラメータ定義(要件をカスタマイズに落とし込む)やアドオン機能設計ができること
月額単価:
~1,300,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
パラメータ定義(要件をカスタマイズに落とし込む)やアドオン機能設計などをご担当いただきます。
この記事のポイント

条件分岐について

条件分岐とは、プログラム内で特定の条件を判断し、条件を満たしているかどうかに基づいて処理を変更することです。「もし〇〇が△△ならば××をする」というように、条件に応じて処理を分岐させます。条件分岐を実現するためにABAPでは”IF文”と”CASE文”を使用します。

IF文(IF~ENDIF)

博士

まずはIF文じゃ。
IF文は条件式が真(TRUE)か偽(FALSE)かに基づいて異なる処理を実行するぞい!

構文
 IF 条件式1.
  条件式1が真の場合に実行する処理.
 ELSEIF 条件式2.
  条件式2が真の場合に実行する処理.
 ELSE.
  全ての条件が偽の場合に実行する処理.
 ENDIF.
 ※”IF”、”ELSEIF”、”ELSE”、”ENDIF”の後にそれぞれ”.”(ピリオド)が必要です。
 ※複数の条件分岐を行いたい場合は”ELSEIF”を使用します(複数追加可能)。また、
“ELSE”は省略することも可能です。

使用例
DATA: lv_message TYPE string. " メッセージを格納する変数を宣言

PARAMETERS: p_number TYPE i.  " ユーザー入力用のパラメータを宣言

* 入力された数値をチェック
IF p_number > 0.
  lv_message = 'The number is positive.'. " 数値が正の場合のメッセージを設定
" 入力された数値が負の数かどうかをチェック
ELSEIF p_number < 0.
  lv_message = 'The number is negative.'. " 数値が負の場合のメッセージを設定
ELSE.
  lv_message = 'The number is zero.'.     " 数値がゼロの場合のメッセージを設定
ENDIF.

WRITE: lv_message. " メッセージを表示
実行結果

【ABAP】IF文(実行結果)

博士

選択画面で入力した内容で処理が分岐され、条件に合った結果が出力されているぞい!

補足:比較演算子

ABAPにおける比較演算子は、条件式で使用され、2つの値を比較して真偽を判断します。以下に、ABAPでよく使用される比較演算子の一覧を示します。

演算子説明
=(EQ)2つの値が等しい場合に真を返す
<>(NE)2つの値が等しくない場合に真を返す
>(GT)左辺の値が右辺の値より大きい場合に真を返す
<(LT)左辺の値が右辺の値より小さい場合に真を返す
>=(GE)左辺の値が右辺の値以上の場合に真を返す
<=(LE)左辺の値が右辺の値以下の場合に真を返す
ABAPの比較演算子

CASE文(CASE~ENDCASE)

博士

次はCASE文じゃ。
CASE文は変数などのデータオブジェクトの値に基づいて異なる処理を実行するぞい!IF文とは異なり、条件式を使用しての判定はできないぞい。

構文
 CASE 変数.
  WHEN 値1.
   変数が値1に一致する場合の処理.
  WHEN 値2.
   変数が値2に一致する場合の処理.
  WHEN OTHERS.
   どの条件にも一致しない場合の処理.
 ENDCASE.
 ※”CASE”、”WHEN”、”WHEN OTHERS”の後にそれぞれ”.”(ピリオド)が必要です。
 ※IF文と異なり式ではなく変数などのデータオブジェクトを指定します。“WHEN OTHERS”は省略することも可能です。

使用例
DATA: lv_message TYPE string. " メッセージを格納する変数を宣言

PARAMETERS: p_month TYPE i.   " ユーザー入力用のパラメータを宣言

* 入力された月の日数を設定
CASE p_month.
  WHEN 1 OR 3 OR 5 OR 7 OR 8 OR 10 OR 12.
    lv_message = 'Days in the month: 31'. " 31日の月の場合
  WHEN 4 OR 6 OR 9 OR 11.
    lv_message = 'Days in the month: 30'. " 30日の月の場合
  WHEN 2.
    lv_message = 'Days in the month: 28'. " 2月の場合は通常は28日
  WHEN OTHERS.
    lv_message = 'Invalid month'. " 1から12以外の数値が入力された場合
ENDCASE.

WRITE: lv_message. " メッセージを表示
実行結果

【ABAP】CASE文(実行結果)

博士

IF文と同じように選択画面で入力した内容で処理が分岐され、条件に合った結果が出力されているぞい!

IF文とCASE文の共通のポイント

処理順序

IF文もCASE文も、条件は上から下へと順番にチェックされ、条件に一致した時点でそのブロックの処理が実行されます。また、条件に一致した以降の条件はチェックされません

ネスト(入れ子)、複数の組み合わせ

IF文、CASE文の中にさらに別のIF文やCASE文をネスト(入れ子)することが可能です。これにより、複数の条件の組み合わせを表現することができます。例えば、ある条件が成り立った場合に、さらに別の条件をチェックする必要がある場合などに使用されます。
また、複数の条件を論理演算子(AND、OR)を使って組み合わせることが可能です。これにより、複数の条件を一つのブロックで表現することができます。

ネストの例
* 1つ目の例
IF lv_age >= 18.       " 年齢が18歳以上であることをチェック
  IF lv_height >= 170. " 身長が170cm以上であることをチェック
    WRITE: / 'You are an adult and tall enough.'. " 成人で、かつ170cm以上の場合の処理
  ENDIF.
ENDIF.

* 2つ目の例
CASE weather.
  WHEN 'Sunny'.        " 天気が晴れであることのチェック
    CASE time.
      WHEN 12.         " 時間が正午であることのチェック
        WRITE: / 'It is sunny at noon.'. " 天気が晴れで、時間が正午の場合の処理
    ENDCASE.
ENDCASE.

IF文とCASE文の使い分け

IF文とCASE文はどちらも条件分岐を行うための命令ですが、どちらを使用するかは状況によります。
適切に使い分けることでコードの可読性とメンテナンス性を向上させることができます。

IF文は条件が比較的少ない場合に適しており、CASE文は条件が多い場合や特定の変数に応じて分岐する場合に適しています。
また、一般的にはCASE文の方が少し処理速度は速いです。かといってIF文からCASE文に変更したとしても劇的な改善は期待できません。したがって、条件分岐の数に応じて適切な構文を選択することが重要です。

博士

今回はABAPの条件分岐で使用されるIF文、CASE文についてと、使い分けについて紹介したぞい!

レイナ

ありがとうございます!
これから条件分岐を使用したプログラムも作成していきます!

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

【MM】

【PP】

製造業向けSAP PP領域の工場展開支援

要スキル:
・PP/MMのSAP導入をコンサルとして要件定義の対応経験のある方 ・顧客と直接対話し、業務を進めて頂く事が可能な方 ・国内の工場への出張対応が可能な方(関西方面や九州など)
月額単価:
~1,700,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
顧客用テンプレートをベースとした国内工場へのSAP展開プロジェクトになります。 PPコンサルタントとしてFit&GAP、課題検討、テストや移行支援を実施頂きます。

【SD】

大手国内SIer関連会社に対するテンプレート展開PJの要件定義支援(SD)

要スキル:
・SD領域における要件定義の対応経験 ・顧客折衝し業務を推進していける方
月額単価:
~1,750,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
関連会社へテンプレートを用いSAP展開していくプロジェクトとなります。 SDのコンサルタントとして要件定義からご担当頂きます。

【FI】

大手国内SIer関連会社に対するテンプレート展開PJの要件定義支援(FI)

要スキル:
・FI領域における要件定義の対応経験 ・顧客折衝し業務を推進していける方
月額単価:
~1,750,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
関連会社へテンプレートを用いSAP展開していくプロジェクトとなります。 FIのコンサルタントとして要件定義からご担当頂きます。

【FI】

輸送用機器企業様向けS/4導入案件支援

要スキル:
S/4HANAでの上流工程の業務経験
月額単価:
~1,600,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
国内基幹システムをSAP S/4HANAへ移行する案件プロジェクトになります。 同社の海外向けS/4販売物流テンプレートを日本向けにロールインするもの。 現在、基本設計フェーズに着手中(~2025/4)。2027/1リリース予定。

【CO】

【FI】

S/4HANA Privateの導入支援(開発~単体テスト)

要スキル:
・ABAP開発経験5年以上の方 【尚可】 ・基本設計者と開発者をつなぐような品質管理やリーダーポジションを対応できる方
月額単価:
~850,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
基本的に会計系のモジュールにおける詳細設計以降の工程を担当頂きます。

【PP】

生産領域(PP)でのテスト工程支援

要スキル:
・テスト工程におけるSAP導入のプロジェクト経験がある方 ・PPモジュール経験があり、顧客と対峙してタスクの推進ができる方 ※コミュニケーション力重視
月額単価:
~1,500,000円 / 月
稼働場所:
フルリモート
稼働率:
100%
作業内容:
国内大手化学品メーカー向けのS/4 HANAへの移行プロジェクトにおいて、S/4チームの生産チームメンバー・タスクリーダーとして稼働頂きます。 ・結合テスト、システムテスト、ユーザテストの計画・推進・実施 ・ユーザ教育(業務変更点説明、オペレーション教育)および移行タスクの推進(業務切替、システム切替の周知や啓蒙活動)

【CO】

【FI】

ハードウエアリプレイスに伴うSAPシステム検証支援

要スキル:
・SAPの会計領域の知識がある方
月額単価:
~800,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
サーバの引っ越しに伴いSAPの機能変更等はないものの、システムが正しく動作するのかを検証するためのプロジェクトです。 対象モジュールはFI/COとなり、該当モジュールにおけるテストシナリオ作成・システムデータ作成・SAPの動作確認を行っております。 業務フローやSAPマニュアルがあるので、それを基にテストシナリオを作成して進めて頂きます。

【SD】

空調機メーカーS/4導入におけるFiori設計支援

要スキル:
・要件確認から設計書修正~開発受入実施ができる方 ・デバックで不具合箇所を特定できる方 ・販売領域における標準テーブルの知識を持っている方
月額単価:
~1,100,000円 / 月
稼働場所:
フルリモート
稼働率:
100%
作業内容:
S/4導入時におけるFioriの設計以降の作業をご担当頂きます。

【MM】

【PP】

電気機器メーカー向けSAPの運用保守支援

要スキル:
業務要件を整理して、設計書、ABAP開発が可能な方。 Jrコンサル、SEレベルの方が望ましい
月額単価:
~1,000,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
SAPのAdd-on追加開発または、運用保守をご担当頂きます。 業務領域としては、MMおよびPP領域となります。

【MM】

【SD】

ERPシステム要件定義支援

要スキル:
パラメータ定義(要件をカスタマイズに落とし込む)やアドオン機能設計ができること
月額単価:
~1,300,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
パラメータ定義(要件をカスタマイズに落とし込む)やアドオン機能設計などをご担当いただきます。

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

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

SAPラボのライターの特徴

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

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

募集要項

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

ご応募/お問合せ先

info@sap-labo.com

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

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

この記事を書いた人

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

この記事のポイント