Текущее время: Пн, авг 04 2025, 21:24

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


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

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


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

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