SAP ABAP MODIFY和APPEND的一个示例

场景:二次维护某报表,用户需要的字段会将之前的数据对应多条数据

首先将原先的数据 存入另一个表(用原先的表去loop会死循环)
  itab_so1[] = itab_so[].
然后去loop这个新内表,声明两个index,用于判断,然后进行赋值。
第二层loop的第一次读取最后去modify,免得多出一条数据;

其它次读取直接append.

    itab_so1[] = itab_so[].
    DATA:l_index TYPE sy-index."第二层loop的index
    DATA:l_idx TYPE sy-index."第一层loop的index
    CLEAR:l_idx,l_index.
    LOOP AT itab_so1 INTO w_itab_so.
      l_index = 1."初始化
      l_idx = l_idx + 1.
      LOOP AT t_zsd_allot INTO w_zsd_allot WHERE vbeln = w_itab_so-vbeln.
        w_itab_so-vkbur1    = w_zsd_allot-vkbur."销售办公室
        READ TABLE t_tvkbt WITH KEY vkbur = w_itab_so-vkbur1.
        IF sy-subrc = 0.
          w_itab_so-text1    = t_tvkbt-bezei."销售办公室描述
        ENDIF.

        w_itab_so-zempno1   = w_zsd_allot-zempno."雇员部门
        READ TABLE it_zsdemp WITH KEY zempno = w_itab_so-zempno1.
        IF sy-subrc = 0.
          w_itab_so-text2   = it_zsdemp-zempna."雇员部门描述
        ENDIF.

        w_itab_so-pernr1    = w_zsd_allot-pernr."人员编号
        READ TABLE t_pa0002 INTO w_pa0002 WITH KEY pernr = w_itab_so-pernr1.
        IF sy-subrc = 0.
          CONCATENATE w_pa0002-nachn w_pa0002-vorna INTO w_itab_so-zname1."人员名称
        ENDIF.

        w_itab_so-zprovince = w_zsd_allot-zprovince."省份
        w_itab_so-zpercent  = w_zsd_allot-zpercent."业绩比例

        CASE l_index.
          WHEN 1."当第二层loop的index = 1 时,去modify.
            MODIFY itab_so[] FROM w_itab_so INDEX l_idx TRANSPORTING vkbur1 text1 zempno1 text2 pernr1 zname1 zprovince zpercent.
            CLEAR: w_zsd_allot.
            l_index = l_index + 1.
          WHEN OTHERS."当第二层loop的index > 1 时,去append.
            APPEND w_itab_so TO itab_so[] .
            CLEAR: w_zsd_allot.
        ENDCASE.
      ENDLOOP.
      CLEAR: w_itab_so.
    ENDLOOP.
  ENDIF.
  SORT itab_so BY vbeln posnr erdat.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值