9

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

つまり、内部テーブルを使用していて、値が内部テーブルの1つのフィールドに含まれているかどうかを確認したいのですが、テーブルをループして値を見つけたくありません。出来ますか?

4

2 に答える 2

23

ループを実行したり値をワークエリアに転送したりせずに特定の値を確認するには、次のようREADに追加してステートメントを使用できます。TRANSPORTING NO FIELDS

READ TABLE itab WITH KEY FIELD = 'X' TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
  "Read was successful.
ENDIF.

更新: リリース 740 から、ABAP には、このブログ投稿LINE_EXISTSで説明されている述語関数が含まれています。

これは、テーブル式を渡す組み込み関数です。上記の例を使用すると、次のようになります。

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 を参照してください。

于 2012-09-13T07:33:59.823 に答える
2

セラム、

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

LOOP ITAB WHERE FIELD = 'X'.

"code sample

ENDLOOP.

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

お役に立てば幸いです。

タルハ

于 2012-09-13T06:55:36.127 に答える