Текущее время: Вт, июл 22 2025, 09:56

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


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

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


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

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