Текущее время: Пн, июл 28 2025, 18:45

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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