三崎レイナ
社会人1年目。新卒でITコンサルティングファームに就職。初配属がSAPプロジェクトにアサインされる。SAPがわからないことだらけで悩んでいたところ、会社の先輩にSAPラボの所長を紹介され、毎週末に所長とSAPのお勉強中!
博士
SAPラボの所長。SAP大好き博士!SAP導入プロジェクトを構想策定~運用保守まであらゆるフェーズを数多く経験。
いまは優しきおじいちゃんだが、プロマネバリバリの時代はかなり怖かったらしい。現在は引退し、SAPの後進育成と啓蒙活動に従事中!
登場人物紹介
三崎レイナ
社会人1年目。新卒でITコンサルティングファームに就職。初配属がSAPプロジェクトにアサインされる。SAPがわからないことだらけで悩んでいたところ、会社の先輩にSAPラボの所長を紹介され、毎週末に所長とSAPのお勉強中!
博士
SAPラボの所長。SAP大好き博士!SAP導入プロジェクトを構想策定~運用保守まであらゆるフェーズを数多く経験。
いまは優しきおじいちゃんだが、プロマネバリバリの時代はかなり怖かったらしい。現在は引退し、SAPの後進育成と啓蒙活動に従事中!
この記事を読むメリット
今回はABAPの比較演算子について説明するぞい!
ABAPを使用してプログラムを開発する際には、様々な条件分岐やデータ検証を行うために比較演算子を頻繁に使用します。この記事では、ABAPで使用できる比較演算子の種類とそれぞれの使用方法について、実例を交えて詳しく解説します。
比較演算子は、プログラム内で2つの値を比較し、その結果が「真(TRUE)」か「偽(FALSE)」かを判定するために使われます。これにより、条件に基づいた動作を制御することができます。
ABAPでは、数値や文字列、日付などのデータ型に対して使用できる基本的な比較演算子のほかに、文字列に特化した特殊な比較演算子も用意されています。この記事では、これらの演算子の使い方を実例とともに紹介します。
ABAPでよく使われる比較演算子は以下の通りです。これらは、数値や文字列、日付の大小や等しさを比較するために使用されます。
演算子 | ABAP表記 | 説明 | 例 |
---|---|---|---|
= | EQ | 等しい | lv_value = 10 または lv_value EQ 10 |
<> | NE | 等しくない | lv_value <> 10 または lv_value NE 10 |
< | LT | より小さい | lv_value < 10 または lv_value LT 10 |
> | GT | より大きい | lv_value > 10 または lv_value GT 10 |
<= | LE | 以下 | lv_value <= 10 または lv_value LE 10 |
>= | GE | 以上 | lv_value >= 10 または lv_value GE 10 |
等号演算子は、2つの値が等しいかどうかを比較します。数値、文字列、日付、時間などの様々なデータ型で使用できます。
DATA: lv_value TYPE i.
lv_value = 10.
IF lv_value = 10.
WRITE: '値は10です。'.
ENDIF.
IF lv_value EQ 10.
WRITE: / 'ABAP表記:値は10です。'.
ENDIF.
このプログラムでは、lv_valueが10であれば、どちらの条件も真となり「値は10です。」と表示されます。
等しくないことを確認する際には、<> または NE を使用します。
DATA: lv_value TYPE i.
lv_value = 5.
IF lv_value <> 10.
WRITE: '値は10ではありません。'.
ENDIF.
IF lv_value NE 10.
WRITE: / 'ABAP表記:値は10ではありません。'.
ENDIF.
このプログラムでは、lv_valueが10ではない場合、どちらの条件も真となり「値は10ではありません。」と表示されます。
大小関係を確認する演算子もABAPでは頻繁に使用されます。これらの演算子を使用して、数値や文字列、日付の順序を比較できます。
<(より小さい)はLT、>(より大きい)はGT、<=(以下)はLE、>=(以上)はGEと表記できます。
DATA: lv_value TYPE i.
lv_value = 8.
IF lv_value > 5 AND lv_value < 10.
WRITE: '値は5より大きく10より小さいです。'.
ENDIF.
IF lv_value GT 5 AND lv_value LT 10.
WRITE: / 'ABAP表記:値は5より大きく10より小さいです。'.
ENDIF.
このプログラムでは、lv_valueが5より大きく10より小さい場合、どちらの条件も真となり、どちらのメッセージも表示されます。
ABAPには、文字列の比較に特化した特殊な演算子も用意されています。これらの演算子は、文字列のパターンマッチングや部分一致を確認するのに便利です。
演算子 | 説明 | 例 |
---|---|---|
CO (Contains Only) | 左辺の文字列が右辺のパターンに一致する | lv_string CO ‘SAP2024’ →lv_string が “SAP2024” と一致するかを確認 |
CN (Contains Not) | 左辺の文字列が右辺のパターンに一致しない | lv_string CN ‘SAP2025’ →lv_string が “SAP2025” と一致しないかを確認 |
CA (Contains Any) | 左辺の文字列が右辺の文字セットのいずれかを含む | lv_string CA ‘ABC’ →lv_string に “A”, “B”, “C” のいずれかが含まれているか |
NA (Not Contains Any) | 左辺の文字列が右辺の文字セットを全く含まない | lv_string NA ‘0123456789’ →lv_string に数字が全く含まれていないか |
CP (Contains Pattern) | 左辺の文字列が右辺のパターンに一致するか | lv_string CP ‘SAP*’ →lv_string が “SAP” で始まるかを確認 |
NP (Not Contains Pattern) | 左辺の文字列が右辺のパターンに一致しないか | lv_string NP ‘XYZ*’ →lv_string が “XYZ” で始まらないかを確認 |
CS (Contains String) | 左辺の文字列が右辺の部分文字列を含むか | lv_string CS ‘SAP’ →lv_string に “SAP” が含まれているかを確認 |
NS (Not Contains String) | 左辺の文字列が右辺の部分文字列を含まないか | lv_string NS ‘2025’ →lv_string に “2025” が含まれていないかを確認 |
CO演算子は、左辺の文字列が右辺のパターンに完全に一致するかを確認します。
DATA: lv_string TYPE string VALUE 'SAP2024'.
IF lv_string CO 'SAP2024'.
WRITE: '文字列は「SAP2024」と一致します。'.
ENDIF.
このプログラムでは、lv_string が “SAP2024” と一致するかを確認します。
CN演算子は、左辺の文字列が右辺のパターンに一致しない場合に真となります。
DATA: lv_string TYPE string VALUE 'SAP2024'.
IF lv_string CN 'SAP2025'.
WRITE: '文字列は「SAP2025」と一致していません。'.
ENDIF.
このプログラムでは、lv_string が “SAP2025” と一致しないかを確認します。
CA演算子は、左辺の文字列が右辺の文字セットのいずれかを含むかを確認します。
DATA: lv_string TYPE string VALUE 'SAPABC123'.
IF lv_string CA 'CBA'.
WRITE: '文字列には「A」「B」「C」のいずれかが含まれています。'.
ENDIF.
このプログラムでは、lv_string に “A”, “B”, “C” のいずれかが含まれているかを確認します。
NA演算子は、左辺の文字列が右辺の文字セットをまったく含まないかを確認します。
DATA: lv_string TYPE string VALUE 'SAPXYZ'.
IF lv_string NA '0123456789'.
WRITE: '文字列には数字が含まれていません。'.
ENDIF.
このプログラムでは、lv_string に数字が含まれていないかを確認します。
CP演算子は、左辺の文字列が右辺のパターンに一致するかを確認します。こちらもワイルドカード(* で任意の文字列、+ で1文字)を使います。
DATA: lv_string TYPE string VALUE 'SAP2024'.
IF lv_string CP 'SAP*'.
WRITE: '文字列は「SAP」で始まります。'.
ENDIF.
このプログラムでは、lv_string が “SAP” で始まるかを確認します。
NP演算子は、左辺の文字列が右辺のパターンに一致しない場合に真となります。
DATA: lv_string TYPE string VALUE 'SAP2024'.
IF lv_string NP 'XYZ*'.
WRITE: '文字列は「XYZ」で始まりません。'.
ENDIF.
このプログラムでは、lv_string が “XYZ” で始まらないかを確認します。
CS演算子は、左辺の文字列が右辺の部分文字列を含んでいるかを確認します。
DATA: lv_string TYPE string VALUE 'SAPERP2024'.
IF lv_string CS 'SAP'.
WRITE: '文字列には「SAP」が含まれています。'.
ENDIF.
このプログラムでは、lv_string に “SAP” が含まれているかを確認します。
NS演算子は、左辺の文字列が右辺の部分文字列を含まないかを確認します。
DATA: lv_string TYPE string VALUE 'SAP2024'.
IF lv_string NS '2025'.
WRITE: '文字列には「2025」が含まれていません。'.
ENDIF.
このプログラムでは、lv_string に “2025” が含まれていないかを確認します。
比較演算子は、論理演算子(AND、OR)と組み合わせることで、複雑な条件式を作成できます。
DATA: lv_value TYPE i.
lv_value = 15.
IF (lv_value >= 10 AND lv_value <= 20) OR lv_value = 25.
WRITE: '値は10から20の間、または25です。'.
ENDIF.
このプログラムでは、lv_value が 10 から 20 の間にあるか、または 25 であればメッセージが表示されます。
ABAPの比較演算子は、条件分岐やデータの検証に欠かせない強力なツールです。
これらの演算子を活用することで、効率的で読みやすいコードを書けるようになり、プログラムの柔軟性も向上します。
SAPラボでは、SAPの知識を活かして副業をしたい方を募集してるのじゃ!
SAPラボのライターの特徴
・ライティング初心者OK!
・報酬高単価!
・業務委託契約なので副業として最適!
SAP記事執筆者としての活動実績として利用可能なので、転職時や案件探しの際に企業へのアピール材料にもなります。
募集要項
・SAP導入や運用保守プロジェクトへの参画経験1年以上
ご応募/お問合せ先
info@sap-labo.com
少しでもご興味ある方、ぜひお気軽にご連絡下さい!
新卒でSAPエンジニアとしてABAPでの新規開発や保守業務を担当。
業務内容としてはロジ系(MM/SD)がメインで、ABAPの開発が最も得意。