点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我正在尝试执行以下过滤查询:
带保持键c1的打开光标 供选择(COL_STR) 来自(JOIN_STR) 多达行数 地点(WHERESTR) GROUP BY(GROUPSTR) 拥有(HAVESTR) ORDER BY(ORDERSTR)。 做。 将下一个游标c1捕获到表包大小PKGSIZE中。 如果sy-subrc <> 0。 关闭光标c1。 出口。 其他。 使用PROCESS_STATUS执行PROCESS_DATA。 如果PROCESS_STATUS NE为0。 返回。 万一。 万一。 ENDDO。
在" WHERESTR"中,我的zint8 ='9223372036854775808'。
并且字段zint8是INT8类型,在这里我知道INT8可以具有最大值,如922337203685477575807。在这种情况下,我想抛出一些边界值异常。 但是在这种情况下,我的程序没有抛出任何异常或任何值,而是直接终止。 在这里,我知道它应该引发BCD_OVERFLOW异常,但是与其引发任何异常或任何值,不如直接终止它。
尝试通过在变量和逗号分隔列表前面使用@来强制执行新的SQL解析器。 新的解析器将检查更严格,您可能会得到异常。
感谢伙计,
但是我的问题是游标,它没有在任何sap系统中抛出任何异常,只是 使系统崩溃并终止程序,因此调用程序将无限期等待某些响应。
我正在从Java程序中调用某个功能模块,而该功能模块正在调用该程序,该程序通过http send将数据发送到Java程序,但是如果由于上述问题而导致该程序崩溃,那么在这种情况下,我的Java程序将
BCD_OVERFLOW不是SQL,而是ABAP异常,如果将太大的值分配给type p字段,则会发生这种情况。 可以在此处找到相应的异常类: https://help.sap.com/http.svc/rc/abapdocu_752_index_htm/7.52/zh-CN/index.htm?file=abenueb-abfb-sysexc.htm 。 如果将其包装在旧的Open SQL中,则无法对其进行处理。
因此,您的问题出在FETCH语句的INTO子句的ABAP一侧。 提供正确的目标工作区域,一切都很好。
我很清楚您的问题是什么,并且没有试图回答。 我只是指出它有缺陷,并要求您确保在发布代码时将其放入代码块中。
允许的其中的哪个 -异常(例如,在CX_SY_DYNAMIC_OSQL_SYNTAX或CX_SY_DYNAMIC_OSQL_SEMANTICS中)?
为什么不在构建WHERESTR变量的位置测试边界, 而不是尝试在SELECT时处理错误,因为无论如何似乎都无法处理该错误?
更新:抱歉,似乎有时可以捕获,取决于所使用的旧的或严格的Open SQL以及所使用的数据库的类型。
"并且在光标中,我们不能使用" INTO @any_variable"。 错误,请参见
下的示例https: //help.sap.com/http.svc/rc/abapdocu_752_index_htm/7.52/zh-CN/index.htm?file=abapfetch.htm
一周热门 更多>