ABAP数据库操作04 |
您所在的位置:网站首页 › 如何修改数据库表的数据类型 › ABAP数据库操作04 |
ABAP数据库操作04-数据更改
ABAP数据表更改的关键字:update 或 modify 说明: 1、update/modify都可以更新单行、多行记录 2、update/modify区别,update:只能更新已存在的数据,modify:有已存在数据则更新,不存在则插入 3、使用工作区更新数据时,一般都是先查询数据到该工作区中,然后更改工作区字段value,最后把工作区会写到数据表中 4、更改成功时,sy-subrc=0 5、使用工作区更新时,定义table时请注意是否使用WITH HEADER LINE,详情请查阅下面的:6、工作区更新误区 在SE11创建一个表zlion_test,字段:学号、姓名、性别、年龄,并在SE16N中添加4条记录 工作区字段不赋值则都更新该字段类型的默认value,一般的做法是先从数据表查询到工作区中,工作区更新后再回写到数据表 4、modify单行 REPORT zcsdn_lion_db03. DATA i_wa TYPE zlion_test. i_wa-xh = 1. i_wa-name = '张三'. i_wa-sex = '男'. i_wa-age = 44. MODIFY zlion_test FROM i_wa.案例 REPORT zcsdn_lion_db03. DATA i_wa TYPE zlion_test. DATA i_tab TYPE STANDARD TABLE OF zlion_test WITH HEADER LINE. i_wa-xh = 1. i_wa-name = 'TT'. i_wa-sex = '男'. i_wa-age = 55. APPEND i_wa TO i_tab. *CLEAR i_wa. i_wa-xh = 2. *i_wa-name = 'YY'. i_wa-sex = '女'. i_wa-age = 66. APPEND i_wa TO i_tab. *CLEAR i_wa. i_wa-xh = 5. i_wa-name = 'ZZ'. *i_wa-sex = '女'."上面的i_wa没有clear,此处不赋值时value=上面的:i_wa-sex = '女'. *i_wa-age = 66.上面的i_wa没有clear,此处不赋值时value=上面的:i_wa-age = 66. APPEND i_wa TO i_tab. *CLEAR i_wa. MODIFY zlion_test FROM i_tab.以上程序,检查代码无错误,但数据始终无法更新到位 执行前的的数据是 序号姓名性别年龄3方三花女184王四狗男55执行后数据 序号姓名性别年龄003方三花女184王四狗男55原因如下: 当定义内表=带表头行的内表时(即有WITH HEADER LINE),则最后一行:MODIFY zlion_test FROM i_tab. 的i_tab指的是工作区i_tab而不是内表i_tab 而APPEND i_wa TO i_tab. 是指把工作区i_wa的数据放到内表i_tab中,所以此时i_tab工作区是空的 解决方案有: 第一种: 前面都不变,最后面一句:MODIFY zlion_test FROM i_tab.改为(加TABLE) MODIFY zlion_test FROM TABLE i_tab. ————modify指明更新源是内表i_tab 第二种 1、定义内表i_tab时=不要带表头行的内表(即不要WITH HEADER LINE:定义一个内表 但是没有同名的工作区) 2、此时这一行代码会报错:MODIFY zlion_test FROM i_tab.改为(加TABLE) MODIFY zlion_test FROM TABLE i_tab.即可 ———— 这样APPEND i_wa TO i_tab.只能是工作区i_wa的数据放到工作区i_tab中,后面的modify工作区就有同步数据了 针对上面的问题,有部分公司强制要求定义内表都不要带表投行(即不要WITH HEADER LINE) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |