ABAP 之 commit 提交的使用解析
序
HELLO,这里是百里,一个学习中的ABAPER,在工作学习中,我们会经常提交某些数据,或者说在同一个数据逻辑处理中.我们需要先计算前面的逻辑在处理后面的逻辑数据,这种相关的业务逻辑数据.此时就需要使用数据提交相关的内容.今天所讲的内容就是解决这方面需求的内容 .
为什么数据的提交
其实我们在ALV或者程序写完的时候,都会进行数据提交的动作,我们系统中的概念叫做隐式提交. 在SAP的系统中分钟两种提交的方式,分别是显示提交和隐式提交.commit 的作用就是到当前位置的代码,进行一次数据提交. 我经过debug 测试过,这个应该是同步进行的. 也就是按照代码写的顺序依次执行. commit work 语句是显式更新, 系统本身执行的形式叫做隐式执行.我们不需要增加什么相关的代码,只需要等程序执行完毕后即可,因为系统会自动提交.
技术解析
其实这个并没有什么所谓的技术点,他只有一句话,就是,执行插入、修改数据时,修改完之后要加上commit进行提交.
COMMIT WORK AND WAIT
ROLLBACK WORK
“同步更新
COMMIT WORK AND WAIT. "SAP LUW 显式提交
"该语句结束SAP LUW 并触发更新工作过程,该过程在同一个数据库 LUW 中进行更新操作,因为数据库 LUW 此时可以替代SAP开始进行一致性控制。
IF SY-SUBRC = 4.
ROLLBACK WORK. "取消对数 据库表所作 的更改
ELSE.
ENDIF.
为什么要commit呢,百里其实自己做了个实验,就是当数据量很少的时候就是你提交不提交也就那样了 效果是一样的, 但是! 当数据量很大的时候,sap是跟异步一样, 后续所需的数据,就会获取不到,此时就需要使用commit work and wait 进行数据处理,变成同步.这样方便后序数据操作 .
也通过询问一些大佬了解到,其实这些数据操作是在内存中的,叫做一个session ,如果他会在内存中计算.
实例解析
数据准备
""数据准备
" 数据准备
TYPES : BEGIN OF ty_DAta ,
DOCCODE TYPE char20 ,
ZROWID TYPE char20 ,
MATCODE TYPE char20 ,
MATNAME TYPE char20 ,
UOM TYPE char20 ,
MEMO TYPE char20 ,
END OF ty_DAta .
data : gs_Data TYPE ty_DAta .
data : gt_DAta TYPE TABLE of ty_DAta .
INITIALIZATION .
AT SELECTION-SCREEN .
at SELECTION-SCREEN OUTPUT .
START-OF-SELECTION .
编写子例程
*&---------------------------------------------------------------------*
FORM get_Data .
gs_Data-DOCCODE = 'XXXC23456' .
gs_Data-ZROWID = '53DSAXA' .
gs_Data-MATCODe = 'ZXA' .
gs_Data-MATNAME = 'FSD' .
gs_Data-UOM = 'N' .
gs_Data-MEMO = '备注1 备注1 备注1' .
APPEND gs_Data TO gt_DAta .
INSERT ZWDEMOTABLE1 from TABLE gT_Data .
select * from ZWDEMOTABLE1 INTO TABLE @DATA(gt_DAtaMES) where DOCCODE = 'XXXC23456'.
data(gt_DAta1) = gt_DAtaMES.
ENDFORM.
技术总结
今天讲的是abap数据库操作常用的commit ,一般所使用的的应用场景是操作自建表,因为标准表中都有bapi存在,而且禁止在标准表进行增删改查的操作.我们其实做的就就当数据量非常大时,将系统改成同步,方便数据操作.
百里鸡汤
休对故人思故国,且将新火试新茶。诗酒趁年华。
这里是百里,一个努力的学习者. 努力学习好好记录,点滴进步,就是成功.
相关文章
- 使用dom4j解析xml工具类[通俗易懂]
- LARGE_INTEGER解析和使用
- 常用元器件使用方法3:电平转换芯片74LVC1T45的使用方法[通俗易懂]
- day10 | Git的正确使用姿势与最佳实践 | 第三届字节跳动青训营笔记
- 使用JSON解析JSONArray数组数据时遇到的几个坑详解编程语言
- dp 导入使用Oracle远程Impdp导入数据库(oracle远程imp)
- 变量精通Linux:线程条件变量的使用(linux线程条件)
- 使用 Oracle JSON 包解析数据(oraclejson包)
- 清理使用Java清理Redis中的过期数据(redisjava过期)
- 失效Java使用Redis实现数据过期失效(redisjava过期)
- 如何使用Eclipse连接MySQL数据库(eclipse连接mysql数据库)
- 使用MSSQL的SQLSRV客户端连接数据库(mssqlsqlsrv)
- MySQL函数详解,解析函数在数据库中的作用及使用方法(mysql中函数是什么)
- 精通Redis解析不同使用场景中的可能(如何算是精通redis)
- 用Redis创建排行榜,开启竞争模式(使用redis写排行榜)
- Javascript中Eval函数的使用说明
- JS中showModalDialog的使用解析
- 解析Runtime中shutdownhook的使用详解
- 解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
- 解析SQL2005中如何使用CLR函数获取行号
- 解析PHP使用curl提交json格式数据
- 在一个项目中同时使用Swift和Objective-C代码混合编程的方法
- perl中使用ip138网站查询ip归属地脚本分享