На самом деле это то, для чего предназначены ACCUMULATE STATEMENT и ACCUM.Я нахожу точный синтаксис для тех, кого трудно запомнить (и иногда трудно понять даже после прочтения онлайн-справки), поэтому я часто прибегаю к накоплению переменных, как в ответе Дженсда.Код для вашего примера должен выглядеть примерно так (проверено синтаксисом, но не проверено):
FOR EACH order BREAK BY order.invoice:
accumulate Order.sell-price (sub-total by order.invoice).
accumulate Order.cost-price (sub-total by order.invoice).
IF LAST-OF(order.invoice) THEN
DISPLAY Order.invoice
accum sub-total by order.invoice Order.sell-price
accum sub-total by order.invoice Order.cost-price.
END.