• 如何按照一定的需求进行开发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
  • 相关阅读:
    关于第一方数据,你必须要知道的三件事
    vue3子调父页面的方法
    涛然自得周刊(第 5 期):蝲蛄吟唱的地方
    我和爬虫的故事
    PowerBI真经连续剧
    渗透测试学习day4
    中国聚异丁烯市场研究与投资价值报告(2022版)
    日增进:python性能分析工具line_profiler
    JVM(宋红康)学习之运行时数据区之PC寄存器
    基于Java的飞机雷电射击游戏的设计实现(Eclipse开发)
  • 原文地址:https://blog.csdn.net/weixin_43847969/article/details/126358267