Помогите разобраться с такой проблемой. прежде чем написать, долго рыл на форуме, прочитал массу советов как изменить значения подитогов в ALV Grid. В частности, использование события AFTER_REFRESH, например тут
http://sapboard.ru/forum/viewtopic.php?f=13&t=23694&hilit=get_subtotals. Собственно проблема в том, что метод отрабатывает, и даже
правит подитоги, возвращаемые GET_SUBTOTAL как надо, в отладчике смотрю. НО при отображении грида на экране изменений как будто и не было! Хорошо бы, чтоб был метод SET_TOTALS, но его нет. Как эту беду победить, не знаю.
Code:
method on_after_refresh.
data : total type ref to data
, subtotal1 type ref to data
, subtotal2 type ref to data
, ref TYPE string
, summ(4) TYPE n VALUE 0
, wa_res LIKE LINE OF it_result
.
data wa_total_levels TYPE LINE OF LVC_T_GRPL.
field-symbols : <total> TYPE STANDARD TABLE
, <subtotal1> TYPE STANDARD TABLE
, <subtotal2> TYPE STANDARD TABLE
, <it> TYPE STANDARD TABLE
, <wa> TYPE data
, <fld> TYPE data
.
CALL METHOD go_alv_grid->GET_SUBTOTALS
IMPORTING
EP_COLLECT00 = total
EP_COLLECT01 = subtotal1
EP_COLLECT02 = subtotal2
ET_GROUPLEVELS = it_total_levels.
assign total->* to <total>.
assign subtotal1->* to <subtotal1>.
assign subtotal2->* to <subtotal2>.
loop at it_total_levels INTO wa_total_levels WHERE subtot = 'X'.
ref = wa_total_levels-level.
CONCATENATE 'SUBTOTAL' ref '->*' INTO ref.
CONDENSE ref NO-GAPS.
ASSIGN (ref) TO <it>.
READ TABLE <it> INDEX wa_total_levels-cindx_from
ASSIGNING <wa>.
ASSIGN COMPONENT 'INDICATOR' OF STRUCTURE <wa> TO <fld>.
summ = 13.
<fld> = summ.
MODIFY <it> INDEX wa_total_levels-cindx_from FROM <wa>.
endloop.
endmethod.
Откопал второй способ решить поставленную задачу - использование событие subtotal_text.
Реализовал. Опять-таки есть НО... Событие отрабатывает только если в открытом гриде изменить формат, скрыв столбец, по которому считается подитог.. Тоже не удобно.
И наконец, кто-то советовал использовать событие AFTER_LINE_OUTPUT, но такового не нашел.