Abap 带有列间比较的OpenSQL
我可以在OpenSQL中比较表的列吗 当前代码如下所示:Abap 带有列间比较的OpenSQL,abap,opensql,Abap,Opensql,我可以在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
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.
选择menge wemng ebeln ebelp
进入(eket menge,
埃克特·韦姆格,
埃克特·埃本,
eket ebelp)
来自eket
其中ebeln=ekpo-ebeln
和ebelp=ekpo-ebelp
还有蒙格·韦蒙。
ABAP认为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.
选择menge wemng ebeln ebelp
进入(eket menge,
埃克特·韦姆格,
埃克特·埃本,
eket ebelp)
来自eket
其中ebeln=ekpo-ebeln
和ebelp=ekpo-ebelp
还有蒙格·埃克特~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.
选择menge wemng ebeln ebelp
放进桌子里
来自eket
其中ebeln=ekpo-ebeln
和ebelp=ekpo-ebelp
还有蒙格·埃克特~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.
选择单个menge wemng ebeln ebelp
进入(eket menge,
埃克特·韦姆格,
埃克特·埃本,
eket ebelp)
来自eket
其中ebeln=ekpo-ebeln
和ebelp=ekpo-ebelp
还有蒙格·埃克特~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.
选择menge wemng ebeln ebelp
进入(eket menge,
埃克特·韦姆格,
埃克特·埃本,
eket ebelp)
来自eket
其中ebeln=ekpo-ebeln
和ebelp=ekpo-ebelp
还有蒙格·埃克特~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.
选择menge wemng ebeln ebelp
放进桌子里
来自eket
其中ebeln=ekpo-ebeln
和ebelp=ekpo-ebelp
还有蒙格·埃克特~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.
选择单个menge wemng ebeln ebelp
进入(eket menge,
埃克特·韦姆格,
埃克特·埃本,
eket ebelp)
来自eket
其中ebeln=ekpo-ebeln
和ebelp=ekpo-ebelp
还有蒙格·埃克特~wemng。
在WHERE条件下比较两列时,应使用列选择器(~)。这是故意的
阿巴普多库说:
列选择器
字符~。数据库表(dbtab)的列(col)可以是
通过dbtab~col在SELECT语句中寻址。这种类型的
在以下情况下访问多个数据库表时需要寻址:
列的名称出现在许多不同的数据库表中
或如果在
其中条件
因此,在你的情况下:
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.
...
选择menge wemng ebeln ebelp
进入(eket menge,
埃克特·韦姆格,
埃克特·埃本,
eket ebelp)
来自eket
其中ebeln=ekpo-ebeln
和ebelp=ekpo-ebelp
还有蒙格·埃克特~wemng。
...
在WHERE条件下比较两列时,应使用列选择器(~)。这是故意的
阿巴普多库说:
列选择器
字符~。数据库表(dbtab)的列(col)可以是
通过dbtab~col在SELECT语句中寻址。这种类型的
在以下情况下访问多个数据库表时需要寻址:
列的名称出现在许多不同的数据库表中
或如果在
其中条件
因此,在你的情况下:
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.
...
选择menge wemng ebeln ebelp
进入(eket menge,
埃克特·韦姆格,
埃克特·埃本,
eket ebelp)
来自eket
其中ebeln=ekpo-ebeln
和ebelp=ekpo-ebelp
还有蒙格·埃克特~wemng。
...
实际上,如果您放置一个ENDSELECT,您的第一个示例也会起作用。是的,没错,但SELECT ENDSELECT已经过时,SAP建议不要使用这种方式。我知道,我在那里工作。但是,如果内存有限,它仍然是最佳选择。此外,发生错误的原因只是您忘记使用ENDSELECT关闭,而不是因为它已过时。实际上,如果您使用ENDSELECT,您的第一个示例也可以使用。是的,没错,但SELECT ENDSELECT已经过时,SAP建议不要使用这种方式。我知道,我在那里工作。但是,如果内存有限,它仍然是最佳选择。此外,发生此错误的唯一原因是您忘记使用ENDSELECT关闭,而不是因为它已过时。请注意,现代替代方法是使用,其目标之一是解决此类命名问题,即变量需要以@作为前缀,所有其他名称都是列或表:SELECT menge FROM eket,其中ebeln=@ekpo-ebeln和menge wemng进入@eket-menge
注意,现代的替代方法是使用,其目标之一是解决此类命名问题,即变量需要前缀@,所有其他名称都是列或表:从eket中选择menge,其中ebeln=@ekpo-ebeln和menge-wemng进入@eket-menge