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

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


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

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


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

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