AT NEW/AT END用法(无脑教学版)

使用前必须将内表结构按照分组字段定义顺序

 

AT NEW OF 

本DEMO 按照物料组 工程  RECP分组

  TYPES: BEGIN OF ty_basic,
    matkl TYPE matkl,                 "物料组
    werks TYPE werks_d,               "工厂
    recp  TYPE zrecp,                 "Recp
      pr  TYPE i,                     "PR
    znum  TYPE  i  ,                  "序号
    matnr TYPE matnr,                 "物料编码
  END OF ty_basic.
SORT lt_basic BY matkl werks recp  .

使用指针LOOP 一般用来判断内表里根据某几个字段分组处理 

这里DEMO是如果物料组 工厂 RECP有一个变化 则PR号加1 
复制代码
 LOOP AT lt_basic ASSIGNING <fs_basic>.
    IF <fs_basic>-flag = 'X'.
      CONTINUE.
    ELSE.

      AT NEW recp."按照RECP前的字段分组 如果有一个发生变化 则进AT NEW里面的逻辑 
        lv_pr = lv_pr + 1.
        CLEAR:gv_price.
      ENDAT.

      gv_price = gv_price + <fs_basic>-price.
      IF gv_price >= p_plimit.
        lv_pr = lv_pr + 1.

        CLEAR:gv_price.
        gv_price = <fs_basic>-price.
      ENDIF.

      lws_merge-matnr = <fs_basic>-matnr.
      lws_merge-werks = <fs_basic>-werks.
      lws_merge-price = <fs_basic>-price.
      lws_merge-pr = lv_pr.
      lws_merge-matkl = <fs_basic>-matkl.
      lws_merge-recp  = <fs_basic>-recp.
      lws_merge-znum  = <fs_basic>-znum.
      lws_merge-maktx = <fs_basic>-maktx.
APPEND lws_merge TO lts_merge.
      CLEAR:lws_merge.
      <fs_basic>-flag = 'X'.

    ENDIF.
  ENDLOOP.
复制代码

 

案例需求 每个公司单独做下载 以及单个公司超过多少行做下载的判断

 

 

AT END OF 

一般用在处理多个行项目创建单据使用 常用EXCEL上传凭证行数据创建会计凭证

相同序号的行项目建在同一个凭证上就可以根据需要AT NEW 序号 在最后一行 调用BAPI 

 

posted @   YangMeiko  阅读(84)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示