2016-10-04 4 views
0

以下の質問に対する回答は2となります。なぜリフレッシュは最初の行だけを削除しますか?それは、内部テーブルのすべての行を削除する予定はありませんか?ABAP無料の内部テーブル

次のコードで出力される内容は?

DATA: BEGIN OF itab OCCURS 0, fval type i, END OF itab. 

itab­-fval = 1. APPEND itab. 

itab­-fval = 2. APPEND itab. 

REFRESH itab. 

WRITE: /1 itab­-fval. 

A:1

B:2

C:ブランク

D:0

回答:B

+1

E:構文エラー –

+0

「A:1」とは何ですか?あなたはそれがABAPコマンドであるべきだと思いますか? – knut

+0

自分でコードを実行して見ないのはなぜですか? – Jagger

答えて

5

コードは、任意の構文が含まれていなかった場合エラー、例えば値2を割り当てて値を書き込むときに ' - 'が見つからない場合、Bは正しい答えですが、あなたが述べた理由ではありません。 REFRESHはテーブルから最初の行だけを削除するのではなく、REFRESHがテーブルのヘッダー行をクリアしないためです。したがって、REFRESHの後には、ヘッダー行には最新の割り当て値である2が引き続きあります。これは、デバッガでプログラムを実行しているときに簡単に確認できます。

SAP helpに記載されているように、ヘッダー行を含む内部テーブルの使用は廃止されていることに注意してください。

+0

これは私が紛失しているものです。どうもありがとう。 – Neschet

0

clearコマンドを使用すると、ヘッダー行を消去できます。

REFRESH itab. 
CLEAR itab. 
関連する問題