Текущее время: Вт, апр 16 2024, 13:11

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


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

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


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

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