逗号前面没有冒号(SELECT 之后)?

问题描述 投票:0回答:1

我有以下 SELECT 循环:

SELECT pernr 
  INTO lv_pernr 
  FROM pa0000 
 WHERE NOT ( begda GT lv_qryper_endda OR endda LT lv_qryper_begda ) 
   AND massn <> '10'.

效果很好。添加一列

begda
:

SELECT pernr, begda 
  INTO ( lv_pernr, lv_begda ) 
  FROM pa0000 
 WHERE NOT ( begda GT lv_qryper_endda OR endda LT lv_qryper_begda ) 
   AND massn <> '10'.

出现以下错误:

Komma ohne vorausgegangenen Doppelpunkt (nach SELECT ?) [逗号,前面没有冒号(SELECT 之后)]。

我做错了什么?

我从在线资源 [https://help.sap.com] 获取了如何解决问题的信息。 我希望将 SELECT 语句中的列放入列出的变量中。

abap opensql
1个回答
2
投票

您正在混合新旧(自版本 7.40 以来)SELECT 语法的功能。

旧语法在 SELECT 列表中的字段之间没有逗号,而新语法要求每个变量前面有

@

仍然允许使用旧语法,但是一旦您使用新语法的一项功能,解析器就会切换到新语法,并希望您在 SELECT 中执行其他所有操作也与其兼容。

旧语法中的 SELECT:

SELECT pernr begda 
  INTO  ( lv_pernr, lv_begda ) 
  FROM pa0000 
  WHERE NOT ( begda GT lv_qryper_endda OR endda LT lv_qryper_begda ) 
    AND massn <> '10'.

新语法中的 SELECT:

SELECT pernr, begda 
  INTO  ( @lv_pernr, @lv_begda ) 
  FROM pa0000 
  WHERE NOT ( begda GT @lv_qryper_endda OR endda LT @lv_qryper_begda ) 
    AND massn <> '10'.

顺便说一句,当我尝试在我们的系统中重现您的问题时,我收到了不同的错误消息。您使用的系统是否有可能版本状态远远落后?因为只有系统根本不理解新的 SQL 语法时,您发布的错误消息才有意义。这实际上不再是新的了。 (2013年发布7.40)。

© www.soinside.com 2019 - 2024. All rights reserved.