Это все здорово как упражнения для изучения системы.

Но в чем выигрыш?

Поддерживать такой код - мама не горюй. Если понадобится расширить обработку сагрегированных данных, а не только сортировать их, что тогда?

Или включить в запрос?
К тому же ADO - это внешняя компонента по отношению к Axapta, это тоже минус. Работа с COM объектами - это накладные расходы, еще проверить по производительности не мешало бы, что выгоднее.
С учетом того, что временные таблицы - это родной механизм Axapta и встречаются в ней сплошь и рядом, что может испортить еще одна временная таблица? Кстати,
konopello тоже неполохой вариант предложил.
Добавлено. Мда...тестирование производительности варианта с временной таблицей и ADO RecordSet не выявило существенной разницы. Надо машинку послабее взять, видимо.
В коде
Gustav пришлось изменить строку
X++:
fld.Value(ledgerTrans.AccountNum )
на
X++:
fld.Value( COMVariant::createFromStr(ledgerTrans.AccountNum) )