Текущее время: Вт, июл 29 2025, 01:58

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Модификация таблицы
СообщениеДобавлено: Вт, янв 25 2011, 11:25 
Специалист
Специалист

Зарегистрирован:
Пт, ноя 06 2009, 08:29
Сообщения: 243
Здравствуйте. Мне нужно модифицировать таблицу объявленную как:
Code:
gt_table   type standard table of MAINTABLE.

В хелпе прочитал что должно вроде так работать, но не работает:
Code:
gl_table   LIKE LINE OF           gt_table.
loop at gt_table INTO gl_table.
    gl_table-status = 'X'.
    MODIFY TABLE gt_table FROM gl_table
      TRANSPORTING status.
  ENDLOOP.

Подскажиет в чем проблема?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Модификация таблицы  Тема решена
СообщениеДобавлено: Вт, янв 25 2011, 12:03 
Ассистент
Ассистент

Зарегистрирован:
Ср, июл 14 2010, 10:33
Сообщения: 41
Откуда: Москва
Пол: Женский
Очень корявый пример во всех смыслах.
В вашем случае вместо MODIFY TABLE gt_table FROM gl_table надо писать MODIFY gt_table FROM gl_table. Ищите разницу в хелпе.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Модификация таблицы
СообщениеДобавлено: Вт, янв 25 2011, 12:22 
Специалист
Специалист

Зарегистрирован:
Пт, ноя 06 2009, 08:29
Сообщения: 243
ke написала:
Очень корявый пример во всех смыслах.
В вашем случае вместо MODIFY TABLE gt_table FROM gl_table надо писать MODIFY gt_table FROM gl_table. Ищите разницу в хелпе.


Спасибо! :D


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Модификация таблицы
СообщениеДобавлено: Вт, янв 25 2011, 12:24 
Ассистент
Ассистент

Зарегистрирован:
Ср, июл 14 2010, 10:33
Сообщения: 41
Откуда: Москва
Пол: Женский
А вообще для изменения поля во всей внутренней таблице достаточно написать так.
Code:
gl_table-status = 'X'.
MODIFY  gt_table FROM gl_table  TRANSPORTING status  WHERE NOT status = 'X'.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Модификация таблицы
СообщениеДобавлено: Вт, янв 25 2011, 12:30 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
ke написала:
А вообще для изменения поля во всей внутренней таблице достаточно написать так.
Code:
gl_table-status = 'X'.
MODIFY  gt_table FROM gl_table  TRANSPORTING status  WHERE NOT status = 'X'.

А я бы написал вот так быб:
Code:
LOOP AT GT_TABLE ASSIGNING <GL_TABLE>.
  I = SY-TABIX MOD 2.
  IF I = 0.
    <GL_TABLE>-STATUS = 'X'.
  ENDIF.
ENDLOOP.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модификация таблицы
СообщениеДобавлено: Вт, янв 25 2011, 13:00 
Ассистент
Ассистент

Зарегистрирован:
Ср, июл 14 2010, 10:33
Сообщения: 41
Откуда: Москва
Пол: Женский
2ROKO
Ваш код изменяет только четные строки. Да можно изменять через field-symbols. Но modify ... transporting.. работает быстрее Loop ... assigning


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Модификация таблицы
СообщениеДобавлено: Вт, янв 25 2011, 13:49 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
ke написала:
2ROKO
Ваш код изменяет только четные строки. Да можно изменять через field-symbols. Но modify ... transporting.. работает быстрее Loop ... assigning

Я не буду Вас переубеждать :D . se38 - > Среда -> Примеры -> Примеры производительности -> Internal Tables -> Using the Assigning Comand -> Modifying a set of lines directly.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модификация таблицы
СообщениеДобавлено: Вт, янв 25 2011, 14:34 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, ноя 01 2004, 12:17
Сообщения: 298
Пол: Мужской
-


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модификация таблицы
СообщениеДобавлено: Вт, янв 25 2011, 15:28 
Ассистент
Ассистент

Зарегистрирован:
Ср, июл 14 2010, 10:33
Сообщения: 41
Откуда: Москва
Пол: Женский
В тестах производительности не совсем тот пример, который мы обсуждаем
Если вбить
Code:

WA-FLAG = 'X'. 
MODIFY ITAB FROM WA   TRANSPORTING flag  WHERE flag <> 'X'.

И
Code:
LOOP AT ITAB ASSIGNING <WA>.
    <WA>-FLAG = 'X'.
ENDLOOP.


Результат следующий- на маленьких выборках как в примере скорость в первом варианте чуть ниже или такая же.
При увеличении размера таблицы скорость лучше у assign. Признаю ошибку перепутала как сравнение modify и loop без assigning.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB