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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Группировка таблиц
СообщениеДобавлено: Чт, июн 20 2013, 17:40 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, ноя 07 2011, 11:46
Сообщения: 83
Добрый день!
Возникла следующая проблема.
Есть глобальная таблица следующей структуры:
TYPES: BEGIN OF ts_caufv,
werks TYPE caufv-werks,
fevor TYPE caufv-fevor,
dispo TYPE caufv-dispo,
gltrs TYPE caufv-gltrs,
gluzp TYPE caufv-gluzp,
aufnr TYPE caufv-aufnr,
matnr TYPE caufv-plnbez,
lgort TYPE afpo-lgort,
igmng TYPE caufv-igmng,
gamng TYPE caufv-gamng,
gmein TYPE caufv-gmein,
END OF ts_caufv,
tt_caufv TYPE STANDARD TABLE OF ts_caufv.

DATA: gt_caufv TYPE tt_caufv, "Основная таблица

Из таблицы gt_caufv нужно сформировать 2 таблицы:
1) gt_data_det - это таблица заполняется данными из gt_caufv, сгруппированными по werks, fevor, dispo, gltrs, gluzp, aufnr
2) gt_data_ad - это таблица заполняется данными из gt_caufv, сгруппированными по werks, fevor, dispo, gltrs, matnr

1-ая таблица легко заполняется, нужно только применить
SORT gt_caufv BY werks fevor dispo gltrs gluzp aufnr.
LOOP AT gt_caufv ASSIGNING <fs_caufv>.
AT END OF aufnr.
......
APPEND ls_data_det TO gt_data_det.
ENDAT.
ENDLOOP.

У меня проблема с формированием 2-ой таблицы. Неужели нужно заводить таблицу новой стр-ры, в которой не будет полей gluzp, aufnr и переносить
данные из gt_caufv в эту новую таблицу, чтобы затем сформировать gt_data_ad? Можно ли как-нибудь сформировать gt_data_ad из gt_caufv, чтобы оставался алгоритм для формирования gt_data_det?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Группировка таблиц
СообщениеДобавлено: Чт, июн 20 2013, 22:01 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Для того, чтобы сгруппировать данные, необязательно сортировать исходную таблицу.
Достаточно сделать сортированными 2 другие таблицы. И добавлять в них данные не по APPEND, а по INSERT. Или COLLECT, если нужно что-нибудь суммировать.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Группировка таблиц
СообщениеДобавлено: Пт, июн 21 2013, 17:11 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, ноя 07 2011, 11:46
Сообщения: 83
Удав написал(а):
Для того, чтобы сгруппировать данные, необязательно сортировать исходную таблицу.
Достаточно сделать сортированными 2 другие таблицы. И добавлять в них данные не по APPEND, а по INSERT. Или COLLECT, если нужно что-нибудь суммировать.


Не совсем понятно. Ведь мне надо сгруппировать данные таблицы, а не просортировать. Не могли бы Вы пояснить, что имели в виду?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Группировка таблиц
СообщениеДобавлено: Сб, июн 22 2013, 12:11 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
Code:
LOOP AT gt_caufv ASSIGNING <fs_caufv>.
  MOVE-CORRESPONDING <fs_caufv> TO ls_data_det.
  COLLECT ls_data_det INTO gt_data_det.

  MOVE-CORRESPONDING <fs_caufv> TO ls_data_ad.
  COLLECT ls_data_ad  INTO gt_data_ad.
ENDLOOP.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Группировка таблиц
СообщениеДобавлено: Пн, июн 24 2013, 22:09 
Президент
Президент

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

Code:
SORT gt_caufv.
LOOP AT gt_caufv ASSIGNING <fs_caufv>.
...
AT END OF matnr.
APPEND ls_data_det TO gt_data_ad.
ENDAT.
AT END OF aufnr.
APPEND ls_data_det TO gt_data_det.
ENDAT.
ENDLOOP.


Но это зависит от того, как соотносятся значения в полях MATNR/AUFNR. У нас, например, production order (AUFNR) создается только для одного материала, так что в любом случае было бы не больше одной записи для комбинации MATNR/AUFNR. Если у вас по-другому, то придется делать два разных типа таблиц. Собственно ничего криминального в этом нет и тогда можно использовать COLLECT, как уже советовали.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Группировка таблиц
СообщениеДобавлено: Пн, июн 24 2013, 22:16 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Jelena написала:
с COLLECT не получится сделать две таблицы как вы хотите, используя одну и ту же структуру.

Почему? Если заполнять только поля группировки + числовые показатели, то никаких проблем.

_________________
С уважением,
Удав.


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

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


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

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


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

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