Текущее время: Сб, июл 26 2025, 03:47

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Вопрос по команде loop
СообщениеДобавлено: Ср, июн 09 2010, 10:13 
Специалист
Специалист

Зарегистрирован:
Пт, ноя 06 2009, 08:29
Сообщения: 243
Здравствуйте!
ABAPом занимаюсь недавно появился такой вопрос: каким образом мне можно правильно использовать такую кострукцию и можно ли вобще?
Code:
loop at tab1
  ....
  loop at tab1
  .... (здесь необходимо работать с полями из первого и второго loop-ов)
  endloop
endloop


Тоесть необходимо сравнивать tab1 самим с собой.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вопрос по команде loop
СообщениеДобавлено: Ср, июн 09 2010, 10:17 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Gray_ написал(а):
Здравствуйте!
ABAPом занимаюсь недавно появился такой вопрос: каким образом мне можно правильно использовать такую кострукцию и можно ли вобще?

Можно.
Цитата:
Code:
loop at tab1
  ....
  loop at tab1
  .... (здесь необходимо работать с полями из первого и второго loop-ов)
  endloop
endloop


Тоесть необходимо сравнивать tab1 самим с собой.

Не используйте таблицы с заголовком и внимательно читайте F1 по оператору LOOP. После LOOP AT есть ещё дополнения, которые позволят вам "сравнивать tab1 самим с собой"

_________________
"После" - не значит "вследствие"


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по команде loop
СообщениеДобавлено: Ср, июн 09 2010, 11:01 
Специалист
Специалист

Зарегистрирован:
Пт, ноя 06 2009, 08:29
Сообщения: 243
Спасибо большое за ответ, но я <я не знать русский языка> в ABAP как и песал выше... Если не сложно привидите пример.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вопрос по команде loop  Тема решена
СообщениеДобавлено: Ср, июн 09 2010, 11:10 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, авг 24 2007, 11:29
Сообщения: 350
Можно попробовать так
Code:
data ls_tab_1 like line of tab1.
data ls_tab_2 like line of tab1.
tab2[] = tab1[].
loop at tab1 into ls_tab_1
  ....
  loop at tab2 into ls_tab_2
  .... (здесь необходимо работать с полями из первого и второго loop-ов)
  endloop
endloop


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по команде loop
СообщениеДобавлено: Ср, июн 09 2010, 11:10 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Gray_ написал(а):
Спасибо большое за ответ, но я <я не знать русский языка> в ABAP как и песал выше... Если не сложно привидите пример.

И что? по F1 есть примеры, по ссылке, что я дал есть примеры.
Code:
Example

Nested LOOP loops without explicit key declaration. The contents of the current row for the outer loop are analyzed in the WHERE-condition for the inner loop.

PARAMETERS p_name TYPE scarr-carrname DEFAULT '*'.

DATA: scarr_tab TYPE SORTED TABLE OF scarr
                WITH UNIQUE KEY carrname,
      spfli_tab TYPE SORTED TABLE OF spfli
                WITH NON-UNIQUE KEY carrid.

FIELD-SYMBOLS <scarr_line> LIKE LINE OF scarr_tab.
DATA spfli_line LIKE LINE OF spfli_tab.

SELECT *
       FROM scarr
       INTO TABLE scarr_tab.

SELECT *
       FROM spfli
       INTO TABLE spfli_tab.

LOOP AT scarr_tab ASSIGNING <scarr_line>
                  WHERE carrname CP p_name.
  LOOP AT spfli_tab INTO spfli_line
                    WHERE carrid = <scarr_line>-carrid.
    WRITE: / spfli_line-carrid,
             spfli_line-connid.
  ENDLOOP.
ENDLOOP.


вроде не должно быть проблем с переложением на Вашу ситуацию.

_________________
"После" - не значит "вследствие"


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по команде loop
СообщениеДобавлено: Ср, июн 09 2010, 13:26 
Специалист
Специалист

Зарегистрирован:
Пт, ноя 06 2009, 08:29
Сообщения: 243
slim написал(а):
Можно попробовать так
Code:
data ls_tab_1 like line of tab1.
data ls_tab_2 like line of tab1.
tab2[] = tab1[].
loop at tab1 into ls_tab_1
  ....
  loop at tab2 into ls_tab_2
  .... (здесь необходимо работать с полями из первого и второго loop-ов)
  endloop
endloop


Спасибо! Просто и понятно.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вопрос по команде loop
СообщениеДобавлено: Чт, июн 10 2010, 00:56 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, мар 09 2006, 10:12
Сообщения: 565
Откуда: Волгодонск
Пол: Мужской
Gray_ написал(а):
slim написал(а):
Можно попробовать так
Code:
data ls_tab_1 like line of tab1.
data ls_tab_2 like line of tab1.
tab2[] = tab1[].
loop at tab1 into ls_tab_1
  ....
  loop at tab2 into ls_tab_2
  .... (здесь необходимо работать с полями из первого и второго loop-ов)
  endloop
endloop


Спасибо! Просто и понятно.


на самом деле здесь не надо делать tab2[] = tab1[]. ибо ничто не мешает делать два вложенных лупа по одной и той же таблице.
если таблица без заголовков то "[]" при присвоении излишество

_________________
Изображение Попытка не пытка


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

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


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

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


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

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