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

登場人物紹介

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

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

この記事を読むメリット

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

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

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

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

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

【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モジュールにおける運用業務  ・問合せ対応  ・障害対応  ・運用オペレーション

【FI】

SAP導入プロジェクト支援

要スキル:
・FI領域の要件定義書から基本設計書おこしの経験 ・顧客とのコミュニケーションして業務を進めた経験
月額単価:
~1,200,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
ロジ・会計領域をS/4HANAへ刷新に向けた会計領域の基本設計フェーズ作業を行っていただきます。

【FI】

光学機器 S/4HANA導入テスト支援

要スキル:
・FIコンサルとして要件定義~本稼働までの経験 ・FI(AP/AR)の機能、カスタマイズの知識 ・アドオン設計(開発除く)~各種テスト
月額単価:
~1,500,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
生産基幹システムのS/4新規導入プロジェクトです。 既存の会計システムとの連携→ロジデータを送信(AP/AR)と原価計算が対象となりUAT移行を担当頂きます。 スケジュール感:  2024年10月~2024年12月:結合テスト  2025年1月:UAT、移行  2025年2月:サービスパーツ 本稼働  2025年3月以降:展開

【CO】

一般消費財メーカーS/4 HANAバージョンアップ

要スキル:
<必須スキル> ・管理会計(CO)の全般の理解と実装経験、特にCO-PA(収益性分析)に関連した実装経験 ・顧客の業務要件の把握ととりまとめ、それに基づく実装方法検討、S/4での設定・カスタマイズ、アドオン要件の切り出し ・開発要件に関する基本設計、単体テスト仕様書作成、および単体テストの実施経験 ・SAPの予算機能に関する知見 ・課題に対する問題分析および解決策を的確に導いた経験 <あれば尚可> ・CO-PAの原価ベースから勘定ベースへの移行の経験 ・外部からの収益性データに関する取り込み経験 ・顧客が有しているSAP外のシステムとの関係性の整理、適切なソリューション検討経験 ・CO-PC(原価計算)、品目元帳の領域についての実装経験 ・原価周りに関する他モジュール(MM、PPなど)と原価との関わりについての知見
月額単価:
~1,600,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
<業務内容> ・CO-PA領域に関する業務要件の整理と定義書への取りまとめ ・基本設計書の作成 ・開発物の単体テスト受け入れ ・導入プロジェクトでの一連のテスト作業 ・データ移行に関する要件の取りまとめとデータ移行の実施
この記事のポイント

条件分岐について

条件分岐とは、プログラム内で特定の条件を判断し、条件を満たしているかどうかに基づいて処理を変更することです。「もし〇〇が△△ならば××をする」というように、条件に応じて処理を分岐させます。条件分岐を実現するために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フリーランス案件

【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モジュールにおける運用業務  ・問合せ対応  ・障害対応  ・運用オペレーション

【FI】

SAP導入プロジェクト支援

要スキル:
・FI領域の要件定義書から基本設計書おこしの経験 ・顧客とのコミュニケーションして業務を進めた経験
月額単価:
~1,200,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
ロジ・会計領域をS/4HANAへ刷新に向けた会計領域の基本設計フェーズ作業を行っていただきます。

【FI】

光学機器 S/4HANA導入テスト支援

要スキル:
・FIコンサルとして要件定義~本稼働までの経験 ・FI(AP/AR)の機能、カスタマイズの知識 ・アドオン設計(開発除く)~各種テスト
月額単価:
~1,500,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
生産基幹システムのS/4新規導入プロジェクトです。 既存の会計システムとの連携→ロジデータを送信(AP/AR)と原価計算が対象となりUAT移行を担当頂きます。 スケジュール感:  2024年10月~2024年12月:結合テスト  2025年1月:UAT、移行  2025年2月:サービスパーツ 本稼働  2025年3月以降:展開

【CO】

一般消費財メーカーS/4 HANAバージョンアップ

要スキル:
<必須スキル> ・管理会計(CO)の全般の理解と実装経験、特にCO-PA(収益性分析)に関連した実装経験 ・顧客の業務要件の把握ととりまとめ、それに基づく実装方法検討、S/4での設定・カスタマイズ、アドオン要件の切り出し ・開発要件に関する基本設計、単体テスト仕様書作成、および単体テストの実施経験 ・SAPの予算機能に関する知見 ・課題に対する問題分析および解決策を的確に導いた経験 <あれば尚可> ・CO-PAの原価ベースから勘定ベースへの移行の経験 ・外部からの収益性データに関する取り込み経験 ・顧客が有しているSAP外のシステムとの関係性の整理、適切なソリューション検討経験 ・CO-PC(原価計算)、品目元帳の領域についての実装経験 ・原価周りに関する他モジュール(MM、PPなど)と原価との関わりについての知見
月額単価:
~1,600,000円 / 月
稼働場所:
東京都
稼働率:
100%
作業内容:
<業務内容> ・CO-PA領域に関する業務要件の整理と定義書への取りまとめ ・基本設計書の作成 ・開発物の単体テスト受け入れ ・導入プロジェクトでの一連のテスト作業 ・データ移行に関する要件の取りまとめとデータ移行の実施

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

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

SAPラボのライターの特徴

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

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

募集要項

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

ご応募/お問合せ先

info@sap-labo.com

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

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

この記事を書いた人

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

この記事のポイント