相当于分组显示。第一行显示分组的头,下面显示明细。

例程1:采购订单主从表ALV层次输出

*&---------------------------------------------------------------------*
*& Report Z_T_HIERSEQ_ALV *
*& *
*&---------------------------------------------------------------------*
*& 采购订单主从表ALV层次输出 *
*& *
*&---------------------------------------------------------------------*

REPORT z_t_hierseq_alv .
TABLES: ekko,ekpo.
SELECT-OPTIONS s_ebeln FOR ekko-ebeln.
*1、在程序里包含SLIS

TYPE-POOLS:slis.
*2、声明主表和明细表

DATA: BEGIN OF headertab OCCURS 0,
ebeln LIKE ekko-ebeln,
bstyp LIKE ekko-bstyp,
bsart LIKE ekko-bsart,
statu LIKE ekko-statu,
END OF headertab.

DATA: BEGIN OF itemtab OCCURS 0,
ebeln LIKE ekpo-ebeln,
ebelp LIKE ekpo-ebelp,
matnr LIKE ekpo-matnr,
werks LIKE ekpo-werks,
menge LIKE ekpo-menge,
netpr LIKE ekpo-netpr,
peinh LIKE ekpo-peinh,
netwr LIKE ekpo-netwr,
END OF itemtab.

DATA: i_fieldcat TYPE slis_t_fieldcat_alv.
DATA: v_repid LIKE sy-repid."当前程序名
*3、申明主表和明细表的名称变量

DATA: g_tabname_header TYPE slis_tabname,
g_tabname_item TYPE slis_tabname.

*4、声明主表和明细表连接关键字变量
DATA: gs_keyinfo TYPE slis_keyinfo_alv.

INITIALIZATION.
v_repid = sy-repid.

START-OF-SELECTION.

PERFORM get_data.

END-OF-SELECTION.

*5、获取头表输出表头字段名称

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = v_repid "当前程序名
i_internal_tabname = 'HEADERTAB' "主表名
i_inclname = v_repid "当前程序名
i_bypassing_buffer = 'X'
i_buffer_active = ''
CHANGING
ct_fieldcat = i_fieldcat "ALV输出的主表标题
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1
sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
*6、获取从表输出表头字段名称
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'ITEMTAB'
i_inclname = v_repid
i_bypassing_buffer = 'X'
i_buffer_active = ''
CHANGING
ct_fieldcat = i_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1
sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

*7、设置主从表的关联字段,最多可以设置五个字段关联。
gs_keyinfo-header01 = 'EBELN'.
gs_keyinfo-item01 = 'EBELN'.
*8、设置主表和明细表变量对应的内表名称
g_tabname_header = 'HEADERTAB'."主表
g_tabname_item = 'ITEMTAB'."明细表
*9、调用层次ALV输出函数
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = v_repid
it_fieldcat = i_fieldcat
i_save = 'A'
i_tabname_header = g_tabname_header
i_tabname_item = g_tabname_item
is_keyinfo = gs_keyinfo
i_bypassing_buffer = 'X'
i_buffer_active = ' '
TABLES
t_outtab_header = headertab
t_outtab_item = itemtab
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM get_data.

SELECT ebeln bstyp bsart statu
INTO TABLE headertab
FROM ekko
WHERE ebeln IN s_ebeln.

IF NOT headertab[] IS INITIAL.
SELECT ebeln ebelp matnr werks menge netpr peinh netwr
INTO TABLE itemtab
FROM ekpo
FOR ALL ENTRIES IN headertab
WHERE ebeln = headertab-ebeln.
ENDIF.
ENDFORM. "get_data

还有官方的demo BALVHD01详细参见http://www.se80.co.uk/sapreports/b/balv/balvhd01.htm

ALV 层级分组显示报表相关推荐

  1. birt报表的行隐藏和列隐藏以及分组显示

    为什么80%的码农都做不了架构师?>>>    1.行隐藏 按照图中的步骤:1.选择要隐藏的行:2.在property Editor 中找到visibility选项,勾上HIde E ...

  2. 多级报表 php,电力设备生产数据的多层分组统计报表实现

    [导读]欢迎大家持续关注葡萄城控件技术团队博客,更多更好的原创文章尽在这里~~多层分组统计报表即按照不同的数据字段,形成多级分组,并分层级进行合计. 多层分组统计报表即按照不同的数据字段,形成多级分组 ...

  3. 百万级分组大报表开发与呈现

    在<秒级展现的百万级大清单报表怎么做>(http://c.raqsoft.com.cn/article/1535506545563?r=shiguang),中,我们介绍了无论RDB还是非R ...

  4. 1228|如何用ALV输出完成SAP报表

    ABAP开发-ALV学习笔记 一.开发思想 ABAP开发:事件驱动开发 SAP请求号意义 程序的封装思想 二.开发ALV的基本流程 第一步:定义ALV所要用到的类型池:TYPE-POOLS:SLIS; ...

  5. mysql中鼠标光标消失了_为什么我这里没有显示鼠标的悬停可改变页面颜色,以为什么我加载了mysql的jar文件还是不能显示报表的内容呢?...

    源自:3-6 JSP页面实现 为什么我这里没有显示鼠标的悬停可改变页面颜色,以为什么我加载了mysql的jar文件还是不能显示报表的内容呢? 首先是index.jsp pageEncoding=&qu ...

  6. 中间表增加额外字段_知识分享 I 这样显示报表筛选字段 你学会了吗

    数据透视表创建完成后,报表筛选区域如果有多个筛选字段,系统会默认筛选字段的显示方式为垂直并排显示,如图所示. 为了使数据透视表更具可读性并易于操作,可以采用以下方法水平并排显示报表筛选区域中的多个筛选 ...

  7. Flutter Dart:用数字分组显示大数字

    Flutter & Dart:用数字分组显示大数字 大家好,我是坚果,我的公众号"坚果前端", 用逗号显示大数字作为千位分隔符将增加可读性.这篇简短的文章将向您展示如何借助 ...

  8. 手机号,银行卡号等自动分组显示的输入框

    代码地址如下: http://www.demodashi.com/demo/14752.html ####前言 在android开发中,我们经常会遇到手机号,银行卡号,税号等长串数字或字母,为了视觉上 ...

  9. jasper report分组显示

    需求:java,使用jasper report生成PDF,并且将签署人相同的数据分组显示到一张PDF上,如下图: 问题:jasper report没有正确分组,radiologist为lly424的数 ...

最新文章

  1. java并发性是指什么_java – 什么是“非阻塞”并发,它与普通并发性有什么不同?...
  2. 前端面试instanceof_一起回归一下每日一题这些经典面试题
  3. 一个报文的路由器之旅_报文的交换和寻址转发
  4. 用Starlink填补5G和光纤之间的空白
  5. 被替换的项目不是替换值长度的倍数_如果要在Excel中计算单元格内指定的字符长度,我推荐这两个公式.........
  6. php七牛分片上传_ThinkPHP实现JavaScript上传大视频到七牛云实例
  7. JavaScript Dom编程艺术
  8. 贵州大学计算机专业的导师是谁,贵州大学计算机科学与信息学院导师介绍:王以松...
  9. Apollo进阶课程 ③ | 开源模块讲解(中)
  10. 利用Markdown编写数学公式
  11. puppeteer 自动化测试 一
  12. idea工具修改Git路径
  13. 与孩子一起学编程09章
  14. 脱壳--00.aspack.exe
  15. 写给立志进入网络行业的朋友的一些忠告
  16. 服务器显示asp错误,win2008 ASP显示500内部错误不能显示详细错误的解决方法
  17. CUDA C++ Programming Guide——编程模型
  18. Nand Flash管理算法介绍之FTL简介
  19. 华为ensp 启动ar设备失败,错误代码 :40
  20. 图像超分辨率重建(SISR)

热门文章

  1. 从产品经理到创业者如何拿到第一个1000万融资
  2. 滴滴顺风车GM:大多数产品经理定义是狭隘的
  3. 【干货】写给产品经理和设计师的用户体验知识
  4. asp.net core系列 59 Ocelot 构建基础项目示例
  5. angular 拦截器
  6. db first和code first
  7. 关于获取客户端Mac地址
  8. 七、Mosquito 集群搭建
  9. JAVA反射+SOCKET实现远程方法调用
  10. tomcat下类加载顺序