SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Альтернатива Collect и Control Level Processing



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
Hanna_89
Участник
Участник



Joined: 01 Nov 2011
Posts: 29

PostPosted: Tue Nov 01, 2011 11:21 am    Post subject: Альтернатива Collect и Control Level Processing Reply with quote

Такой вопрос: есть таблица полётов, по ней рассчитывается, скажем сумма проданных билетов с помощью оператора Collect и Control Level Processing. Как получить ту же сумму, не используя первых 2-х двух и НЕ ПРИМЕНЯЯ циклов? Цикл можно применить только для вывода уже сформированной информации.
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Tue Nov 01, 2011 5:11 pm    Post subject: Reply with quote

Поясните вопрос:
Под таблицей полетов подразумевается таблица БД sflight или внутренняя таблица, в которую уже выбраны данные sflight?
Если внутренняя таблица, то что является "сформированной информацией" - результат ввода данных пользователем с помощью ALV?
В любом случае при вводе данных в ALV они запоминаются во внутренней таблице - это единственное место хранения актуальных данных.
И обработка этих данных доступна только с помощью цикла по внутренней таблице. Другое дело, что для подсуммирования необязательно использовать AT NEW и AT END OF.

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
Hanna_89
Участник
Участник



Joined: 01 Nov 2011
Posts: 29

PostPosted: Wed Nov 02, 2011 12:23 am    Post subject: Reply with quote

Уважаемый удав, поясняю. С помощью Control level processing я выводила подсуммысуммы за конкретный период и выводила write-ами, используя информацию из sflight. С помощью оператора Collect была сформирована соответствующая внутренняя таблица с теми же нужными подсуммами по таблице sflight. Так вот, нужен 3-ий способ для подсуммирования. Вы сказали, что для этого необязательно использовать AT NEW и AT END OF. Так это сделать? Помогите, пожалуйста!
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Wed Nov 02, 2011 10:39 am    Post subject: Reply with quote

Недостаток AT NEW...AT END заключается в том, что контрольные поля должны располагаться в начале внутренней таблицы.

Недостаток COLLECT в том, что формируется другая внутренняя таблица.

По произвольным полям подсуммирование осуществляется в ALV-Grid. Wink

В общем случае задача решается с помощью динамического программирования. Если заранее известно, по каким полям нужно суммировать, то делается следующее:
1.Объявляется внутренняя таблица с именами полей для группировки it_sort
2.Объявляются 2 переменных (old_sort и curr_sort) такого же типа, что и строка таблицы
3.Заполняется таблица it_sort
4.Производится сортировка по нужным полям
5.В цикле по внутренней таблице:
а) присваиваются значения структуре curr_sort.
б) в curr_sort очищаются поля, которых нет в таблице it_sort
в) производится сравнение curr_sort и old_sort
г) если структуры не равны то:
-если old_sort непустая, выводится строка с суммами
-очищаются поля суммирования,
-производится присвоение old_sort = curr_sort.
д) в поля суммирования добавляются значения сумм из sflight
6.После окончания цикла выводятся поля сумм для последней группировки.

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.