赞
踩
以下是统计内表行数常用的三种方法,
如下:
1、循环内表,累加
- LOOP AT it_itab.
- g_lines2 = g_lines2 + 1.
- ENDLOOP.
该方法是通过循环内部表自己累加行数。
2.DESCRIBE TABLE it_itab LINES g_lines1 .
获得内部表的属性,将内部表行数赋值给 g_lines1 , g_lines1 为I型变量。
3.g_lines3 = lines(it_itab ). 使用函数来计算内部表行数。
以上两种方法中,第一种方法不推荐使用,推荐使用后一种方法。
但是如果要求计算内表内部分符合条件的行数,则需要使用第一种方法,循环内表,配合if或者 at end of 等判断条件使用.
例:
- denominator = 0.
- molecule = 0.
- *计算供应商到货及时率 实际到货日期 - 要求到货日期 <= 2 即满足及时率
- *但是要根据工厂和供应商来计算分子和分母
- loop at gt_suppliers assigning <fs_suppliers>.
-
- read table gt_ekbe1 into gw_ekbe1 with key
- ebeln = <fs_suppliers>-ebeln ebelp = <fs_suppliers>-ebelp.
- if sy-subrc = 0.
- <fs_suppliers>-budat = gw_ekbe1-budat.
- endif.
- move-corresponding <fs_suppliers> to gw_supcopy .
-
- clear diff .
- call function 'HR_99S_INTERVAL_BETWEEN_DATES'
- exporting
- begda = gw_supcopy-eindt
- endda = gw_supcopy-budat
- tab_mode = 'I'
- importing
- days = diff .
-
- if diff - 1 <= 2.
- molecule = molecule + 1 .
- endif.
- denominator = denominator + 1 .
-
- at end of pinjie.
- timerate = molecule / denominator.
- timerate1 = timerate * 100.
- gw_suppliers_alv-werks = gw_supcopy-werks.
- gw_suppliers_alv-lifnr = gw_supcopy-lifnr.
- gw_suppliers_alv-jsl = timerate1 .
- append gw_suppliers_alv to gt_suppliers_alv.
- clear:denominator,molecule,timerate,timerate1,gw_suppliers_alv,gw_supcopy .
-
- endat.
- endloop.

————————————————
版权声明:本文为CSDN博主「酒剑仙abc」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fengxin_/article/details/106537685
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。