一些通过SAP ABAP代码审查得出的ABAP编程最佳实践

  • 时间:
  • 浏览:0
  • 来源:uu快3官网pk10_uu快3官方邀请码_官网ios版

这种 法律土办法和直接用SELECT相比,能显著减少内存消耗量。

parallel processing (Asynchronous RFC call).

注意第二种方案使用STARTING NEW TASK达到的并发执行效果:

In product / IObject area, the best practice is to use OPEN CURSOR / FETCH NEXT CURSOR to access big DB table.

Current logic is:

这是有一一另2个 性能难题报告 。使用ABAP原生支持的NOT IN关键字都都可不都还可以获得更好的性能。性能评测如下:

2. Handle with each line directly without evaluate file path in the BIG loop.

2. Read the file content line by line

The correct logic should be:

Improvement: use DELETE XXX WHERE product_id NOT IN . It is more efficient when lt_srv_bom_file has a huge number of records. See comparison below ( unit: second )

通过比较,第二种补救方案的强度单位是第五种的四倍。

这种 函数里执行一大堆计算,或者把传入的product ID写到一张自定义表ZJERRY1里。

定义有一一另2个 ABAP函数:

通过下面这段代码模拟有一一另2个 费时的ABAP程序:

Although this solution will spend almost the same time to fetch the data from DB, it has far less memory consumption compared with using SELECT to fetch ALL data from DB at one time.

1. 这有一一另2个 IF ELSE分支里检测的条件其实逻辑上来说有的是同一类,应该合并到有一一另2个 IF分支里进行检查:

后来需用用ABAP OPEN SQL读取一张暗含海量记录的数据库表,那么推荐使用OPEN CURSOR进行分块读取。

调用这种 函数的代码:

1. The more CPU & DB time spent in ZINSERT, the better performance will be gained by using

2. The more number of ZINSERT call, the better performance will be gained by using parallel

The original dump due to out of memory issue could be eliminated by replace SELECT with OPEN CURSOR statement.

processing.

1. Open the file in application server

1. Check the file path whether it is IPG or MIDH or TPG related. If not, quit the report.

3. If the file is regarding IPG or MIDH or TPG, handle with each line separately

It is an expensive operation to open a file in application server with 80MB file size.

Loop at all service BOM, check whether the ID in current loop does exist in validation table lt_valid_prod or lt_valid_sp. If so, delete them via DELETE TABLE XXX FROM .