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  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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值