内部テーブルの行数を取得するにはどうすればよいですか? 私はそれをループできると思います。しかし、もっと健全な方法があるはずです。
違いがあるかどうかはわかりませんが、コードは 4.6c バージョンで実行する必要があります。
内部テーブルの行数を取得するにはどうすればよいですか? 私はそれをループできると思います。しかし、もっと健全な方法があるはずです。
違いがあるかどうかはわかりませんが、コードは 4.6c バージョンで実行する必要があります。
このタスク用の組み込み関数もあります。
variable = lines( itab_name ).
IronGoofyで説明されている「純粋な」ABAP 構文と同様に、関数「lines( )」はテーブル itab_name の行数を変数に書き込みます。
次の機能を使用できます。
DESCRIBE TABLE <itab-Name> LINES <variable>
呼び出し後、変数には内部テーブルの行数が含まれます。
DATA : V_LINES TYPE I. "declare variable
DESCRIBE TABLE <ITAB> LINES V_LINES. "get no of rows
WRITE:/ V_LINES. "display no of rows
参考文献: http://www.sapnuts.com/courses/core-abap/internal-table-work-area.html
OPEN Sql を使用して、COUNT Grouping 句を使用して行数を見つけることもできます。また、システム フィールド SY-LINCT を使用して、テーブルの行 (ROWS) をカウントすることもできます。
data: vcnt(4).
clear vcnt.
LOOP at itab WHERE value = '1'.
add 1 to vcnt.
ENDLOOP.
答えは3. (vcnt = 3).
あなたの質問を正しく理解できれば、内部テーブルの条件付きループ中の行番号を知りたいでしょう。内部テーブルを使用する場合は、システム変数 sy-tabix を使用できます。詳細情報が必要な場合は、ABAP 文書を参照してください (特に、内部テーブル処理に関する章)。
例:
LOOP AT itab INTO workarea
WHERE tablefield = value.
WRITE: 'This is row number ', sy-tabix.
ENDLOOP.
そのような結果のための SAP パラメータはないと思います。以下のコードは配信されますが。
LOOP AT intTab.
AT END OF value.
result = sy-tabix.
write result.
ENDAT.
ENDLOOP.