具有非严格SQL动态形式的运行时错误,但非具有静态形式的运行时错误

2020-09-16 15:55发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 在我的AB...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

在我的ABAP 7.52 SP 0系统中,使用动态非严格SQL的以下代码出现运行时错误:

数据lines_of_stxh stxh的类型表。
   TYPE字符串中的DATA。
   DATA其中TYPE字符串。

   来自='STXH AS CGT'。
   其中=`EXISTS(SELECT * FROM CVI_CUST_LINK AS O WHERE CGT〜TDNAME = O〜CUSTOMER`
       &&`和CGT〜TDOBJECT ='KNA1'并且存在(SELECT * FROM BUT000 AS H HHERE`
       &&`O〜PARTNER_GUID = H〜PARTNER_GUID AND H〜PARTNER ='0000100549'))。

   选择*从(从)
     插入表格lines_of_stxh
     哪里(哪里)。

简短的转储是一个SAPSQL_PARSE_ERROR(未捕获的CX_SY_DYNAMIC_OSQL_SEMANTICS),带有错误分析"如果使用新的Open SQL语法,则必须始终使用它。这包括使用@来转义主机变量。"

简短的转储是正确的,当我以这种方式编写SELECT时它可以工作-但这不是我的问题:

 SELECT * FROM(来自)
     插入表@lines_of_stxh
     哪里(哪里)。

我的问题是关于相同的非严格SQL,但形式为STATIC,可以编译并正常工作:

数据lines_of_stxh stxh的类型表。

  选择*从stxh AS cgt
  插入表格lines_of_stxh
  在哪里存在(SELECT * FROM cvi_cust_link AS o在哪里cgt〜tdname = o〜customer
  AND cgt〜tdobject ='KNA1'AND EXISTS(SELECT * FROM but000 AS h WHERE在哪里
  o〜partner_guid = h〜partner_guid AND h〜partner ='0000100549'))。
 

因此,静态表单有效,动态表单失败(在非严格模式下)。

您是否认为这是ABAP错误,还是在ABAP官方文档中说明了限制?

我已经搜索了论坛和SAP注释,但是什么也找不到。

(请不要告诉我代码很丑或很复杂,我知道,谢谢:))

编辑:对不起,我在原始标题中犯了一个错误,问题出在非严格模式下(我的问题不是关于使用严格模式)。

谢谢!

桑德拉