导读:在执行open sql的过程中,会有返回值,abap会将执行的返回值存储于sy-subrc这一系统变量中,不同的返回值代表不同的执行结果。下面对结果进行分析。
使用SELECT查询语句
sy-subrc值 | 执行结果 |
0 | 至少有一行数据,当ENDSELECT语句执行完,SY-DBCNT中保存着记录的个数。 |
4 | 没有数据。 |
8 | 只有使用“SELECT SINGLE FOR UPDATE”时才会有,表示: WHERE条件指定的记录不止一行,结果是没有记录被选中。 |
使用INSERT插入语句
sy-subrc值 | 执行结果 |
0 | 插入成功,SY-DBCNT包含了插入的行数,0或1。 |
4 | 由于有相同的KEY存在,所以插入失败。 |
使用UPDATE更新语句
sy-subrc值 | 执行结果 |
0 | 找到记录并更新 |
4 | 没有找到符合条件的记录,也没有更新。 |
使用DELETE删除语句
sy-subrc值 | 执行结果 |
0 | 找到一行并删除之,如果该表有不唯一主键,也就是有多条重复的记录,则只删除第一条记录。 |
4 | 没有找到符合条件的记录,也没有删除。 |
使用LOOP循环语句
sy-subrc值 | 执行结果 |
0 | 循环至少被执行一次。 |
4 | 循环没有被执行,可能是没有数据,也可能是没有符合条件(where)的记录。 |
注:借助这些返回值可以判断OPEN SQL 的事务是否允许被提交(commit work/rollback work)
说明:查询了网上很多资料,得到的结果是ABAP没有开启事务这一说,从程序开始执行,ABAP 的事务就自动开始了,除非手动commit work或者rollback work,否则事务会一直开启到程序执行完毕或者一个屏幕执行完毕后才自动提交。