Как убрать дублирование записей в оперативном запросе?
Как убрать дублирование записей в оперативном запросе?
Пояснение к вопросу
Работая с оперативными запросами, сформированными, к примеру, на ЛБД PNPCE, вы замечаете, что в результатах работы этого запроса появляются дублированные записи:
Обратите внимание, что период запрашиваемых данных выбран «ALL». Такое поведение системы объясняется тем, что за запрашиваемый период по сотруднику(ам), попавшему(им) в выборку, были произведены какие-то изменения в инфо-типах, отмеченные для вывода на экран (например, данные инфо-типов 0000 - "Actions", 0001 - "Organizational Assignment" или 0002 - "Personal Data"). В данном примере, у сотрудника присутствует несколько записей в инфо-типах 0000 - "Actions" и 0001 - "Organizational Assignment"
Чтобы убрать дублированные записи необходимо активировать "переключатели" / Infotype-specific Switches для инфо-набора, на основании которого построен оперативный запрос.
Решение вопроса
Откройте на изменение инфо-набор, на основе которого сформирован запрос. Правой кнопкой кликните по группе полей инфо-типа 0000 - "Actions" и выберите в контекстном меню пункт Node Extras
Затем нажмите на кнопку Code
Активируйте следующие переключатели
Сгенерируйте инфо-набор, нажатием на кнопку
Затем перейдите к созданному ранее запросу, и выберите в меню Query -> More Functions -> Generate Program
Запустите заново отчет
Дублированные данные по работнику более вас беспокоить не будут.
Для информации привожу описание данного переключателя, подготовленное самим вендором:
LAST_RECORD_ONLY
Description
In the standard system, all of the data records in the reporting period are processed by the query. Sometimes, however,
only the most recent (most current) data record in the reporting period is relevant, and only this data record needs to be
output. In ABAP reports the RP_PROVIDE_FROM_LAST macro is often used to filter the last data record out of a set
of data records. To achieve this result in the query, you can set the LAST_RECORD_ONLY switch.Standard system conduct
All of the data records in the reporting period are taken into account/processed.
Values
'X' – Only the last data record (that is, the data record with the highest end date) in the reporting period is taken into
account/processed.
' ' – Standard: all of the data records in the reporting period are taken into account/processed.Note
When data is determined, only the data record with the highest end date is taken into account. All other data records in
the reporting period are ignored. Other checks regarding, for example, time constraints or subtypes are not performed
for the data records. Processing continues as if this one data record were the only data record to exist. In particular, all
of the selection conditions are checked for this one data record only.
Также смотри:
См. заметку Оперативный запрос
См. заметку Оперативный запрос. Пользовательские поля