それが問題です。ショートカットはありますか、それともテーブルでループして確認する必要がありますか?
内部テーブルを使用していて、内部テーブルの1つのフィールドに値が含まれているかどうかを確認したいのですが、テーブルをループして値を見つけたくありません。 (もし可能ならば)
ループを実行したり、値を作業領域に転送したりせずに特定の値を確認するには、次のようにTRANSPORTING NO FIELDS
を追加してREAD
ステートメントを使用できます。
READ TABLE itab WITH KEY FIELD = 'X' TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
"Read was successful.
ENDIF.
更新:リリース740以降、ABAPには、次のブログ投稿で説明されている述語関数LINE_EXISTS
が含まれています。 https://blogs.sap.com/2013/06/22/abap-news-for -release-740-new-internal-table-functions /
これは、テーブル式を渡す組み込み関数です。上記の例を使用すると:
IF LINE_EXISTS( ITAB[ FIELD = 'X' ] ).
"Do stuff
ENDIF.
(または、その他のテーブル式については、こちらを参照してください: https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abentable_expressions.htm )。
セラム、
アルゴリズムでループを使用する場合は、次のようなものを使用できます。
LOOP ITAB WHERE FIELD = 'X'.
"code sample
ENDLOOP.
コードでループを使用しない場合は、itabで特定の値をチェックする特定の方法はないと思います。
お役に立てば幸いです。
タルハ