Текущее время: Пн, июл 21 2025, 19:31

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Уникальные записи по внутренней таблице
СообщениеДобавлено: Ср, мар 16 2005, 11:18 
Гость
Добрый день.
Есть проблемка!
Необходимо получить записи с уникальным ключом по вн. таблице

что делаю
SORT itab BY key.
LOOP AT itab.
AT NEW key.
....действия
ENDAT.
ENDLOOP.

но данный алгоритм почему-то проделывает действия и с пройденными ключами..:idea:

*Сорри если вопрос элементарный


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения: Re: Уникальные записи по внутренней таблице
СообщениеДобавлено: Ср, мар 16 2005, 11:25 
Гость
key должен первым полем при определении внутренней таблицы


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, мар 16 2005, 11:44 
Гость
а есть какой-нить другой метод решения этой проблемки, кроме IF...ENDIF?
Я просто начитающий АБАПЕР многого не знаю


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения: Re: Уникальные записи по внутренней таблице
СообщениеДобавлено: Ср, мар 16 2005, 11:51 
Специалист
Специалист

Зарегистрирован:
Ср, сен 08 2004, 16:04
Сообщения: 112
Откуда: Ukraine
Пол: Мужской
bpz написал(а):
Добрый день.
Есть проблемка!
Необходимо получить записи с уникальным ключом по вн. таблице

что делаю
SORT itab BY key.
LOOP AT itab.
AT NEW key.
....действия
ENDAT.
ENDLOOP.

но данный алгоритм почему-то проделывает действия и с пройденными ключами..:idea:

*Сорри если вопрос элементарный


DELETE ADJACENT DUPLICATES FROM itab.
Оставляет первую запись из дублирующихся в таблице, а остальные дублирующиеся удаляет.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Уникальные записи по внутренней таблице
СообщениеДобавлено: Ср, мар 16 2005, 12:20 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
s_ss написал:
bpz написал(а):
Добрый день.
Есть проблемка!
Необходимо получить записи с уникальным ключом по вн. таблице

что делаю
SORT itab BY key.
LOOP AT itab.
AT NEW key.
....действия
ENDAT.
ENDLOOP.

но данный алгоритм почему-то проделывает действия и с пройденными ключами..:idea:

*Сорри если вопрос элементарный


DELETE ADJACENT DUPLICATES FROM itab.
Оставляет первую запись из дублирующихся в таблице, а остальные дублирующиеся удаляет.


только данную конструкцию следует использовать с довеском
Code:
COMPARING f1 f2 ...
.
Что касается конструкции AT NEW key. то в качестве ключа в данном случае служат все поля структуры от первой до указанной (см help). Так что, возможно, вариант с IF...ENDIF выглядит не так уж и плохо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, мар 16 2005, 12:20 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 07 2004, 10:39
Сообщения: 610
SORT itab
и
LOOP AT itab WHERE cond


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, мар 16 2005, 13:15 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
попробуйте вот такой вот вариант:

SORT itab BY key.
LOOP AT itab.
on change of itab-key.
....действия
ENDON.
ENDLOOP.

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Уникальные записи по внутренней таблице
СообщениеДобавлено: Ср, мар 16 2005, 15:51 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
bpz написал(а):
Необходимо получить записи с уникальным ключом по вн. таблице

что делаю
SORT itab BY key.
LOOP AT itab.
AT NEW key.
....действия
ENDAT.
ENDLOOP.

но данный алгоритм почему-то проделывает действия и с пройденными ключами..:idea:


Да не может такого быть. Если у вас все написано все в точности так же, все должно работать. Если действительно ключ состоит из одного поля key, и внутренняя таблица точно отсортирована к началу loop'а.

А вообще - не запоминаются все ключи, которые уже были. Отслеживается лишь изменение значения заданного поля.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Уникальные записи по внутренней таблице
СообщениеДобавлено: Ср, мар 16 2005, 16:37 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
111 написал(а):
...
А вообще - не запоминаются все ключи, которые уже были. Отслеживается лишь изменение значения заданного поля.


Повторюсь - отслеживается не изменение данного поля, а изменение всех полей до заданного(включительно). вот что сообщает help:
Цитата:
Effect
f is a sub-field of an internal table processed with LOOP. The sequence of statements which follow it is executed if the sub-field f or a sub-field in the current LOOP line defined (on the left) before fhas a different value than in the preceding (AT NEW) or subsequent (AT END OF) table line.


т.е. если key не первое поле в структуре таблицы itab, то сортировка по одному только этому полю не будет приводить к желаемому эффекту.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Уникальные записи по внутренней таблице
СообщениеДобавлено: Ср, мар 16 2005, 16:46 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, авг 24 2004, 07:19
Сообщения: 3952
Откуда: ECC 6.0, South Kazakhstan
sy-uname написал(а):
...т.е. если key не первое поле в структуре таблицы itab, то сортировка по одному только этому полю не будет приводить к желаемому эффекту.


из собственного опыта добавлю, что если поле по которому делается at new не первое в структуре, описывающей таблицу, как не сортируй один фиг - на уникальность проверяется все что лежит левее этого поля


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, мар 16 2005, 17:52 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
А, ну да, конечно.
Только на уникальность проверяются не поля левее заданного, а часть записи начиная от ее начала до данного поля (включая его).

Сорри, неправильно выразился.
Точнее, давно не сталкивался с такой бедой, т.к. автоматом размещаю поля... правильным образом :-). Подзабыл :-).

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


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

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


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

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


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

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