SAP ABAP写入数据库操作及数据一致注意要点

插入

1.insert ***(数据库表) from table t_tab(内表) ACCEPTING DUPLICATE KEYS.(自动跳过已存在相同KEY值行)

更新

1.update ***(数据库表)set field(数据库表字段) = ** where field2(数据库表字段) = *

修改

1.modify ***(数据库表) from WA(结构) [有相同KEY值就修改,没有就更新]
2.modify *(数据库表) from table t_tab.

删除

1delete from ***(数据库表)where field = **.
2.delete *(数据库表) from table t_tab.

数据库保持一致性

1.锁对象
多人操作同一张数据库表时,就要用锁,SAP里分S ,E,X,三个级别的锁对象。
a.se11 创建锁对象,注意锁对象名称E开头,再加上的表名
b.创建时勾选RFC复选框,可远程调用该锁对象
c.锁模式下拉框,可选可不选。就算是选择了也只是当你调用锁函数时默认了该锁的模式,还是可以根据入参改变
d.如何查找你创建的锁函数?SE37>*&你创建的锁名称>点击放大镜
会有两个函数,一个是锁定,一个是解锁
在这里插入图片描述
e.SAP还提供了通用锁函数ENQUEUE_E_TABLE

2.操作数据库语句时写入子例程里 带上on commit
(例如:)

perform set_db on commit.
"注意此时Perform 不能传任何参数,这是用此语法的缺点
perform set_db.
update ztab set txt = lv_txt where matnr = lv_matnr 
endprtform
commit work.
"当执行到commit时,程序会自动把上面所有操作语句
"真正的更新到数据库

3.上述也说了on commit的缺点,SAP也提供了相应的解决方法。不过要麻烦点。
a.创建相关执行数据库操作的函数
b.调用函数时带上语句:in update task
c.commit
(例如)

perform set_db using wa.
perform set_db using l_wa.
 call function 'ZUPDATE' in update task
 	exporting
 	  wa = l_wa
endprtform

commit work.
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值