Грязные трюки при работе с ALV

Дано: есть вывод отчета в ALV, в котором стандартными средствами включен расчет среднего значения.

Итоговое среднее значение стандартно расчитывается так:

( 30 + 40 + 50 + 0 ) / 4 = 30

Предположим для примера, что в четвёртой строке нулевое значение связано не с нулевым значением, а с его отсутствием.

Соответственно от заказчика есть задание: требуется выводить среднее значение, не учитывающее пустые (нулевые) значения:

Один из способов решения задачи — грязно вторгнуться во внутреннюю кухню ALV. Приступим?

Если создадим дочерний класс от главного CL_GUI_ALV_GRID, то получим возможность переопределить метод SET_DATA_TABLE.

Вот пример реализации:

Остаётся только реализовать отчет на базе нашего нового класса.

Поэтому, если изначально отчет был на CL_SALV_TABLE или REUSE_ALV_GRID_DISPLAY, то придётся потратить время и на это тоже. А можно ли хакнуть похожими методами их — отдельная история.

PS. Данный способ можно применять не только для вышеописанной задачи, но и для некоторых других. Например: можно влиять на объединение ячеек по горизонтали или вертикали (merge), если менять значения в полях MERGEHORIZ и MERGEVERT.

Comment (1)

  1. cl_proxy_xml_transform=>xml_xstring_to_abap(
    EXPORTING
    xml = gv_xstring
    IMPORTING
    abap_data = ct_data ).

Добавить комментарий

Ваш e-mail не будет опубликован.