[英]OpenSQL with comparison between columns
我可以在OpenSQL中比較表的列嗎?
當前代碼如下:
SELECT SINGLE menge wemng ebeln ebelp
INTO (eket-menge,
eket-wemng,
eket-ebeln,
eket-ebelp)
FROM eket
WHERE ebeln = ekpo-ebeln
AND ebelp = ekpo-ebelp.
IF eket-menge NE eket-wemng.
我想避免撤回menge = wemng
,但這行不通:
SELECT menge wemng ebeln ebelp
INTO (eket-menge,
eket-wemng,
eket-ebeln,
eket-ebelp)
FROM eket
WHERE ebeln = ekpo-ebeln
AND ebelp = ekpo-ebelp
AND menge <> wemng.
ABAP認為wemng
應該是一個變量。
我該怎么做?
在WHERE條件下比較兩列時,應使用列選擇器(〜)。 這是設計使然。
ABAPDOCU說:
列選擇器
字〜。 數據庫表(dbtab)的列(col)可以通過dbtab〜col在SELECT語句中進行尋址。 如果在多個不同的數據庫表中出現了列名,或者在 WHERE條件下 進行比較時將兩列相互比較,則在訪問多個數據庫表時,必須使用這種類型的尋址。
因此,在您的情況下:
SELECT menge wemng ebeln ebelp
INTO (eket-menge,
eket-wemng,
eket-ebeln,
eket-ebelp)
FROM eket
WHERE ebeln = ekpo-ebeln
AND ebelp = ekpo-ebelp
AND menge <> eket~wemng.
...
請檢查以下查詢:
SELECT menge wemng ebeln ebelp
INTO (eket-menge,
eket-wemng,
eket-ebeln,
eket-ebelp)
FROM eket
WHERE ebeln = ekpo-ebeln
AND ebelp = ekpo-ebelp
AND menge <> eket~wemng.
但是這時您得到錯誤:
錯誤的嵌套:在語句“ ENDIF”之前,“ SELECT”引入的控制結構必須以“ ENDSELECT”結束。
因此,您應該創建一些內部表來處理此問題
SELECT menge wemng ebeln ebelp
INTO TABLE lt_eket
FROM eket
WHERE ebeln = ekpo-ebeln
AND ebelp = ekpo-ebelp
AND menge <> eket~wemng.
或使用SELECT SINGLE
SELECT SINGLE menge wemng ebeln ebelp
INTO (eket-menge,
eket-wemng,
eket-ebeln,
eket-ebelp)
FROM eket
WHERE ebeln = ekpo-ebeln
AND ebelp = ekpo-ebelp
AND menge <> eket~wemng.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.