ABAP 7.4过滤器#性能

2020-09-16 18:04发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


尊敬的专家,

下午好,想寻求建议:

循环一个内部表i_material并命名为BAPI_MATERIAL_STOCK_REQ_LIST。

然后,将MRP项追加到另一个内部表gt_mrp_items中。

i_material的LOOP之后,具有这3种类型的MRP元素(AR; SB; BB)的记录将被过滤到各个内部表,例如gt_mrp_ar; gt_mrp_sb和gt_mrp_bb用于不同的逻辑。

在i_material INTO DATA(lwa_material)中循环。
 *调用此bapi以获得材料的详细信息
   通话功能'BAPI_MATERIAL_STOCK_REQ_LIST'
     出口
       植物= l_植物
       get_item_details = abap_true
       get_ind_lines = abap_true
       material_long = lwa_material-matnr
       selection_rule = gc_rule
     输入
       返回= lwa_return
     桌子
       mrp_items = lt_mrp_items。

   如果lwa_return-type = gc_s。
     将lt_mrp_items的行追加到gt_mrp_items。
 **(一个)**
     DATA(lt_mrp_ar)=过滤器#(gt_mrp_items使用键mrp_element_ind WHERE mrp_element_ind ='AR')。
     将lt_mrp_ar附加到gt_mrp_ar
   万一。
 结局。

 **(B)**
 DATA(gt_mrp_ar)=过滤器#(gt_mrp_items使用键mrp_element_ind,其中mrp_element_ind ='AR')。
 

我的问题是,我应该在循环后还是循环内过滤#

(A)或(B)哪个效率更高?

请忠告。

非常感谢。

关。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


尊敬的专家,

下午好,想寻求建议:

循环一个内部表i_material并命名为BAPI_MATERIAL_STOCK_REQ_LIST。

然后,将MRP项追加到另一个内部表gt_mrp_items中。

i_material的LOOP之后,具有这3种类型的MRP元素(AR; SB; BB)的记录将被过滤到各个内部表,例如gt_mrp_ar; gt_mrp_sb和gt_mrp_bb用于不同的逻辑。

在i_material INTO DATA(lwa_material)中循环。
 *调用此bapi以获得材料的详细信息
   通话功能'BAPI_MATERIAL_STOCK_REQ_LIST'
     出口
       植物= l_植物
       get_item_details = abap_true
       get_ind_lines = abap_true
       material_long = lwa_material-matnr
       selection_rule = gc_rule
     输入
       返回= lwa_return
     桌子
       mrp_items = lt_mrp_items。

   如果lwa_return-type = gc_s。
     将lt_mrp_items的行追加到gt_mrp_items。
 **(一个)**
     DATA(lt_mrp_ar)=过滤器#(gt_mrp_items使用键mrp_element_ind WHERE mrp_element_ind ='AR')。
     将lt_mrp_ar附加到gt_mrp_ar
   万一。
 结局。

 **(B)**
 DATA(gt_mrp_ar)=过滤器#(gt_mrp_items使用键mrp_element_ind,其中mrp_element_ind ='AR')。
 

我的问题是,我应该在循环后还是循环内过滤#

(A)或(B)哪个效率更高?

请忠告。

非常感谢。

关。

付费偷看设置
发送
4条回答
落灬小鱼
1楼-- · 2020-09-16 18:11

你好。

我认为最好在循环之外进行过滤。 这不是因为FILTER语句,而是因为在循环内执行代码时,您需要再加上1个辅助变量(LT_MRP_AR)和APPEND,这比直接过滤它要慢。

 DATA(LT_MRP_AR)=过滤器#(GT_MRP_ITEMS使用键MRP_ELEMENT_IND,而MRP_ELEMENT_IND ='AR')。
  将LT_MRP_AR的行追加到GT_MRP_AR。
 GT_MRP_AR = FILTER#(GT_MRP_ITEMS使用键MRP_ELEMENT_IND WHERE MRP_ELEMENT_IND ='AR')。
ZJXianG
2楼-- · 2020-09-16 18:22

请以后在发布代码时使用编辑器中的代码按钮。 这次我为您做了。

还-gc_s作为'S'的常量吗? 真? 您知道常量的想法是固定值并使代码更易于理解。 gc_success呢?

空代码
3楼-- · 2020-09-16 18:32

亲爱的马修,

对不起,请稍后答复。 并感谢您的帮助->发布代码。

将来将尝试使变量更"有意义"。

非常感谢。

最好的问候

关。

渐行渐远_HoldOn
4楼-- · 2020-09-16 18:13

亲爱的奎恩,

感谢您提供信息。

非常感谢。

最好的问候

关。

一周热门 更多>