• 如何按照一定的需求进行开发ALV报表


    需求

    ZPP058T 报表增加“交货单数量”,交货单数量(lf) 筛选条件 报表.销售订单号=t1.VGBEL(销售订单号) and 报表.销售订单行号=t1.VGPOS(销售订单行号)
    (select sum(LFIMG) as lf,VGBEL,VGPOS from lips group by vgbel,VGPOS) t1

    分析

    以上是一个最简单的需求——添加字段,即在ZPP058T这个报表中,添加“交货单数量”这个字段,
    并且要求如下,将交货单数量 (LFIMG) 简写为 lf 其筛选条件为是select出的销售订单号与主表中的销售订单号相同
    (此处我们的主表用的是gt_data),且与主表中的vgpos销售订单行号相同

    首先我们知道了我们查询的数据为 lfimg,vgpos ,和vgbel
    故为

    select lfimg , vgpos ,vgbel
    from lips
    
    • 1
    • 2

    然后于此同时,将数据全部去重写入主表

    for all entries in @gt_data
    
    • 1

    这里在写入主表的时候会有一个问题,那就是,for all entries in 语句写入主表的时候会有一个去重的作用,而上述所查询的语句,
    select lfimg, vgpos ,vgbel 中, lfimg,vgpos,vgbel 都是有可能重复的,因为它们不是主键,故此时,我们需要去查询出lips这张表的主键,也即 vbeln,posnr ,借由主键不会重复的特性,让 for all entries in 语句 不会筛去我们的语句,导致出现bug
    故应该如此写

    select lfing, vgpos,vgbel,vbeln,posnr
    	from lips
    	for all entries in @gt_data
    
    • 1
    • 2
    • 3

    同时,我们根据需求所写
    先查询出主表所用的销售订单号为 vbeln ,主表中所用的销售订单行号为 posnr
    故我们得到筛选条件

    where  vgbel = @gt_data-vbeln
    and 		vgpos = @gt_data-posnr
    
    • 1
    • 2

    然后将这些数据都暂时写入 我们直接在语句里定义的lt_lips表里

    	into table @data(lt_lips)
    
    • 1

    以上,我们就写完的我们的取数部分的逻辑

        SELECT lfimg , vgpos , vgbel,vbeln ,posnr
          FROM  lips
          FOR ALL ENTRIES IN  @gt_data
          where vgbel = @gt_data-vbeln
           and  vgpos = @gt_data-posnr
          into table @data(lt_lips).
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    下面我们来写数据处理部分的逻辑
    面对增加字段的需求,并且要求数据是求和得出,我们常见的处理方法时使用loop语句

    循环条件设为 我们自己定义的表lt_lips中的数据进去其自身的工作区ls_lips
    筛选条件 为 自表中的 vgbel 属性 和自表中的vgpos 属性与主表中的相同
    然后将gs_data-lfimg作为存储变量,每次循环加上ls_lips中的lfimg属性。

    loop at lt_lips into data(ls_lips) where vgbel  = gs_data-vbeln  and vgpos = gs_data-posnr.
    			gs_data-lfimg = ls_lips-lfimg + gs_data-lfimg.
    endloop
    
    • 1
    • 2
    • 3

    同时在外观控制部分加上字段

      add2fc 'LFIMG'   '交货单数量' '' '' '' ''.
    
    • 1
  • 相关阅读:
    考虑车轮纵向滑动的无人自行车平衡控制实现
    django连接达梦数据库
    Linux内核中断机制
    RL_sysu_homework
    JS事件监听器
    Linux服务器初始化、yum安装java、redis、mysql
    ATT&CK 威胁情报
    codeforces 1728E
    Web安全研究(五)
    Mysql查询今天到期、n天即将到期、还有n天过期相关sql
  • 原文地址:https://blog.csdn.net/weixin_43847969/article/details/126358267