2020-09-06 23:30发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
所以,我们有这样的代码:
DATA my_data类型哈希表,具有唯一的键关键字段。 ... 从ztable中删除。 " #EC CI_NOWHERE 从表my_data中插入ztable。
在插入时,我们正在获取转储SAPSQL_ARRAY_INSERT_DUPREC。
数据库是Oracle。 ztable 在删除之前包含约200条记录, my_data 具有相似的大小。
转储的原因是表已缓冲,并且未在应用程序服务器之间同步。
感谢您的想法。
我认为 您需要在删除后进行一次提交工作,因为否则,该命令仍位于报表和数据库之间。
如果您按照调试代码进行操作,则在删除后1-2秒停止,您仍然可以 错误?
之间缺少提交
我开始认为这是一个计时问题。 但是我们应该能够堆叠SQL-否则回滚机制将毫无意义-我们将无法做到这一点:
从ztable删除。 " #EC CI_NOWHERE 如果sy-subrc是INITIAL。 从表my_data接受重复行中插入ztable。 如果sy-subrc是INITIAL。 提交工作。 其他。 回滚工作。 万一。 其他。 回滚工作。 ENDIF。
也许我应该将数据库更新放入更新FM中。
内部表的类型可能是具有唯一键的hash类型,但如果 数据库表键不是等效的。
如果您确实想始终防止任何异常,则可能需要读取old_records_itab中的当前数据并将其与新记录进行匹配,以标识要创建的记录, 更新,删除或忽略,然后执行这3条语句。 许多更新FM都希望将内部表用作参数。
同时,您是否在每个abap sql语句之后检查sy-subrc和sy-dbcnt的值?
为什么在同一个数据库会话中需要提交? 如果为true,则以下代码将无用:
从ztable中删除。 " #EC CI_NOWHERE 如果sy-subrc是INITIAL。 从表my_data接受重复行中插入ztable。 如果sy-subrc是INITIAL。 提交工作。 其他。 回滚工作。 万一。 其他。 回滚工作。 ENDIF。
如果插入失败,我们将得到一个空表,这不是我们想要的。
最多设置5个标签!
转储的原因是表已缓冲,并且未在应用程序服务器之间同步。
感谢您的想法。
我认为 您需要在删除后进行一次提交工作,因为否则,该命令仍位于报表和数据库之间。
如果您按照调试代码进行操作,则在删除后1-2秒停止,您仍然可以 错误?
之间缺少提交
我开始认为这是一个计时问题。 但是我们应该能够堆叠SQL-否则回滚机制将毫无意义-我们将无法做到这一点:
也许我应该将数据库更新放入更新FM中。
内部表的类型可能是具有唯一键的hash类型,但如果 数据库表键不是等效的。
如果您确实想始终防止任何异常,则可能需要读取old_records_itab中的当前数据并将其与新记录进行匹配,以标识要创建的记录, 更新,删除或忽略,然后执行这3条语句。 许多更新FM都希望将内部表用作参数。
同时,您是否在每个abap sql语句之后检查sy-subrc和sy-dbcnt的值?
为什么在同一个数据库会话中需要提交? 如果为true,则以下代码将无用:
如果插入失败,我们将得到一个空表,这不是我们想要的。
一周热门 更多>