点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我的要求是使用带有4或5个循环的并行游标。 我想将此代码转换为
在it_mard INTO wa_mard中循环。
wa_final-matnr = wa_mard-matnr。
wa_final-werks = wa_mard-werks。
wa_final-lgort = wa_mard-lgort。
wa_final-lgort。 labst = wa_mard-labst。
清除:wa_mseg,wa_ser03,wa_objk。
在it_mseg处放入wa_mseg,其中matnr = wa_mard-matnr
和werks = wa_mard-werks
lgort = wa_mard-lgort。
wa_final-aufnr = wa_mseg-aufnr。
在it_ser03上循环到wa_ser03在mblnr = wa_mseg-mblnr。
在it_objk上循环 在into wa_objk中obknr = wa_ser03-obknr。
清除:wa_final-status2。
如果wa_mseg-bwart ='261'。 -----------------------
wa_final-status ='已消耗'.---------------- -----
wa_final-status2 ="活动"。----------------------
清除:wa_final-plnbez,wa_final-bldat 。
读取表it_afko使用键aufnr = wa_mseg-aufnr进入wa_afko。
如果sy-subrc =0。
wa_final-plnbez = wa_afko-plnbez。
ENDIF。 br>
读取表it_mkpf使用键mblnr = wa_mseg-mblnr插入wa_mkpf。
如果sy-subrc =0。
wa_final-bldat = wa_mkpf-bldat。
ENDIF。
-------------------------------------------------- -----------------------------------要添加
ELSEIF wa_mseg-bwart ='551'。
CLEAR:wa_final-status2。
wa_final-status2 ="废料"。
wa_final-status2 ="无效"。
如果wa_final-status ='Scrap'。
CLEAR wa_final-aufnr。
ENDIF。
wa_final-date =''。
ENDIF。
wa_final-sernr = wa_objk-sernr。
SHIFT wa_final-sernr左删除指针为'0 '。
APPEND wa_final到它_final。
ENDLOOP。
ENDLOOP。
ENDLOOP。
* ------------- -------------------------------------------------- -
将it_view循环到wa_view中,matnr = wa_mard-matnr
AND b_werk = wa_mard-werks
AND b_lager = wa_mard-lgort。
清除:wa_final-plnbez, wa_final-bldat。
如果wa_view-b_lager ='112A'或wa_view-b_lager ='113A'或wa_view-b_lager ='114A'或wa_view-b_lager ='111V'。
清除:wa_final- status2。
wa_final-status ='正在生产'。
wa_final-date = wa_view-aedat。
wa_final-status2 =''。
如果wa_final-status ='正在生产 生产'。
CLEAR wa_final-aufnr。
ENDIF。
ELSE。
CLEAR:wa_final-status2。
wa_final-status ='Available'。
wa_final-date =''。
wa_final-status2 =''。
如果wa_final-status ='Available'。
清除wa_final-aufnr。
ENDIF。
ENDIF。
wa_final-sernr = wa_view-sernr。
SHIFT wa_final-sernr左删除领先'0'。
将wa_final附加到it_final。
ENDLOOP。
ENDLOOP。
有许多实现并行游标的方法,这完全取决于不同表中的数据如何具有匹配键(例如,从基数1:1到0..m:0..n)。
并行游标的一般准则如下:
并行游标的最基本形式是:
有关SAP在ABAP对象中的并行游标上进行上述编码的文档,性能示例:
使用简单算法的嵌套循环为O(n1 * n2),而并行游标方法仅占用O(n1 + n2)时间。
上述并行游标算法假定ITAB2仅包含
entries
如果此假设不成立,则并行游标算法会变得稍微复杂一些,但其性能特征将保持不变。
我敢说您不需要实现并行游标。 您可能需要提高性能。 并行游标是执行此操作的旧方法。 如今(即过去的20年)使用HASHED表或SORTED表作为首选项。 有了这些,就不需要并行游标了,从而导致代码更简单甚至更快。
感谢您的Valueble信息
公平点, 但我总是问题"要求",实际上是"我有问题,这是我的解决方案,它如何工作"。 因此,值得建议更好的技术。 按照优先顺序:
1。 CDS
2。 选择/加入
3。 哈希表/排序表
4。 平行光标。
我已经处理了数百万条记录中的数据集-在过去的20年中,我从未需要使用并行游标。 我非常怀疑OP的问题是它确实需要这种特殊的雪花。
一周热门 更多>