应用场景:表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 正确的表