Текущее время: Вс, июл 27 2025, 19:21

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


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

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


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

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