2016-11-04 3 views
-1

Вот пример данных, которые я хочу выбрать из таблицы AFRU.ABAP - выбор строки с критериями выбора соответствия значений MAX

+----------------------+-----------------+-------------------------+ 
| Confirmation (RUECK) | Counter (RMZHL) | Finish Execution (IEDD) | 
+----------------------+-----------------+-------------------------+ 
|    30116 |    1 | 08/26/2014    | 
|    30116 |    2 | 08/27/2014    | 
|    30116 |    3 | 09/27/2013    | 
+----------------------+-----------------+-------------------------+ 

Учитывая этот набор данных, я хотел бы, чтобы выбрать последнюю строку, поскольку она содержит высокий RMZHL значения (я действительно только после IEDD значения этой записи). Вот код, который я пытался использовать:

SELECT MAX(rmzhl), iedd FROM afru 
          INTO (@DATA(lv_rmzhl), @DATA(lv_iedd)) 
          WHERE rueck = '0000030116' 
     GROUP BY rmzhl, iedd. 
     ... 
     <some fancy code here> 
     ... 
ENDSELECT. 

Однако этот выбор всегда Сетку мне значения 1 для lv_rmzhl и 20140826 для lv_iedd, поэтому не получаю значение MAX как я пытаюсь получить. Я понимаю, что его можно легко выполнить, поставив все это во внутренний стол и отсортировав поле RMZHL, но я ищу более подходящий способ.

+1

Вам просто нужно максимальное значение 'RMZHL' для каждого' RUECK' или вам нужны дополнительные данные полезной нагрузки (например, 'IEDD')? – vwegert

+0

@vwegert технически, все, что мне нужно, это значение IEDD '20130927'. – gkubed

ответ

6

Вы могли бы сделать подвыбор как:

SELECT SINGLE iedd 
    FROM afru 
    INTO @DATA(lv_iedd) 
    WHERE rueck = '0000030116' 
    AND rmzhl = (SELECT MAX(rmzhl) FROM afru WHERE rueck = '0000030116'). 

Я использовал это в большинстве случаев, даже в сочетании с FOR ALL ENTRIES и разница в производительности очень низок.

+0

просто дважды проверить, это должен быть «ВЫБЕРИТЕ ОДИН», правильно? – gkubed

+1

Да, в противном случае вам придется переключиться на 'SELECT ... INTO TABLE'. Я отредактировал свой ответ –

+1

@gkubed Спасибо за ваш совет. Вы правы - это не было бы скомпилировано без пробелов между круглыми скобками и 'rmzhl'. Меня это очень раздражает, что людям, которые еще не запрограммированы в ABAP, разрешалось отклонять ваше редактирование на этом посту ... –

Смежные вопросы