条件分岐: 実装

条件分岐は、論理条件に依存するコード実行を可能にする制御構造です。
最も一般的な条件分岐は、キーワード IF と ENDIF のペアで構成されます。IF と ENDIF の間の ABAP コードブロックは、IF 後の条件が満たされた場合にのみ実行されます。
IF を拡張するコードブロックをさらに追加できます。ENDIF 構造を 1 つずつ登録するには、キーワード ELSE を使用し、任意数のブロックをキーワード ELSEIF を使用して実行します。キーワード ELSE を追加することで、ABAP コードブロックの 1 つだけが常に実行されるようにします。ELSE がない場合は、どの ABAP コードブロックも実行できません。
すべての IF .. ENDIF キーワードは必須であり、IF ごとに ENDIF が必要です。
実行される ABAP コードブロックは以下のとおりです。
- 最初に、IF 条件が評価されます。満たされると、関連する ABAP コードブロックが実行され、ENDIF の後にプログラムが続行されます。
IF 条件が満たされていない場合にのみ、最初の ELSEIF が評価された後の条件になります。満たされると、関連するコードブロックが実行され、プログラムが ENDIF の後に続行されます。
これは、すべての ELSEIF 条件に対して連続して実行されます。どの条件も満たされず、構造に ELSE が含まれている場合、ELSE の後に ABAP コードブロックが実行されます。そうしないと、ABAP コードブロックが実行されません。
ヒント
論理条件

論理条件は、条件が真か偽かを決定するために実行システムによって評価される比較、論理演算、式、および関数の組合せです。
論理条件の最も一般的な使用ケースは、IF . . . のキーワード IF または ELSEIF の後です。ENDIF 構造。
最初の例 (上の図の) は、単純な比較です。2 つのデータオブジェクト x と y の値が同じである場合、条件は真です。
2 番目の例 (上の図の) は、x の値が y 以上 y の 2 倍より小さいか、y の値の 2 倍以下で、y の値の 2 倍より大きいかのどちらかです。
3 番目の例 (上の図の) では、算術関数 abs( ) と論理式 BETWEEN <expression 1> AND <expression 2>. を使用します。x の絶対値が y の絶対値と y の 2 倍の絶対値の間にある場合、条件は true です。
単純な値の比較には、演算子 =, <>, >, <, >=, and <= を使用できます。上記の例の算術式 2 * y のように、データオブジェクトだけでなく、他の多くの式の値を比較することができます。
注記
演算子と意味
| オペレータ | 意味 |
|---|---|
| AND | 複数の論理式を結合して、複数の論理式がすべて真である場合にのみ真となる新規論理式を登録するために使用されます。 |
| OR | 複数の論理式を結合して、少なくとも 1 つの論理式が true の場合に真となる新規論理式を登録するために使用されます。 |
| NOT | NOT を使用した論理式の否定により、論理式が true の場合は新しい論理式が false になり、その逆も同様です。 |
演算子 AND および OR を使用して、論理式と演算子 NOT を組み合わせて、式を否定することができます。括弧がない場合、NOT は AND よりも強く、AND は OR より強力にバインドされます。
ABAP では、いくつかの特殊な論理式が認識されます。
- <data object> IS INITIAL は、<data object>にタイプ固有の値が含まれている場合に真になります。
- <data object> IS NOT INITIAL は、<data object> にタイプ固有の初期値とは異なる値が含まれている場合に真になります。
- <data object> BETWEEN <expression 1> AND <expression 2>
一部の特殊な ABAP 関数は述部関数です。 つまり、それら自体は論理条件です。たとえば、Contains( ) は文字型の値を比較する関数です。
