ABAP 之 commit 提交的使用解析

2022-12-27 17:14:36 浏览数 (2)

HELLO,这里是百里,一个学习中的ABAPER,在工作学习中,我们会经常提交某些数据,或者说在同一个数据逻辑处理中.我们需要先计算前面的逻辑在处理后面的逻辑数据,这种相关的业务逻辑数据.此时就需要使用数据提交相关的内容.今天所讲的内容就是解决这方面需求的内容 .

为什么数据的提交

其实我们在ALV或者程序写完的时候,都会进行数据提交的动作,我们系统中的概念叫做隐式提交. 在SAP的系统中分钟两种提交的方式,分别是显示提交和隐式提交.commit 的作用就是到当前位置的代码,进行一次数据提交. 我经过debug 测试过,这个应该是同步进行的. 也就是按照代码写的顺序依次执行. commit work 语句是显式更新, 系统本身执行的形式叫做隐式执行.我们不需要增加什么相关的代码,只需要等程序执行完毕后即可,因为系统会自动提交.

技术解析

其实这个并没有什么所谓的技术点,他只有一句话,就是,执行插入、修改数据时,修改完之后要加上commit进行提交.

代码语言:javascript复制
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 ,如果他会在内存中计算.

实例解析

数据准备

代码语言:javascript复制
""数据准备
" 数据准备  
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  .

编写子例程

代码语言:javascript复制
*&---------------------------------------------------------------------*  
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存在,而且禁止在标准表进行增删改查的操作.我们其实做的就就当数据量非常大时,将系统改成同步,方便数据操作.

百里鸡汤

休对故人思故国,且将新火试新茶。诗酒趁年华。

这里是百里,一个努力的学习者. 努力学习好好记录,点滴进步,就是成功.

0 人点赞