function alv (一)

ALV概览

  • ALV全称 SAP List View,是SAP提供的一个强大的数据报表显示工具
  • ALV实质上是一个屏幕空间对象,它通过程序传递数据内表的方式来显示数据

基本概念

1、 类型池:SLIS

  • 类型池是以INCLUDE技术为基础的,组合多种数据类型进行声明时使用类型组
  • 包含许多系统自定义的数据类型及类型组,如ALV要用到的数据类型都包含在SLIS这个类型池里

2、Fieldcat TYPE slis_t_fieldcat_alv

  • 列格式设置(表单)
  • 字段名称,列是否可修改等

3、 Layout TYPE slis_layout_alv

  • 全局格式设置(结构)
  • 整表字段是否可修改,是否以斑马纹输出,是否显示选择按钮字段等

4、函数:REUSE_ALV_FIELDCDATALOG_MERGE

  • 根据内表结构返回FIELDCAT字段结构信息

5、函数:REUSE_ALV_GRID_DISPLAY / REUSE_ALV_LIST_DISPLAY

  • 使用GRID/LIST模式输出ALV报表

ALV调用涉及内容

1、关键字解释:

  • START-OF-SELECTION :当结束了选择画面的时候,程序会从这里进行处理
  • END-OF-SELECTION :即START-OF-SELECTION相关事件执行完成,但输出屏幕还未显示之前。在实际开发中,主要应用于一些执行结果的检验等。其输出数据叠加于同一输出屏幕中。

2、START-OF-SELECTION

  • 数据表单数据选取

3、END-OF-SELECTION

  • 对FIELDCAT赋值:设置每列格式
  • 对LAYOUT赋值:设置表单格式(可选)
  • 对SORT表等赋值:设置排序内容(可选)
  • 对EVENT表赋值:增加程序交互事件(可选)
  • 调用函数,输出ALV

Fieldcat介绍

  • Fieldcat是一张内表,记录的是ALV输出时每列的属性信息
字段说明
KEY将列设置为关键字(‘X’/’’)
ICON以图标显示(‘X’/’’)
CHECKBOX以复选框显示(‘X’/’’)
JUST定义对齐方式(‘X’/’’)
IZERO增加前导零(‘X’/’’)
NO_SIGN不显示符号(‘X’/’’)
NO_ZERO不显示前导零(‘X’/’’)
COL_POS作为第几列输出(数字)
DO_SUM对字段进行汇总(‘X’/’’)
SELTEXT_L/M/S字段名称描述长/中/短(字符串)
HOTSPOT设置为热点(显示为有下划线)(‘X’/’’)

DEMO

在这里插入图片描述

程序结构
REPORT z_test_01.
INCLUDE z_test_01top. "存放变量
INCLUDE z_test_01form. “存放子历程

START-OF-SELECTION.
  PERFORM get_data. “获取数据

END-OF-SELECTION.
  IF gty_ekpo[] IS NOT INITIAL.
    PERFORM write_data. “展示数据
  ENDIF.
Z_TEST_01TOP
TYPE-POOLS slis .  "类型池
DATA:gt_fieldcat TYPE  slis_t_fieldcat_alv, "fieldcat内表
     gs_fieldcat TYPE  slis_fieldcat_alv.  "fieldcat结构

DATA:BEGIN OF gty_ekpo OCCURS 0 . “输出的内表
    INCLUDE STRUCTURE    ekpo.
DATA: icon TYPE char4.
DATA:END OF gty_ekpo.
Z_TEST_01FORM
*&---------------------------------------------------------------------*
*& 包含               Z_TEST_01FORM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM get_data .
  SELECT *
    INTO CORRESPONDING FIELDS OF TABLE gty_ekpo
    FROM ekpo UP TO 20 ROWS ORDER BY ebeln.

  LOOP AT gty_ekpo.
    gty_ekpo-icon = ICON_GREEN_LIGHT.
    MODIFY gty_ekpo.
  ENDLOOP.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form WRITE_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM write_data .
  PERFORM build_fieldcat.
  PERFORM build_alv.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM build_fieldcat .
  CLEAR gt_fieldcat[].
  PERFORM add_fieldcat USING 'ICON'  'ICON'  '1'  '10'  ''.
  PERFORM add_fieldcat USING 'EBELN'  '采购凭证'  '1'  '10'  ''.
  PERFORM add_fieldcat USING 'EBELP'  '项目'  '1'  '10'  ''.
  PERFORM add_fieldcat USING 'MENGE'  '采购订单数量'  '1'  '10'  'X'.

ENDFORM.

FORM add_fieldcat USING p_fieldname
                        p_seltext
                        p_col
                        p_len
                        p_sum.

  CLEAR gs_fieldcat.
  gs_fieldcat-fieldname = p_fieldname.
  gs_fieldcat-seltext_m = p_seltext.
  gs_fieldcat-col_pos = p_col.
  gs_fieldcat-outputlen = p_len.
  gs_fieldcat-do_sum = p_sum.
  APPEND gs_fieldcat TO gt_fieldcat.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form BUILD_ALV
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM build_alv .

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      it_fieldcat = gt_fieldcat
    TABLES
      t_outtab    = gty_ekpo.

ENDFORM.
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值