我可以比较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应该是一个变量。
我该怎么做呢?
发布于 2018-09-10 09:01:00
在比较WHERE条件下的两列时,应使用列选择器(~)。这是故意的。
ABAPDOCU说:
列选择器 性格~。数据库表(dbtab)的列(col)可以在SELECT语句中通过dbtab~col进行寻址。当访问多个数据库表时,这种类型的寻址是必要的,如果一个列的名称出现在多个不同的数据库表中,或者如果两个列在条件中的比较中被比较,则必须进行。
所以,在你的例子中:
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.
...发布于 2018-09-09 09:22:25
请查看以下查询:
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 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.https://stackoverflow.com/questions/52239427
复制相似问题