ABAP: INSER用法

应用场景:表1和表2有一个共同的主键id号,值长度为3,由于业务变更,表1中id号字段长度调整为5。然而表2没有调整,导致表1中新正增加的数据,在表2中id长度被截为3,这样两个表是无法再关联,查数据。因此应该把表2中这部数据更新或重新插入。

这里例举了如何根据表2截取的数据从表1中把完整数据更新到表2中。前提:被截为10的id也是唯一的。

DATA: gt_tab1 TYPE TABLE OF ztable1,
      gt_tab2 TYPE TABLE OF ztable1,
      gs_tab1 TYPE ztable1.
DATA:   l_id  LIKE ztable1-id.
DATA:   lid(50).
DATA:   lv_len TYPE i.

SELECT * FROM ztable1
INTO CORRESPONDING  FIELDS OF TABLE gt_tab1
WHERE datum >= '20220823'
AND datum <= '20220823'.

LOOP AT gt_tab1 INTO gs_tab1.


  lv_len = strlen( gs_tab1-id ).
  IF lv_len = '3'.

  lid = gs_tab1-id && '%'.  "拼接字符串
  SELECT SINGLE id
  INTO  l_id
  FROM ztable WHERE id LIKE lid.  "LIKE 模糊查询

  gs_tab1-id = l_id.
  APPEND  gs_tab1 TO gt_tab2. "添加一个新table里面
 ENDIF.
ENDLOOP.
INSERT   ztable1 FROM TABLE gt_tab2.   "插入到ztable1
CLEAR gs_tab1.

表1

表2 错误的表

 表2 正确的表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值