以下是统计内表行数常用的三种方法,
如下:
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