I have in fact 2 scripted calculation views which are then unioned (I did not do it in one single view as the output structure of the 2 views is not 100% the same, view 2 has more fields than view 1):
Her some code
view1
var_out =
SELECT a2."VBELN", a2."POSNR", a4."MBLNR", a4."MJAHR", a4."LINE_ID", a5."BUDAT", a4."BUKRS",
a4."WERKS", a4."SAKTO", a4."MATNR", a4."KDAUF", a4."KDPOS",
a4."KOSTL", a4."PRCTR", a4."DMBTR", a4."WAERS", a4."MENGE", a4."MEINS", a4."ERFMG", a4."ERFME",
a4."SHKZG"
FROM SAPSR3."VBUK" AS a1
INNER JOIN SAPSR3."VBUP" AS a2 ON a1."VBELN" = a2."VBELN"
INNER JOIN SAPSR3."VBFA" AS a3 ON a3."VBELV" = a2."VBELN" AND a3."POSNV" = a2."POSNR"
INNER JOIN SAPSR3."MSEG" AS a4 ON a4."MBLNR" = a3."VBELN" AND a4."MJAHR" = a3."MJAHR"
AND a4."LINE_ID" = a3."POSNN"
INNER JOIN SAPSR3."MKPF" AS a5 ON a5."MBLNR" = a4."MBLNR" AND a5."MJAHR" = a4."MJAHR"
WHERE a1."FKSTK" = 'A' OR a1."FKSTK" = 'B'
OR ( a1."FKSTK" != 'A' AND a1."FKSTK" != 'B' AND ( a1."FKIVK" = 'A' OR a1."FKIVK" = 'B' ) )
AND ( a2."FKSTA" = 'A' OR a2."FKSTA" = 'B' OR ( a2."FKSTA" != 'A' AND a2."FKSTA" != 'B'
AND ( a2."FKIVP" = 'A' OR a2."FKIVP" = 'B' ) ) )
AND ( a3."VBTYP_V" = 'J' OR a3."VBTYP_V" = 'T' )
AND ( a3."VBTYP_N" = 'R' OR a3."VBTYP_N" = 'h' );
view2
var_out =
SELECT b3."VBELN" as "VBELN_VBUP", b3."POSNR", b5."MBLNR", b5."MJAHR", b5."LINE_ID", b6."BUDAT", b5."BUKRS",
b5."WERKS", b5."SAKTO", b5."MATNR", b5."KDAUF", b5."KDPOS",
b5."KOSTL", b5."PRCTR", b5."DMBTR", b5."WAERS", b5."MENGE", b5."MEINS", b5."ERFMG", b5."ERFME", b5."SHKZG",
b1."VBELN" as "VBELN_VBRK", b1."FKDAT", b1."FKART", b1."VBTYP"
FROM SAPSR3."VBRK" AS b1
INNER JOIN SAPSR3."VBRP" AS b2 ON b2."VBELN" = b1."VBELN"
INNER JOIN SAPSR3."VBUP" AS b3 ON b3."VBELN" = b2."VGBEL" AND b3."POSNR" = b2."VGPOS"
INNER JOIN SAPSR3."VBFA" AS b4 ON b4."VBELV" = b2."VGBEL" AND b4."POSNV" = b2."VGPOS"
INNER JOIN SAPSR3."MSEG" AS b5 ON b5."MBLNR" = b4."VBELN" AND b5."MJAHR" = b4."MJAHR"
AND b5."LINE_ID"= b4."POSNN"
INNER JOIN SAPSR3."MKPF" AS b6 ON b6."MBLNR" = b5."MBLNR" AND b6."MJAHR" = b5."MJAHR"
WHERE b1."VBTYP" != 'U'
AND b3."FKSTA" != 'A' AND b3."FKSTA" != 'B' AND b3."FKIVP" != 'A' AND b3."FKIVP" != 'B'
AND ( b4."VBTYP_V" = 'J' OR b4."VBTYP_V" = 'T' )
AND ( b4."VBTYP_N" = 'R' OR b4."VBTYP_N" = 'h' )
AND b5."BUKRS" = b1."BUKRS";
Next I take the union of the two. Like that I have some records with KDAUF == initial. So for these records I then want to read VBFA to fetch VBELV and POSNV. And if that result is still empty, something similar on LIPS.
Do you see where I'm getting?
Currently I'm trying to create a projection on the union of view1 and view2 with a filter on KDAUF = init, and then do a left outer join on VBFA.
But I'm afraid that might be too expensive, so if there is a better solution...