ALV 全称SAP LIST VIEW, 是SAP所提供的一个强大的数据报表显示工具。

ALV显示格式分为GRID及LIST两种,两者所显示数据一致,

GRID模式在每个输出字段提供选择按钮,允许用 户自由设置显示格式,操作更为灵活。

LIST模式则固定输出格,适用于较严格的标准报表.

* ALV的属性设置及定义

在调用ALV之前,先要定义Layout的Fieldcat,他们同属于类型池SLIS,具体代码如下:

TYPE-POOLS:slis.
DATA:fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
     layout   TYPE slis_layout_alv.

ALV的调用主要由以下几个标准函数实现(注意,所以函数的输入输出参数件必须大写,

否则系统会出现常中止),相关函数如下:

1)REUSE_ALV_FLELDCATALOG_MERGE:根据内表结构返回FIELDCAT字段结构信息,

其常用输入输出参数如下:

EXPORTING项:

* I_PROGRAM_NAME:程序名称

* I_INTERNAL_TABNAME:内表名称,必须为输出内表所自定义的STRUCTURE名;

* I_STRUCTURE_NAME:直接参考数据字典中所定义的透明表名或STRUCTURE名,

函数定义时I_INTERNAL_TABNAME或I_STRUCTURE_NAME参数只需一项;

CHANGING项:

* CT_FIELDCAT:导出FIELDCAT内表数据。

2)REUSE_ALV_GRID_DISPLAY/ REUSE_ALV_LIST_DISPLAY:输出ALV报表,

定义其为GEID模式还是LIST模式,两个函数的语法结构一样,其常用输入输出参数EXPORTIN如下:

* I_CALLBACK_PROGRAM:程序名称;

* IS_LAYOUT:程序所定义Layout名称;

* I_GRID_TITLE: 定义FIELDCAT数据;

* TABLES 项:定义输入内表数据;

* T_OUTTAB:输入所需显示的内表数据;

* IT_EVENTS:定义ALV输出事件;

* I_CALLBACK_PF_STATUS_SET:定义触发工具栏定义,通常为一子程序;

* I_CALLBACK_USER_COMMAND:其对应值一般为子程序名,在对ALV操作时触发所定义子程序(如某表字段的双击事件);

3)Layout为一Structure,其主要字段定义及属性如下:

* EDIT:设置ALV是否为可编辑模式;

* Colwidth_optimize:将ALV字段宽度设置为最优化,按实际输出内容宽度自动匹配;

* NO_VLINE:输出ALV表格不显示垂直格式;

* NO_ULINE_HS:输出ALV表格不显示水平格线;

* INFO_FIELDNAME:设置颜色属性;

* KEY_HOTSPOT:设置关键字段执点;

* NO_COLNAME:是否显示字段名;

* ZEBRA:使ALV表格按斑马线间隔条纹方式显示,以便显示效果更美观;

* BOX_FIELDNAME:设置表格是否显示选择按钮字段;

* INFO_FIELDNAME:用于设置ALV输出报表每一行的颜色,其参数为输出内表的字段名称,要注意的是使用该属性需要同时在内表中定义一个与该参数所定义字段名相同的字段,例如:

layout-info_fieldname = 'COLOR'.

  倘若其数据输出内表名为LT_OUT,则需要在该内表增加一字段"COLOR",并为内表每行复制,颜色参数范围C000~C999.例如:LT_OUT_COLOR = 'C500'.

4) Fieldcat主要属性介绍

* Key:将定义字段设置为Key值;

* ICON: 将定义字段以ICON的形式显示;

* CHECKBOX: 将定义字段以CHECKBOX的形式显示;

* JUST:定义字段对齐方式(R)RIGHT、(L)Left、(C)Center;

* IZERO: 將定义字段以前导的“0”的形式显示;

* NO_SIGN:将定义字段的符号设置为不显示;

* NO_ZERO:定义字段是否显示;

* EMPHASIZE:设置字段的颜色;

* DO_SUM:对字段进行汇总;

* SELTEXT_L/M/S :设置字段名称描述长、中、短;

* DDICTXT:设置字段显示字符串;

* HOTSPOT: 设置字段是否有热点(热点字段显示有下划线)。

例如:

REPORT  Y001.
TYPE-POOLS:SLIS.
DATA:FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
     LAYOUT TYPE SLIS_LAYOUT_ALV,
     W_REPID LIKE SY-REPID.

TABLES:SPFLI.
DATA:LSPFLI LIKE SPFLI OCCURS 0 WITH HEADER LINE.

*DATA:BEGIN OF LSPFLI OCCURS 0.
*  INCLUDE STRUCTURE SPFLI.
*DATA:END OF LSPFLI.

START-OF-SELECTION.
  PERFORM GETDATA.
  PERFORM CATALOG.
  PERFORM ALVSHOW.

*&---------------------------------------------------------------------*
*&      Form  GETDATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GETDATA.
  SELECT * FROM SPFLI
    INTO CORRESPONDING FIELDS OF TABLE LSPFLI.
ENDFORM.                    "GETDATA

*&---------------------------------------------------------------------*
*&      Form  CATALOG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM CATALOG.
  W_REPID = SY-REPID.
  CLEAR FIELDCAT.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      I_PROGRAM_NAME         = W_REPID
      I_STRUCTURE_NAME       = 'SPFLI'
    CHANGING
      CT_FIELDCAT            = 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.

* 对FieldCat属性的修改
  READ TABLE FIELDCAT INDEX 2."将第二列设为热点显示
  FIELDCAT-HOTSPOT = 'X'.
  MODIFY FIELDCAT INDEX 2.

READ TABLE FIELDCAT INDEX 4."将第四列设置为Key值字段
  FIELDCAT-KEY = 'X'.
  MODIFY FIELDCAT INDEX 4.

READ TABLE FIELDCAT INDEX 5."将第五列设置为checkBox
  FIELDCAT-CHECKBOX = 'X'.
  MODIFY FIELDCAT INDEX 5.

LAYOUT-COLWIDTH_OPTIMIZE = 'X'."设置LAYOUT输出格式最优化
ENDFORM.                    "CATALOG

*&---------------------------------------------------------------------*
*&      Form  ALVSHOW
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM ALVSHOW.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM = W_REPID
      IS_LAYOUT          = LAYOUT
      I_GRID_TITLE       = 'ALV PERPOST TEST'
      IT_FIELDCAT        = FIELDCAT[]
    TABLES
      T_OUTTAB           = LSPFLI
    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.
ENDFORM.                    "ALVSHOW

ALV程序设计的更多相关文章

  1. ABAP OO与ALV结合方式探索(1)

    用OO来开发,尤其是在复杂业务的开发过程中 从程序设计的角度而言,应该更简单一点 而ALV是二次开发中登场很高的一个控件 最近做了一些尝试,探索OO的代码和ALV的结合使用   使用控件型的ALV A ...

  2. HTML5 程序设计 - 使用HTML5 Canvas API

    请你跟着本篇示例代码实现每个示例,30分钟后,你会高喊:“HTML5 Canvas?!在哥面前,那都不是事儿!” 呵呵.不要被滚动条吓到,很多都是代码和图片.我没有分开写,不过上面给大家提供了目录,方 ...

  3. 解析大型.NET ERP系统 单据标准(新增,修改,删除,复制,打印)功能程序设计

    ERP系统的单据具备标准的功能,这里的单据可翻译为Bill,Document,Entry,具备相似的工具条操作界面.通过设计可复用的基类,子类只需要继承基类窗体即可完成单据功能的程序设计.先看标准的销 ...

  4. java基础学习03(java基础程序设计)

    java基础程序设计 一.完成的目标 1. 掌握java中的数据类型划分 2. 8种基本数据类型的使用及数据类型转换 3. 位运算.运算符.表达式 4. 判断.循环语句的使用 5. break和con ...

  5. CWMP开源代码研究5——CWMP程序设计思想

    声明:本文涉及的开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅号:408797506) 本文介绍自己用过的ACS,其中包括开源版(提供下载包)和商业版(仅提供安装包下载 ...

  6. 《JavaScript高级程序设计(第3版)》笔记-序

    很少看书,不喜欢看书,主要是上学时总坐不住,没有多大定性,一本书可以两天看完,随便翻翻,也可以丢在角落里几个月不去动一下. 上次碰到了<JavaScript高级程序设计(第3版)>感觉真的 ...

  7. 《JavaScript高级程序设计(第3版)》阅读总结记录第一章之JavaScript简介

    前言: 为什么会想到把<JavaScript 高级程序设计(第 3 版)>总结记录呢,之前写过一篇博客,研究的轮播效果,后来又去看了<JavaScript 高级程序设计(第3版)&g ...

  8. 【实战Java高并发程序设计 7】让线程之间互相帮助--SynchronousQueue的实现

    [实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference [实战Java高并发程序设计 3]带有时间戳的对象 ...

  9. 【实战Java高并发程序设计6】挑战无锁算法:无锁的Vector实现

    [实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference [实战Java高并发程序设计 3]带有时间戳的对象 ...

随机推荐

  1. Python基础编程:字符编码、数据类型、列表

    目录: python简介 字符编码介绍 数据类型 一.Python简介 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心 ...

  2. Lua语言基本语法~运算符

    Lua 变量 变量在使用前,必须在代码中进行声明,即创建该变量. 编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值. Lua 变量有三种类型:全局变量.局部变量.表中的域. ...

  3. 小程序UI设计(5)-符合视觉规范-按钮视觉规范

    在设计工具中,根据规范我们定义了大中小三种按钮的尺寸大:720rpx *94rpx 圆角10px 字体18中:360rpx*70rpx 圆角8px 字体16 文字距离两边最小60小:120rpx*60 ...

  4. C++的一些黑暗料理

    本文中的“黑暗料理”仅限本人在学习C++的过程中感觉易忘.有趣.不为大多数人所知的一些特性. 1. C++中int型数据在VC++环境下最小值为什么是 -32678,而不是-32677,其中涉及到原码 ...

  5. magento简化url多级分类去掉父目录

    在Magento模板开发中,有时候需要将多级分类的url简化,Magento的URL默认是显示多级分类的http://afish.cnblogs.com/分类1/分类2/分类3现在需要简化为:分类2的 ...

  6. adb简介

    Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信.adb 命令便于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令 ...

  7. VMware Horizon Client剪贴板异常问题解决

    接到用户反馈现象是:登录ERP系统操作是,无法复制粘贴本地电脑上的数据. 处理过程: 1.在域控服务器上建立独立的Horizon Computer OU,把所有RDS加入在改OU中 2.针对Horiz ...

  8. 【洛谷P4173】残缺的字符串

    题目大意:给定一个文本串和一个模板串,串中含有通配符,求文本串中有多少个位置可以与文本串完全匹配. 题解:利用卷积求解字符串匹配问题. 通配符字符串匹配的数值表示为 \[\sum\limits_{i ...

  9. Fiddler debug 拦截文件

    前言 前端每次本地调试的需要重新build文件,而且如果当前文件是在另外一个项目中使用,则还需要拷贝到另外一个项目下面.这个工作很耗时.如果使用替换包,可以节省很多时间,也便于开发. 解决方案 用Fi ...

  10. 模态框 modal.js

    模态框经过了优化,更加灵活,以弹出对话框的形式出现,具有最小和最实用的功能集. 不支持模态框重叠 千万不要在一个模态框上重叠另一个模态框.要想同时支持多个模态框,需要自己写额外的代码来实现. 模态框的 ...