行数"/>
ABAP 中获取内表的行数
以下是统计内表行数常用的三种方法,
如下:
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 keyebeln = <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'exportingbegda = gw_supcopy-eindtendda = gw_supcopy-budattab_mode = 'I'importingdays = 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.
更多推荐
ABAP 中获取内表的行数
发布评论