Я создаю отчет в SAP SQ01 / SQ02, цель которого - показать, сколько раз продукт был выбран за указанный период времени.
Данные в основном получены из таблицы LTAP.Мне просто нужно иметь возможность подсчитать количество строк. Материал дублируется в XYZ, вывести число в дополнительное поле и показать значение.Также я хочу, чтобы этот подсчет происходил в определенный период времени, скажем, в последние 30 дней, чтобы убедиться, что он актуален и актуален.
Приведенный ниже код работает, но он настолько медленный, чтоТребуется пара секунд, чтобы вывести счетчик только для одного материала, и мне нужен отчет, чтобы вывести топ-1000 на основе счетчика.Есть ли более эффективный способ сделать то же самое?
Таблица данных
DATA : YEAR(4) TYPE N,
MTH(2) TYPE N,
DAY(2) TYPE N,
YEAR1(4) TYPE N,
MTH1(2) TYPE N,
DAY1(2) TYPE N,
FROM_DATE LIKE SY-DATUM,
count1 like LTAP-UMREZ.
FIELD-SYMBOLS <fs_dtab> TYPE STANDARD TABLE.
DATA: sort_f1 TYPE fieldname.
Таблица инициализации
sort_f1 = 'ltap-matnr'.
Обработка записей TAB
YEAR = SY-DATUM(4).
MTH = SY-DATUM+4(2).
DAY = SY-DATUM+6(2).
IF MTH eq 1.
MTH1 = MTH + 11.
ELSE.
MTH1 = MTH - 1.
ENDIF.
IF MTH eq 1.
YEAR1 = YEAR - 1.
ELSE.
YEAR1 = YEAR.
ENDIF.
FROM_DATE(4) = YEAR1.
FROM_DATE+4(2) = MTH1.
FROM_DATE+6(2) = DAY.
КОНЕЦ ВЫБОРА ПОСЛЕ TAB
ASSIGN ('%G00[]') TO <fs_dtab>.
IF <fs_dtab> IS ASSIGNED.
SORT <fs_dtab> BY (sort_f1)
DESCENDING.
DELETE ADJACENT DUPLICATES FROM <fs_dtab>
COMPARING (sort_f1).
ENDIF.
Код дополнительного поля
В LTAP поле UMREZ заполняется номером «1», поэтому я использую его здесь для подсчета дубликатов.
clear count.
Select sum( UMREZ ) as UMREZ
from *LTAP into COUNT
where *LTAP~MATNR eq LTAP-MATNR
and *LTAP~QDATU GE from_date.
Я ожидаю, что отчет выйдет в считанные секунды, а не минутыза пару кодов материала.Буду очень признателен за альтернативный код или улучшение текущего, которое могло бы достичь этого.