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

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


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

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


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

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