Hi,
I have a requirement where I need to retrieve a single partner function on sales order header level (SELECT SINGLE in ABAP)
Therefore I have created the following sql script calculation view:
LT_VBRK = SELECT MANDT, VBELN
FROM"SLT_PRD"."VBRK"
WHERE VBELN = :P_VBELN ;
LT_VBPA_MIN = SELECT MANDT, VBELN, min(POSNR) as POSNR
FROM"SLT_PRD"."VBPA"
GROUPBY MANDT, VBELN;
LT_VBPA_AG = SELECT A.MANDT, A.VBELN, A.POSNR, B.KUNNR
FROM :LT_VBPA_MIN AS A
INNERJOIN"SLT_PRD"."VBPA"AS B
ON A.MANDT = B.MANDT
AND A.VBELN = B.VBELN
AND A.POSNR = B.POSNR
WHERE B.PARVW = 'AG';
LT_VBPA_WE = SELECT A.MANDT, A.VBELN, A.POSNR, B.KUNNR
FROM :LT_VBPA_MIN AS A
INNERJOIN"SLT_PRD"."VBPA"AS B
ON A.MANDT = B.MANDT
AND A.VBELN = B.VBELN
AND A.POSNR = B.POSNR
WHERE B.PARVW = 'WE';
LT_VBPA_RE = SELECT A.MANDT, A.VBELN, A.POSNR, B.KUNNR
FROM :LT_VBPA_MIN AS A
INNERJOIN"SLT_PRD"."VBPA"AS B
ON A.MANDT = B.MANDT
AND A.VBELN = B.VBELN
AND A.POSNR = B.POSNR
WHERE B.PARVW = 'RE';
var_out = SELECT A.MANDT as MANDT, A.VBELN as VBELN, B.KUNNR as KUNAG, C.KUNNR as KUNWE,
D.KUNNR as KUNRE, E.KUNNR as KUNZ3,
1 AS COUNTER
FROM :LT_VBRK as A
LEFTJOIN :LT_VBPA_AG as B
ON A.MANDT = B.MANDT
AND A.VBELN = B.VBELN
LEFTJOIN :LT_VBPA_WE as C
ON A.MANDT = C.MANDT
AND A.VBELN = C.VBELN
LEFTJOIN :LT_VBPA_RE as D
ON A.MANDT = D.MANDT
AND A.VBELN = D.VBELN;
However, performance gets really poor (I even get memory dumps) when joining this view in other calculation views (left join), probably because the full result set of the sql script calculation view is processed before performing the join in a second calculation view.
Any suggestions on whether this approach is correct, or how this can be optimized?
Thanks!
Tom