web-dev-qa-db-ja.com

内部テーブルにABAPの特定の値が含まれているかどうかをチェックする方法

それが問題です。ショートカットはありますか、それともテーブルでループして確認する必要がありますか?

内部テーブルを使用していて、内部テーブルの1つのフィールドに値が含まれているかどうかを確認したいのですが、テーブルをループして値を見つけたくありません。 (もし可能ならば)

5
Mtok

ループを実行したり、値を作業領域に転送したりせずに特定の値を確認するには、次のように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 )。

16
mydoghasworms

セラム、

アルゴリズムでループを使用する場合は、次のようなものを使用できます。

LOOP ITAB WHERE FIELD = 'X'.

"code sample

ENDLOOP.

コードでループを使用しない場合は、itabで特定の値をチェックする特定の方法はないと思います。

お役に立てば幸いです。

タルハ

1
Mtu