Quantcast
Channel: SCN: Message List - SAP HANA Developer Center
Viewing all articles
Browse latest Browse all 9165

Re: conditional select in calculation view

$
0
0

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...


Viewing all articles
Browse latest Browse all 9165

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>