点击此处---> 群内免费提供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注释,但是什么也找不到。
(请不要告诉我代码很丑或很复杂,我知道,谢谢:))
编辑:对不起,我在原始标题中犯了一个错误,问题出在非严格模式下(我的问题不是关于使用严格模式)。
谢谢!
桑德拉
找到它(要求Open SQL的高手)。 动态WHERE中的子查询已在7.40 SP08中引入。
https://help.sap .com/http.svc/rc/abapdocu_752_index_htm/7.52/zh-CN/index.htm?file = abenopensql_strict_mode_740_sp08.htm
因此,您实际上使用了一些新内容,并且在动态情况下会触发严格模式。
哦,这很有意义。 我没有意识到那些"新"功能(已经以静态形式存在,并已迁移到动态形式)是否需要切换到严格模式。
非常感谢ABAP和Open SQL的大师! :)
据我所知,在您的静态SQ中,您根本不执行语法检查的严格模式。 放e。 G。 其他子句后面的INTO子句会爆炸!
请参见 https ://help.sap.com/http.svc/rc/abapdocu_752_index_htm/7.52/zh-CN/index.htm?file = abenopensql_strict_modes.htm
好的,我知道了。
无法解释区别。
会询问Open SQL PO
一周热门 更多>