[英]SELECT query with one or multiple IF statements in ABAP
我正在開發一個網絡服務。 我有一個這樣的 select 語句(它有更多的字段和 2 個以上的連接,但為了簡單起見):
SELECT acdoca~augbl,
open_amount, "I need to add value to this field based on the IF statement below
acdoca~koart
FROM acdoca
LEFT JOIN bseg ON acdoca~belnr EQ bseg~belnr
AND acdoca~gjahr EQ bseg~gjahr
AND acdoca~buzei EQ bseg~buzei
AND acdoca~rbukrs EQ bseg~bukrs
INTO table @it_acdoca.
我需要添加這個 IF 語句:
IF bseg-KOART = 'D' or bseg-KOART = 'K'
IF acdoca-AUGBL is INITIAL THEN open_amount = DMBTR
ELSE open_amount = 0
ENDIF.
ELSE open_amount = 0
ENDIF.
我需要一個不會破壞服務性能的答案。 由於 ACDOCA 和 BSEG 是 SAP 中一些最大的數據庫表。 我嘗試在 SELECT 之后使用 LOOP,然后在該 LOOP 中添加這個 IF 但這完全破壞了性能。
希望得到快速答復。 此致。
DATA: BEGIN OF it_acdoca OCCURS 0,
augbl TYPE acdoca-augbl,
open_amount TYPE bseg-dmbtr,
koart TYPE acdoca-koart.
DATA: END OF it_acdoca.
SELECT acdoca~augbl,
CASE WHEN bseg~koart NE 'D' AND bseg~koart NE 'K' THEN 0
WHEN acdoca~augbl IS INITIAL THEN dmbtr
ELSE 0
END AS open_amount,
acdoca~koart
FROM acdoca
LEFT JOIN bseg ON acdoca~belnr EQ bseg~belnr
AND acdoca~gjahr EQ bseg~gjahr
AND acdoca~buzei EQ bseg~buzei
AND acdoca~rbukrs EQ bseg~bukrs
INTO TABLE @it_acdoca.
如果您的版本不支持CASE,您可以為語句和合並響應准備不同的查詢。 您也可以並行運行這些查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.