Computationally wise, COALESCE would be faster I think, but sometimes harder to read for non-technical users. COALESCE returns the first not-null statement, drastically reducing your code to:
COALESCE(PU_SUM(VBAK, VBAP.KWMENG), 0)
I.e.: if your sum is NULL, it will go to the second argument, being '0'.
Guess it depends on what you're trying to accomplish. Just looking at your formula, I don't think you need to do a pull-up but just a SUM(VBAP.KWMENG) in the event the table/chart/etc. is looking at Sales Orders.
If you do need a Pullup, you could do PU_SUM("VBAK","VBAP"."KWMENG", VBAP.KWMENG IS NOT NULL) to see all non-nulls or do PU_COUNT("VBAK","VBAP"."KWMENG", VBAP.KWMENG IS NULL) should work.
If you're just trying to see records where VBAP.KWMENG doesn't exist,
COUNT(CASE WHEN VBAP.KWMENG is NULL THEN 1.0 ELSE 0.0 END)
Computationally wise, COALESCE would be faster I think, but sometimes harder to read for non-technical users. COALESCE returns the first not-null statement, drastically reducing your code to:
COALESCE(PU_SUM(VBAK, VBAP.KWMENG), 0)
I.e.: if your sum is NULL, it will go to the second argument, being '0'.