Текущее время: Вс, июл 20 2025, 15:39

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 24 2006, 14:33 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Snegurenok, так она все пометит, а нужно, чтобы 1:1.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 24 2006, 14:34 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, сен 09 2004, 07:32
Сообщения: 777
Откуда: Москва
Пол: Мужской
Поприкалываюсь, с вашего позволения :)
Code:
TYPES: BEGIN OF ty_data,
         value TYPE matnr_d,
         index TYPE i,
       END   OF ty_data.

DATA: it1 TYPE TABLE OF ty_data WITH NON-UNIQUE KEY value,
      it2 TYPE TABLE OF ty_data WITH NON-UNIQUE KEY value,
      it3 TYPE TABLE OF ty_data WITH NON-UNIQUE KEY value.

DATA: BEGIN OF idel OCCURS 100,
        index TYPE i,
      END   OF idel.

FIELD-SYMBOLS: <wa> TYPE ty_data.

* заполнение первичными данными для теста
SELECT DISTINCT matnr INTO TABLE it1
                      FROM mard WHERE werks EQ '5101'.

SELECT DISTINCT matnr INTO TABLE it2
                      FROM mard WHERE werks EQ '4201'.

* итоговая таблица (здесь будет результат)
it3[] = it1[].

* проставляем индекс записи
LOOP AT it1 ASSIGNING <wa>.
  <wa>-index = sy-tabix.
ENDLOOP.

* слияние данных обеих таблиц
APPEND LINES OF it2 TO it1.

* сортировка и удаление идентичных
SORT it1 BY value.
DELETE ADJACENT DUPLICATES FROM it1 COMPARING value.

* индекс записи, которая только в одной таблице
LOOP AT it1 ASSIGNING <wa> WHERE index GT 0.
  idel-index = <wa>-index.
  APPEND idel.
ENDLOOP.

* таблица IT3 содержит записи IT1, которые есть в IT2 (одинаковые)
SYSTEM-CALL ITAB_DELETE_LIST TABLE it3 INDEX-LIST idel.

на 4.6C работает... кто еще более извращенно придумает? :wink:

_________________
"Прежде чем сделать что-то, подумай, к чему это может привести..."


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 24 2006, 22:46 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Иногда полезно подумать над изменением начальных условий ;-)
Например, поставить поле MATNR первым, заполнять ch не 'X', а '1' для первой таблицы, а '2' для второй. Таблицы слить в одну и отсоритровать.
Наличие связей 1:N лечится DELETE ADJACENT DUPLICATES.

Существование двух рядом стоящих записей с одинаковым MATNR говорит о наличии материала в обоих таблицах.

Для проверки сначала ищется запись MATNR '1', далее INDEX + 1.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, ноя 27 2006, 08:45 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
vga написал(а):
Наличие связей 1:N лечится DELETE ADJACENT DUPLICATES.


Вы неправильно поняли условие. N:N для matnr не надо лечить. Отметки должны расставляться 1:1.

sibrin: "matnr могут дублироваться в одной таблице?"

PMщик: "да, могут. Как раз задача чтобы не было отметок 1:N ,
а именно 1:1".


Т.е. в tab1 может быть 3 строки с matnr = '1'. А в tab2 — 2 строки.
В каждую таблицу попадает по два X, причём в tab1 ровно одна строка остаётся непомеченой.


А вот когда нужно, например, отследить измененеия в файловой системе, действительно, удобно использовать 1 для старого состояния и 2 для нового. Таблицы сливать в одну не нужно. Достаточно сделать COLLECT INTO. Тогда результат 1 = файл удалён, 2 = файл появился, 3 = без изменений.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу Пред.  1, 2

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


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

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


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

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