CTE:
ABAP has provided a fantastic way to increase the performance of applications through CTE.
This seems be very familiar to AMDP procedures. I am calling it the AMDP flavor with OpenSQL.
Below snippet is an example of how you can avoid multiple select queries and combine them into one. This way we can use subqueries and internal tables to bring out the most from OpenSQL.
The ultimately the goal is to hit the database as less as possible and bring data as much as possible.
WITH +kun AS (
SELECT DISTINCT bseg~belnr , kna1~kunnr, kna1~name1 FROM kna1
JOIN bseg ON bseg~kunnr = kna1~kunnr AND bseg~koart = 'D'
JOIN bkpf ON bkpf~belnr = bseg~belnr AND bkpf~gjahr = bseg~gjahr
WHERE bkpf~belnr IN @s_belnr AND
bkpf~bukrs = @p_bukrs AND bkpf~gjahr = @p_gjahr
)
SELECT bkpf~belnr,
bkpf~bldat,
+kun~name1,
SUM( bseg~wrbtr ) AS wrbtr,
bkpf~waers,
CAST( ' ' AS CHAR( 255 ) ) AS in_word,
bseg~sgtxt,
bkpf~xblnr as bktxt, "bkpf~bktxt,
bseg~zuonr
FROM bkpf JOIN bseg
ON bkpf~bukrs = bseg~bukrs AND bkpf~belnr = bseg~belnr AND bkpf~gjahr = bseg~gjahr
AND bseg~hkont BETWEEN '0025000000' AND '0025999999'
LEFT JOIN +kun
ON bseg~belnr = +kun~belnr "and kna1~kunnr <> ' '
WHERE bkpf~bukrs = @p_bukrs AND bkpf~belnr IN @s_belnr AND bkpf~gjahr = @p_gjahr
GROUP BY bkpf~belnr, bkpf~bldat, bkpf~waers, +kun~name1, bseg~sgtxt, bkpf~xblnr, bseg~zuonr
INTO TABLE @DATA(it_final) .
No comments:
Post a Comment