!--a11y-->

他のデータオブジェクトと同様に、内部テーブルも論理式のオペランドとして使用することができます。
.... <itab1> <operator> <itab2> ...
<operator> には、データ型の比較の表に記載されているすべての演算子を使用することができます (EQ 、= 、NE 、<> 、>< 、GE 、>= 、LE 、<= 、GT 、> 、LT 、<) 。
ヘッダ行のある内部テーブルを使用している場合は、ヘッダ行とテーブル本体の名前は同じであるということに注意してください。比較でテーブル本体をアドレス指定する場合は、テーブル名の後ろに 2 つの角括弧 ([ ]) を記述してください。
内部テーブルの比較の第一の基準は、テーブルに含まれている行の数です。つまり、含まれている行が多い内部テーブルのほうが大きいことになります。2 つの内部テーブルに含まれている行の数が同じである場合は、行単位、つまりコンポーネント単位で比較されます。テーブル行のコンポーネント自体が内部テーブルである場合は、それらの内部テーブルが繰り返し比較されます。等しくないコンポーネントがないか内部テーブルを調べている場合、等しくない最初のコンポーネントの組み合わせが検出されると、比較は停止され、それに対応する結果が返されます。

DATA: BEGIN OF LINE,
COL1 TYPE I,
COL2 TYPE I,
END OF
LINE.
DATA: ITAB LIKE TABLE OF LINE,
JTAB
LIKE TABLE OF LINE.
DO 3 TIMES.
LINE-COL1 = SY-INDEX.
LINE-COL2 = SY-INDEX ** 2.
APPEND LINE TO ITAB.
ENDDO.
MOVE ITAB TO JTAB.
LINE-COL1 = 10. LINE-COL2 = 20.
APPEND LINE TO ITAB.
IF ITAB GT
JTAB.
WRITE / 'ITAB GT JTAB'.
ENDIF.
APPEND LINE TO JTAB.
IF ITAB EQ
JTAB.
WRITE / 'ITAB EQ JTAB'.
ENDIF.
LINE-COL1 = 30. LINE-COL2 = 80.
APPEND LINE TO ITAB.
IF JTAB LE
ITAB.
WRITE / 'JTAB LE ITAB'.
ENDIF.
LINE-COL1 = 50. LINE-COL2 = 60.
APPEND LINE TO JTAB.
IF ITAB NE
JTAB.
WRITE / 'ITAB NE JTAB'.
ENDIF.
IF ITAB LT
JTAB.
WRITE / 'ITAB LT JTAB'.
ENDIF.
出力は以下のようになります。
ITAB GT JTAB
ITAB EQ JTAB
JTAB LE ITAB
ITAB NE JTAB
ITAB LT JTAB
この例では、2 つの標準テーブル、ITAB と JTAB が作成されます。ITAB に 3 つの行が書き込まれ、JTAB にコピーされます。次に、ITAB に別の 1 行がアペンドされ、最初の論理式によって ITAB が JTAB より大きいかどうかが調べら れます。JTAB に同じ行がアペンドされたあと、2 番目の論理式によって両方のテーブルが等しいかどうかが調べられます。次に、ITAB に別の 1 行がアペンドされ、3 番目の論理式によって JTAB が ITAB より小さいか、または等しいかどうかが調べられます。その後、別の 1 行が JTAB にアペンドされます。その行の内容は、ITAB の最後の行の内容と等しくありません。次の論理式によって、ITAB が JTAB と等しくないかどうかが調べられます。ITAB と JTAB で内容が異なる最初のテーブル項目は、テーブルの最後の行にある COL1 です。値は、ITAB では 30 、JTAB では 50 です。したがって、最後の論理式で、ITAB は JTAB より小さいという結果が返されます。
