ALV程序设计
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程序设计的更多相关文章
- ABAP OO与ALV结合方式探索(1)
用OO来开发,尤其是在复杂业务的开发过程中 从程序设计的角度而言,应该更简单一点 而ALV是二次开发中登场很高的一个控件 最近做了一些尝试,探索OO的代码和ALV的结合使用 使用控件型的ALV A ...
- HTML5 程序设计 - 使用HTML5 Canvas API
请你跟着本篇示例代码实现每个示例,30分钟后,你会高喊:“HTML5 Canvas?!在哥面前,那都不是事儿!” 呵呵.不要被滚动条吓到,很多都是代码和图片.我没有分开写,不过上面给大家提供了目录,方 ...
- 解析大型.NET ERP系统 单据标准(新增,修改,删除,复制,打印)功能程序设计
ERP系统的单据具备标准的功能,这里的单据可翻译为Bill,Document,Entry,具备相似的工具条操作界面.通过设计可复用的基类,子类只需要继承基类窗体即可完成单据功能的程序设计.先看标准的销 ...
- java基础学习03(java基础程序设计)
java基础程序设计 一.完成的目标 1. 掌握java中的数据类型划分 2. 8种基本数据类型的使用及数据类型转换 3. 位运算.运算符.表达式 4. 判断.循环语句的使用 5. break和con ...
- CWMP开源代码研究5——CWMP程序设计思想
声明:本文涉及的开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅号:408797506) 本文介绍自己用过的ACS,其中包括开源版(提供下载包)和商业版(仅提供安装包下载 ...
- 《JavaScript高级程序设计(第3版)》笔记-序
很少看书,不喜欢看书,主要是上学时总坐不住,没有多大定性,一本书可以两天看完,随便翻翻,也可以丢在角落里几个月不去动一下. 上次碰到了<JavaScript高级程序设计(第3版)>感觉真的 ...
- 《JavaScript高级程序设计(第3版)》阅读总结记录第一章之JavaScript简介
前言: 为什么会想到把<JavaScript 高级程序设计(第 3 版)>总结记录呢,之前写过一篇博客,研究的轮播效果,后来又去看了<JavaScript 高级程序设计(第3版)&g ...
- 【实战Java高并发程序设计 7】让线程之间互相帮助--SynchronousQueue的实现
[实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference [实战Java高并发程序设计 3]带有时间戳的对象 ...
- 【实战Java高并发程序设计6】挑战无锁算法:无锁的Vector实现
[实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference [实战Java高并发程序设计 3]带有时间戳的对象 ...
随机推荐
- JMeter元件之Test Fragment
简介 JMeter中的Test Fragment,是控制器上一个种特殊的线程组,它在测试树上与线程组处于同一层级.但使用时需要和include Controller或者Module Controlle ...
- 借助Charles来测试移动端-下篇
本篇是借助Charles来测试移动端的下半篇.(上篇任意门点我) 上次说到可以借助Charles来抓移动端的网络请求,接下来,我们来看一下怎么通过Charles来模拟返回,还是以网页版豆瓣为例. 先找 ...
- PAT Basic 1004 成绩排名 (20 分)
读入 n(>)名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式: 每个测试输入包含 1 个测试用例,格式为 第 1 行:正整数 n 第 2 行:第 1 个学生的姓 ...
- Python time、datetime、os、random、sys、hashlib、json、shutil、logging、paramiko、subprocess、ConfigParser、xml、shelve模块的使用
文章目录: 1. time & datetime模块 2. os模块 3. random模块 4. sys模块 5. hashlib模块 6. json模块 7. shutil模块 8. lo ...
- mongdb的优势和不足
l 面向文档的数据库. l 一个介于关系型数据库和非关系型数据库之间的产品,是非关系系数据库中功能最丰富,最像关系型数据库的. l 特征是模式自由,schema-free.无需定义表结构. l ...
- vue设置全局query参数
router.beforeEach((to, from, next) => { // 设置全局店铺ID shopid const shopid = from.query.shopid // 如果 ...
- Bash快捷操作
编辑命令 Ctrl + a :移到命令行首 Ctrl + e :移到命令行尾 Ctrl + f :按字符前移(右向) Ctrl + b :按字符后移(左向) Alt + f :按单词前移(右向) Al ...
- 动软代码生成器生成model
model <#@ template language="c#" HostSpecific="True" #> <#@ output exte ...
- Hangfire:任务定时调度
hangfire 资源: GitHub:https://github.com/HangfireIO/Hangfire http://hangfire.io/ http://docs.hangfire. ...
- spark 任务导致tmp目录过大
现象:hdp的集群没有配置spak的临时本地目录,默认在跑程序的时候会将中间过程的文件存放在本地的/tmp目录下 如果跑的spark数据量过大,就会导致/tmp下文件过大,最终导致根分区被占满,系统崩 ...