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

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


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

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


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

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