Текущее время: Ср, авг 06 2025, 17:07

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Выдернуть одинаковые строки из внутренней таблицы
СообщениеДобавлено: Пт, авг 08 2008, 13:03 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Никто не знает есть ли ФМ чтобы выдернуть строки из внутренней таблицы с одинаковым значением некоторых столбцов?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, авг 08 2008, 13:14 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, июн 05 2006, 13:33
Сообщения: 805
Пол: Мужской
Что значит выдернуть?


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

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
[quote="Timon&Pumba"]Что значит выдернуть?[/quote]
Выбрать


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, авг 08 2008, 13:21 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
Не ФМ, а оператор
DELETE ADJACENT DUPLICATES FROM itab
[COMPARING { comp1 comp2 ...}|{ALL FIELDS}]... .

Удаляет только соседние дубликаты (нужно отсортировать предварительно).

Если не удалить, а именно выбрать - немного пошевелить извилинами :lol: .

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


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

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
[quote="111"]Не ФМ, а оператор
DELETE ADJACENT DUPLICATES FROM itab
[COMPARING { comp1 comp2 ...}|{ALL FIELDS}]... .

Удаляет только соседние дубликаты (нужно отсортировать предварительно).

Если не удалить, а именно выбрать - немного пошевелить извилинами :lol: .[/quote]
Да, я это понял, сначала удалить дупликаты, потом удалить таблицу с дупликатами из первоначальной таблицы, но если допустим в этой первоначальной таблицы 3 одинаковых строки, удалятся ведь тока две...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, авг 08 2008, 13:40 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
Besa написал:
Да, я это понял, сначала удалить дупликаты, потом удалить таблицу с дупликатами из первоначальной таблицы, но если допустим в этой первоначальной таблицы 3 одинаковых строки, удалятся ведь тока две...


Нет, просто создать копию первоначальной таблицы, затем из этой копии удалить дубликаты. Затем пойти по первоначальной таблице и построчно сверять ее записи с таблицей без дубликатов.
Если ITEAB1 NE ITAB2, то запись в ITAB1 - дубликат, уже удаленный из ITAB2. Примерно 5 строчек кода.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, авг 08 2008, 15:49 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Можно без копирования таблиц обойтись, чтобы не поймать дамп нехватки памяти на большой таблице. Например:

Code:
DATA: BEGIN OF it OCCURS 0,
        n TYPE i,
      END OF it,
      it2 LIKE TABLE OF it,
      i TYPE i.

DO 100 TIMES.
  it-n = sy-index.
  APPEND it.
  i = sy-index MOD 3.
  IF i IS INITIAL.
    APPEND it.
  ENDIF.
ENDDO.

SORT it BY n.
DESCRIBE TABLE it LINES i.
WHILE NOT i IS INITIAL.
  READ TABLE it INDEX i.
  READ TABLE it WITH KEY n = it-n BINARY SEARCH.
  IF sy-tabix NE i.
    APPEND LINES OF it FROM sy-tabix TO i TO it2.
  ENDIF.
  i = sy-tabix - 1.
ENDWHILE.

_________________
С уважением, VGA
Мой блог


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, авг 08 2008, 18:41 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
Если позволяет структура таблицы, то можно еще воспользоваться LOOP и AT NEW field ... AT END OF field. Только для этого сравниваемые поля должны стоять первыми в определении таблицы.

_________________
"One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important." Bertrand Russell


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, авг 09 2008, 09:19 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Всем спасибо.


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

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


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

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


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

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