2016-10-04 3 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. 

А: 1

В: 2

С: пусто

Д: 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. 
Смежные вопросы