Текущее время: Ср, апр 24 2024, 16:38

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Loop group by
СообщениеДобавлено: Сб, мар 11 2023, 13:36 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Чт, окт 10 2019, 11:49
Сообщения: 49
Всем привет!

Подскажите мне, пожалуйста по оператору loop group by.

У меня есть большой луп по таблице, содержащей данные из ACDOCA.

В одном из полей таблицы нужно получить HSL сгруппированную по PS_PSP_PNR и ALV-ZUONR.

Подскажите, как это внутри главного лупа по таблице написать?
Я не пользовалась этим оператором.

Главный луп :

Code:
LOOP AT lts_data ASSIGNING <ls_data>.
...
Выборки...
...
Луп с группировкой по этой же таблице...
....
LOOP AT lts_data ASSIGNING <ls_data>
    GROUP BY ( ps_psp_pnr = <ls_data>-ps_psp_pnr zuonr = <ls_data>-zuonr ) INTO DATA(lts_hsl_group).
  DATA(lv_total_hsl) = 0.

  LOOP AT GROUP lts_hsl_group ASSIGNING field-symbol(<lts_hsl_group>).
    lv_total_hsl = lv_total_hsl + <ls_data>-hsl.
  ENDLOOP.

ENDLOOP.

....

Endloop.



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


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Loop group by
СообщениеДобавлено: Пн, мар 13 2023, 09:39 
Специалист
Специалист

Зарегистрирован:
Чт, дек 02 2010, 08:37
Сообщения: 156
Если я правильно понял, то во всех строках каждой группы, в "одном из полей таблицы"
будет одно и то же значение суммы?

1. Замените объявление DATA(lv_total_hsl) = 0 на соответствующий тип, т.к. в вашем случае LV_TOTAL_HSL будет целочисленным
(если только это не было задумано изначально)
2. Вместо INTO DATA(lts_hsl_group) сделайте ASSIGNING FIELD-SYMBOL(<lts_hsl_group>), чтобы иметь доступ именно к
таблице LTS_DATA
3. После вычисления суммы, придётся сделать ещё один цикл по LOOP AT GROUP <lt_hsl_group>, чтобы записать
значение суммы в "одно из полей таблицы", т.к. доступа к полям из <ls_data> у вас нет

LOOP AT lts_data ASSIGNING <ls_data>
GROUP BY (ps_psp_pnr = <ls_data>-ps_psp_pnr zuonr = <ls_data>-zuonr ) ASSIGNING FIELD-SYMBOL(<lt_hsl_group>).
DATA(lv_total_hsl) = VALUE тип_одного_поля( ).

LOOP AT GROUP <lt_hsl_group> ASSIGNING FIELD-SYMBOL(<lts_hsl_group>)
lv_total_hsl = lv_total_hsl + <lts_hsl_group>-hsl.
ENDLOOP.

LOOP AT GROUP <lt_hsl_group> ASSIGNING <lts_hsl_group>.
<lts_hsl_group>-одно_поле = lv_total_hsl.
ENDLOOP.


ENDLOOP.

Ну, как-то, так...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Loop group by
СообщениеДобавлено: Ср, мар 22 2023, 23:00 
Почетный гуру
Почетный гуру
Аватара пользователя

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

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


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

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


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

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


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

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