Доброго дня.
Собственно вопрос в заголовке, почему запрос данных через AMDP дает результат превышающий результат полученный через запрос, построенный на OpenSQL
OpenSQL
SELECT rt~dct_pernr AS pernr, e~srtza as srtza,
rt~lgart as lgart, SUM( CASE e~srtza
WHEN 'A' THEN ( rt~betrg )
WHEN 'P' THEN ( rt~betrg * -1 )
END ) AS betrg,
v~waers AS amt_curr
APPENDING CORRESPONDING FIELDS OF TABLE @rt_temp_union[]
FROM p2rx_rt as rt INNER JOIN p2rx_versc as v
ON v~dct_pernr EQ rt~dct_pernr AND v~dct_seqnr EQ rt~dct_seqnr
INNER JOIN p2rx_eval_period as e
ON e~dct_pernr EQ rt~dct_pernr AND e~dct_seqnr EQ rt~dct_seqnr
INNER JOIN p2rx_wpbp_index as wi
ON wi~dct_pernr EQ rt~dct_pernr AND wi~dct_seqnr EQ rt~dct_seqnr AND wi~rt_apznr EQ rt~apznr
INNER JOIN p2rx_wpbp as w
ON w~dct_pernr EQ rt~dct_pernr AND w~dct_seqnr EQ rt~dct_seqnr AND w~apznr EQ wi~wpbp_apznr
WHERE v~molga EQ @mv_molga AND
e~srtza NE 'O' AND
v~payty EQ '' AND " only regulars, active,
w~stat2 EQ '3'
GROUP BY rt~dct_pernr, rt~lgart, e~srtza,
rt~betrg, v~waers.
AMDP
et_rt = select rt.dct_pernr AS pernr, e.srtza as srtza, rt.lgart as lgart,
sum( case e.srtza
when 'A' then ( rt.betrg )
when 'P' then ( rt.betrg * -1 )
end ) as betrg,
v.waers as amt_curr
from p2rx_rt as rt
INNER JOIN p2rx_versc as v on v.dct_pernr = rt.dct_pernr
AND v.dct_seqnr = rt.dct_seqnr
INNER JOIN p2rx_eval_period as e on e.dct_pernr = v.dct_pernr
and e.dct_seqnr = v.dct_seqnr
INNER JOIN p2rx_wpbp_index as wi on wi.dct_pernr = rt.dct_pernr
and wi.dct_seqnr = rt.dct_seqnr
and wi.rt_apznr = rt.apznr
INNER JOIN p2rx_wpbp as w on w.dct_pernr = wi.dct_pernr
and w.dct_seqnr = wi.dct_seqnr
and w.apznr = wi.wpbp_apznr
where v.molga = iv_molga
and e.srtza <> 'O'
and v.payty = ''
and w.stat2 = '3'
GROUP BY rt.dct_pernr, rt.lgart, rt.betrg, v.waers, e.srtza;
Итого результат 14519 записей OpenSQL против 15057 AMDP. Это для понимания порядка разности результатов.
Так вот, почему?
Так же сделаны:
CDS ракурс (DDL SQL)
и Attribute View
Обе объекта вызываются из ABAP - и дают результат равный тому что возвращает OpenSQL.
В чем проблема, где не прав?