Текущее время: Вс, июл 20 2025, 11:33

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Поясните синтаксис Loop assigning...
СообщениеДобавлено: Вт, ноя 25 2008, 12:16 
Модератор
Модератор

Зарегистрирован:
Пт, ноя 12 2004, 11:40
Сообщения: 542
Откуда: Москва
Пол: Мужской
Коллеги, всем привет!
Вот обнаружил сегодня:

Code:
data lt_t100 type tt_t100.

field-symbols: <f> type t100,
               <v>.

select *
  up to 10 rows
  into table lt_t100
  from t100.

if lines( lt_t100 ) > 0.

  loop at lt_t100 assigning <f> casting to <v> .
    break-point.
  endloop.

* ~~ вот это вариант проходит синтаксис чек даже с <f> type any.
  loop at lt_t100 assigning <f> to <v> .
    break-point.
  endloop.

  loop at lt_t100 assigning <f> casting.
    break-point.
  endloop.

endif.


Ни в один бряк я не попал :D

subj. :wink:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 25 2008, 12:23 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Я в третьем бряке, иххо ! :D

Добавил: Casting Data Objects

И еще добавил: Хэлп по LOOP говорит о возможности использования третьего варианта, где собсно я и остановился. Насчет первых двух - странно, что на синтаксис не ругается. Фича какая-то...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 25 2008, 12:33 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Привет, Ром.

Тебя вот это смущает:
Code:
  loop at lt_t100 assigning <f> to <v> .
    break-point.
  endloop.


<v> - не инициализирован, поэтому туда не попадаешь.
напиши что-то типа assign 2 to <v>.
И пойдешь лопатить...

Да и не должен он на any ругаться.

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 25 2008, 12:41 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
И еще пример для понятности CASTING.

Code:
TYPES: BEGIN OF ne_t100,
         VARIABLE1 TYPE SPRAS,
         VARIABLE2(96),
       END OF ne_t100.

DATA lt_t100 TYPE tt_t100.

FIELD-SYMBOLS: <f> TYPE ne_t100.

SELECT * UP TO 5 ROWS INTO TABLE lt_t100  FROM t100.

IF LINES( lt_t100 ) > 0.
  LOOP AT lt_t100 ASSIGNING <f>  CASTING.
    BREAK-POINT.
  ENDLOOP.
ENDIF.



Попробуйте закомментить CASTING и почуствуйте разницу. Или вопрос не в этом был ? :oops:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 25 2008, 12:51 
Модератор
Модератор

Зарегистрирован:
Пт, ноя 12 2004, 11:40
Сообщения: 542
Откуда: Москва
Пол: Мужской
Начёт третего бряка чё та я напутал:)

Володя привет :), не не смущает, интересует полезность в сельском хозяействе, и вообще может еще чего есть прикольного :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 25 2008, 13:34 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Ich Will написал:
интересует полезность в сельском хозяействе

В LOOP .. ASSIGNING отсутствует неявное копирование данных из записи внутренней таблицы в рабочую область, field-symbol указывает непосредственно на запись в таблице. Соответственно, на больших таблицах можно получить кое-какой выигрыш производительности. Ну и понятно, если требуется изменение, то можно прямо менять в field-symbol, и MODIFY после этого не требуется.
Однако, в LOOP .. ASSIGNING в событиях AT NEW, AT END нельзя использовать SUM.

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 25 2008, 14:26 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 20 2008, 16:29
Сообщения: 245
Откуда: RU->DE
Пол: Мужской
Выигрыш получается очень даже неплохой (в несколько раз). Можно поэкспериментировать на se38->Environment->Examples->Perfomance examples->Internal Tables->Modifying a set of lines.....


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 27 2008, 21:38 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
John Doe написал:
Хэлп по LOOP говорит о возможности использования третьего варианта, где собсно я и остановился. Насчет первых двух - странно, что на синтаксис не ругается. Фича какая-то...


Lars написал:
<v> - не инициализирован, поэтому туда не попадаешь.
напиши что-то типа assign 2 to <v>.
И пойдешь лопатить...


Если вдруг кто не понял: "to <v>" — это осколок от from 1 to 5.


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

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


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

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


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

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