Я сталкиваюсь со следующей проблемой.
Что я хочу сделать
Я хочу создать информационный набор, который бы перегруппировал для данного Заказа на поставку данные из таблицы VBAK
с несколькими строками из таблицы VBPA
, которые следует отправлять в разные поля.
Пример: для следующего PO 111005229 я хотел бы получить в первом поле поле KUNNR
, для которого PARVW = 'ER'
, а во втором поле поле ADRNR
, для которого PARVW = 'BP'
.
Желаемый вывод:
Что я пробовал
Объединение обеих таблиц в SQ02
Я попытался объявить 2 таблицы VBAK
и VBAP
во время работы TCode SQ02 и выбрать нужные поля:
Это не работает:
- так же, как в SE16N, запрос возвращает каждую строку заказа на покупку, когда требуется одна строка с отфильтрованными данными;
- при использовании
CHECK VBPA-PARVW = 'ER'.
в части кода Record processing
в надежде, что это сократит количество строк до 1 для данного заказа, никакого значения вообще не возвращается.
Объявление только таблицы VBAK в SQ02
Я также попытался объявить только таблицу VBAK
в SQ02, создать дополнительное поле PERNR_ER
, которое я хочу, и приступить к объединению VBAK
с VBPA
с openSQL
кодом, связанным с этими конкретными полями.
Я создал дополнительные поля PARVW_ER
и PERNR_ER
со следующим встроенным кодом:
SELECT PARVW
INTO PARVW_ER
FROM VBPA
WHERE VBELN = VBPA~VBELN.
AND PARVW = 'ER'.
ENDSELECT.
SELECT PERNR
INTO PERNR_ER
FROM VBPA
WHERE VBELN = VBPA~VBELN.
AND PARVW = 'ER'.
ENDSELECT.
, который дает в качестве вывода
Я тоже пробовал
TYPES: begin of TY_TABLE,
PARVW LIKE VBPA-PARVW,
PERNR LIKE VBPA-PERNR,
END OF TY_TABLE.
DATA: WA_TABLE TYPE TY_TABLE,
IT_TABLE TYPE TABLE OF TY_TABLE.
SELECT PARVW PERNR
APPENDING CORRESPONDING FIELDS OF TABLE IT_TABLE
FROM VBPA
WHERE VBELN = VBPA~VBELN.
LOOP AT IT_TABLE INTO WA_TABLE.
IF WA_TABLE-PARVW = 'ER'.
PARVW_ER = WA_TABLE-PARVW.
PERNR_ER = WA_TABLE-PERNR.
ENDIF.
ENDLOOP.
но он вернул то же самое.
Как мне поступить, чтобы получить ожидаемый результат?