*low efficiency
l_it_alv_stpox[] = g_it_alv_stpox[].
SORT l_it_alv_stpox BY zz_matnr idnrk.
LOOP AT g_it_alv_stpox ASSIGNING <l_wa_alv>.
LOOP AT l_it_alv_stpox WHERE ( zz_matnr NE <l_wa_alv>-zz_matnr )
AND ( idnrk EQ <l_wa_alv>-idnrk )
AND ( zz_bunit IS NOT INITIAL )
AND ( zz_bunit NE <l_wa_alv>-zz_bunit ).
<l_wa_alv>-zz_bunit = 'Common'.
EXIT.
ENDLOOP.
UPDATE marc SET zz_bunit = <l_wa_alv>-zz_bunit WHERE werks = <l_wa_alv>-werks
AND matnr = <l_wa_alv>-idnrk .
IF sy-subrc EQ 0.
COMMIT WORK.
<l_wa_alv>-zz_message = l_message_s.
ELSE.
ROLLBACK WORK.
<l_wa_alv>-zz_message = l_message_f.
ENDIF.
ENDLOOP.

***大内表LOOP嵌套LOOP,速度太慢,转化成以下逻辑 ***

 delete adjacent duplicates from g_it_alv_stpox comparing zz_matnr idnrk.
l_it_idnrk_stpox[] = g_it_alv_stpox[].
sort l_it_idnrk_stpox by idnrk.
delete adjacent duplicates from l_it_idnrk_stpox comparing idnrk. l_it_both_stpox[] = l_it_idnrk_stpox[]. loop at l_it_idnrk_stpox into l_wa_idnrk_stpox.
l_it_stpox_in_loop[] = l_it_both_stpox[].
delete l_it_stpox_in_loop where idnrk ne l_wa_idnrk_stpox-idnrk.
delete l_it_both_stpox where idnrk eq l_wa_idnrk_stpox-idnrk.
describe table l_it_stpox_in_loop lines l_lines.
if l_lines gt 1.
l_wa_idnrk_stpox-zz_bunit = 'Common'.
endif.
clear l_lines.
update marc set zz_bunit = l_wa_idnrk_stpox-zz_bunit where werks = l_wa_idnrk_stpox-werks
and matnr = l_wa_idnrk_stpox-idnrk.
if sy-subrc eq 0.
commit work.
l_wa_idnrk_stpox-zz_message = l_message_s.
else.
rollback work.
l_wa_idnrk_stpox-zz_message = l_message_f.
endif. modify g_it_alv_stpox from l_wa_idnrk_stpox transporting zz_bunit zz_message
where werks = l_wa_idnrk_stpox-werks and idnrk = l_wa_idnrk_stpox-idnrk.
endloop.
clear:l_wa_idnrk_stpox.

***上面一段有误,改成以下 ***

sort lt_stpox by idnrk zz_bunit.
delete adjacent duplicates from lt_stpox comparing idnrk zz_bunit.
describe table lt_stpox lines l_lines.
endif.
* PERFORM frm_check_users.
write: 'LT_STPOX lines:' , l_lines. lt_mara[] = lt_stpox[].
sort: lt_mara by idnrk.
delete adjacent duplicates from lt_mara comparing idnrk . sort: lt_stpox by idnrk. describe table lt_mara lines l_lines.
write: 'LT_MARA:' , l_lines. loop at lt_mara into ls_mara.
l_maraindex = sy-tabix.
read table lt_stpox into ls_stpox with key idnrk = ls_mara-idnrk binary search.
if sy-subrc = 0.
l_index = sy-tabix.
loop at lt_stpox into ls_stpox from l_index.
if ls_stpox-idnrk ne ls_mara-idnrk.
exit.
endif.
if ls_stpox-zz_bunit ne ls_mara-zz_bunit.
ls_mara-zz_bunit = 'Common'.
exit.
endif. endloop. update marc set zz_bunit = ls_mara-zz_bunit where werks = p_werks
and matnr = ls_mara-idnrk.
if sy-subrc eq 0.
commit work.
else.
rollback work.
endif.
write: /.
write:l_maraindex, ls_mara-idnrk, ls_mara-zz_bunit. endif.
endloop.

Efficiency optimizing的更多相关文章

  1. Android 性能优化(9)网络优化( 5)Optimizing Server-Initiated Network Use

    Optimizing Server-Initiated Network Use This lesson teaches you to Send Server Updates with GCM Netw ...

  2. Android 性能优化(8)网络优化( 4)Optimizing App-Initiated Network Use

    Optimizing App-Initiated Network Use This lesson teaches you to Batch and Schedule Network Requests ...

  3. Optimizing web servers for high throughput and low latency

    转自:https://blogs.dropbox.com/tech/2017/09/optimizing-web-servers-for-high-throughput-and-low-latency ...

  4. WWDC2018 之 优化 App Assets Optimizing App Assets

    该篇博客记录了观看WWDC Session227<Optimizing App Assets>的内容以及一些理解. 引言 该session主要讲述了使用Assets Catalog的新特性 ...

  5. Unity性能优化(3)-官方教程Optimizing garbage collection in Unity games翻译

    本文是Unity官方教程,性能优化系列的第三篇<Optimizing garbage collection in Unity games>的翻译. 相关文章: Unity性能优化(1)-官 ...

  6. Unity性能优化(4)-官方教程Optimizing graphics rendering in Unity games翻译

    本文是Unity官方教程,性能优化系列的第四篇<Optimizing graphics rendering in Unity games>的翻译. 相关文章: Unity性能优化(1)-官 ...

  7. Design and Analysis of Algorithms_Fundamentals of the Analysis of Algorithm Efficiency

    I collect and make up this pseudocode from the book: <<Introduction to the Design and Analysis ...

  8. 帕雷托最优(Pareto optimality)、帕雷托效率(Pareto efficiency)

    帕雷托最优(英语:Pareto optimality),或帕雷托最适,也称为帕雷托效率(英语:Pareto efficiency),是经济学中的重要概念,并且在博弈论.工程学和社会科学中有着广泛的应用 ...

  9. Optimizing Performance: Data Binding(zz)

    Optimizing Performance: Data Binding .NET Framework 4.5 Other Versions   Windows Presentation Founda ...

随机推荐

  1. AS_简单的开始

    1.注释   单行注释  //           多行注释  /* src */ 2.变量   变量名,可以包含字母.数字.下划线.$.但不以数字开头.   变量类型,是严格数据类型.AS有静态类型 ...

  2. 观察者模式——Head First

    一.定义 观察者模式(Observer Pattern)定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新. 二.类图 三.气象站 //Subject p ...

  3. English Phrases with THE – Linking the TH Sound

    English Phrases with THE – Linking the TH Sound Share Tweet Share Tagged With: The Word THE Study En ...

  4. Haskell语言学习笔记(77)Data.HashSet

    安装 unordered-containers $ cabal install unordered-containers Installed unordered-containers-0.2.9.0 ...

  5. Redis进阶实践之六Redis Desktop Manager连接Windows和Linux系统上的Redis服务(转载6)

    Redis进阶实践之六Redis Desktop Manager连接Windows和Linux系统上的Redis服务 一.引言 今天本来没有打算写这篇文章,但是,今天测试Redis的时候发现了两个问题 ...

  6. 遍历DOM树,过滤节点

    jQuery还提供以下方法来过滤节点.  方法  说明  first()  获取第一个,示例 $('li').last()  last()  获取最后一个,示例$('li').last()  eq() ...

  7. python实现根据目标字符串修改一下行

    需求: 根据source和dest两个文件,找出新增的命令行,然后在xml文件中根据命令修改id 输入souce: ADD 100 SUB 200 输入dest: MUL 300 DIV 400 AD ...

  8. MVC 2nd

    步骤 3 创建控制器. StudentController.java public class StudentController { private Student model; private S ...

  9. 机器学习之overfiting

    有错欢迎指正,别让小弟继续错下去. 我们在使用机器学习过程中,经常会overfiting,overfiting的产生原因是noise.训练样本大的话,还好,不用考虑这个 问题.但是,当数据量小的时候, ...

  10. crontab详细用法

    使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令.例如系统管理员安排一个备份任务使其每天都运行 如何往 cron 中添加一个作业? # crontab –e0 5 * ...