ABAP分享六 alv显示的几种方式的简单示例
方法1,也是大家常见的方法通过函数 REUSE_ALV_GRID_DISPLAY
TYPES: BEGIN OF ty_spfli, "定义结构
carrid like spfli-carrid,
connid like spfli-connid,
END OF ty_spfli.
DATA: it_spfli TYPE STANDARD TABLE OF ty_spfli. "定义内表
DATA:
wa_fieldcat TYPE slis_fieldcat_alv , " 相当于工作区
i_fieldcat TYPE slis_t_fieldcat_alv , " 存放输出栏位名称的列表
i_layout TYPE slis_layout_alv . " 负责整个ALV的全局属性
SELECT carrid connid INTO TABLE it_spfli "获取内表数据
FROM spfli
UP TO 10 ROWS.
PERFORM getdata.
PERFORM islayout.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' "调用函数
EXPORTING
I_CALLBACK_PROGRAM = sy-repid
IS_LAYOUT = i_layout
IT_FIELDCAT = i_fieldcat[]
I_SAVE = 'X'
TABLES
t_outtab = it_spfli
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
FORM getdata.
wa_fieldcat-fieldname = 'CARRID'. " 需要输出的内表的字段名
wa_fieldcat-seltext_l = '航班号'. " 字段的描述-长字段标签
wa_fieldcat-seltext_m = '航班号'. " 字段描述-中字段标签
wa_fieldcat-seltext_s = '航班号'. " 字段描述-短字段标签
wa_fieldcat-fix_column = 'X' . " 是否是固定列
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'CONNID'. " 需要输出的内表的字段名
wa_fieldcat-seltext_l = '航班连接号'. " 字段的描述-长字段标签
wa_fieldcat-seltext_m = '航班连接号'. " 字段描述-中字段标签
wa_fieldcat-seltext_s = '航班连接号'. " 字段描述-短字段标签
wa_fieldcat-fix_column = 'X' . " 是否是固定列
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
ENDFORM.
FORM islayout.
i_layout-zebra = 'X' . " 使ALV界面呈现颜色交替
i_layout-colwidth_optimize = 'X' . " 自动优化列宽
i_layout-detail_initial_lines = 'X' . " 是否出现细节屏幕
ENDFORM.
方法2,也是大家常见的方法通过函数 REUSE_ALV_GRID_DISPLAY_LVC 在使用上会比第一种方法功能实现上多些
TYPES: BEGIN OF ty_spfli, "定义结构
carrid like spfli-carrid,
connid like spfli-connid,
END OF ty_spfli.
DATA: it_spfli TYPE STANDARD TABLE OF ty_spfli. "定义内表
DATA:
wa_fieldcat TYPE lvc_s_fcat , " 相当于工作区
i_fieldcat TYPE lvc_t_fcat , " 存放输出栏位名称的列表
i_layout TYPE lvc_s_layo . " 负责整个ALV的全局属性
SELECT carrid connid INTO TABLE it_spfli "获取内表数据
FROM spfli
UP TO 10 ROWS.
PERFORM getdata.
PERFORM islayout.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
I_CALLBACK_PROGRAM = sy-repid
IS_LAYOUT_LVC = i_layout
IT_FIELDCAT_LVC = i_fieldcat[]
I_DEFAULT = 'X'
I_SAVE = 'A'
TABLES
t_outtab = it_spfli
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
FORM getdata.
wa_fieldcat-fieldname = 'CARRID'. " 需要输出的内表的字段名
wa_fieldcat-scrtext_l = '航班号'. " 字段的描述-长字段标签
wa_fieldcat-scrtext_m ='航班号'.
wa_fieldcat-scrtext_s ='航班号'.
wa_fieldcat-fix_column = 'X' . " 是否是固定列
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'CONNID'. " 需要输出的内表的字段名
wa_fieldcat-scrtext_l = '航班连接号'. " 字段的描述-长字段标签
wa_fieldcat-scrtext_m = '航班连接号'.
wa_fieldcat-scrtext_s = '航班连接号'.
wa_fieldcat-fix_column = 'X' . " 是否是固定列
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
ENDFORM.
FORM islayout.
i_layout-zebra = 'X' . " 使ALV界面呈现颜色交替
* i_layout-colwidth_optimize = 'X' . " 自动优化列宽
* i_layout-detail_initial_lines = 'X' . " 是否出现细节屏幕
ENDFORM.
方法3,SALV方法实现ALV展示,是通过静态类的方法实现的。
CLASS lcl_report DEFINITION.
PUBLIC SECTION.
* 定义SALV输出内表
TYPES: BEGIN OF st_spfli,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
distance TYPE spfli-distance,
END OF st_spfli.
DATA: it_spfli TYPE STANDARD TABLE OF st_spfli.
DATA: o_alv TYPE REF TO cl_salv_table.
METHODS:
getdata, "获取数据
genoutput. "生成输出内容
ENDCLASS.
CLASS lcl_report IMPLEMENTATION.
METHOD getdata.
SELECT carrid connid cityfrom cityto distance
INTO TABLE it_spfli
FROM spfli
UP TO 10 rows.
ENDMETHOD.
METHOD genoutput.
DATA: lx_msg TYPE REF TO cx_salv_msg.
TRY .
cl_salv_table=>factory( "此乃固定格式
IMPORTING
r_salv_table = o_alv
CHANGING
t_table = it_spfli
).
CATCH cx_salv_msg INTO lx_msg.
ENDTRY.
o_alv->display( ). "将数据通过ALV方式显示到屏幕
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA: lo_report TYPE REF TO lcl_report.
create OBJECT lo_report.
lo_report->getdata( ). "获取数据
lo_report->genoutput( ). "生成SALV
方法4,面向对象的方法实现ALV展示,是通过静态类的方法实现的(OOALV)。
方法5,dialog屏幕逻辑流显示 (方法4和方法5我会整理完后另外编辑出来)
ABAP分享六 alv显示的几种方式的简单示例的更多相关文章
- ABAP分享三 批量上传数据到内表简单示例
tYPE-POOLS: truxs. DATA: BEGIN OF build, name(10) TYPE c, age(3) TYPE c, sex(2) TYPE c, sp ...
- ABAP分享五 ALV修改单元格并将修改数据更新到数据表中示例1
*下面的代码是在alv字段中修改字段的内容,点击保存后就可以保存数据至数据表. TABLES: spfli. DATA: wa_fieldcat TYPE lvc_s_fcat , " 相 ...
- ABAP分享二 ALV标准范例DEMO汇总
SAP软件针对ALV的使用方法,提供了ALV标准demo程序: sap提供的ALV标准demo程序,只是展示简单的数据,用function ALV即可,若有复杂的增删改查操作 建议使用OO ALV,下 ...
- 【Python】Python figure显示的两种方式
1. 两种方式: 终端输出图像新窗口输出图像 2. 终端输出命令: %matplotlib inline 新窗口输出命令: %matplotlib qt5 注意此两个语句是命令行输入,若在spyder ...
- IDEA实用教程(六)—— 全局设置的两种方式
五. 全局设置的两种方式 在启动界面进入全局设置 在编码界面进入全局设置 本项目配置 上面的这种设置仅对本项目生效,不会对其他项目生效.请特别注意!!!
- 创建TabHost的两种方式的简单分析
最近做了一个TabHost的界面,在做的过程中发现了一些问题,故和大家分享一下. 首先我的界面如下: 目前就我所知,创建TabHost有两种方式,第一种是继承TabActivity类,然后用getTa ...
- Web---创建Servlet的3种方式、简单的用户注册功能
说明: 创建Servlet的方式,在上篇博客中,已经用了方式1(实现Servlet接口),接下来本节讲的是另外2种方式. 上篇博客地址:http://blog.csdn.net/qq_26525215 ...
- Django文件上传三种方式以及简单预览功能
主要内容: 一.文件长传的三种方式 二.简单预览功能实现 一.form表单上传 1.页面代码 <!DOCTYPE html> <html lang="en"> ...
- java web中日期Date类型在页面中格式化显示的三种方式
一般我们经常需要在将服务器端的Date类型,传到页面进行显示,这就涉及到一个如何格式化显示Date类型的问题,一般我们有三种方式进行: 1)在服务端使用SimpleDateFormat等类格式化成字符 ...
随机推荐
- 记一次uboot中gunzip解压速度慢的问题排查
背景 在项目中需要用到解压功能,之前还记录了下,将uboot解压代码移植到另外的bootloader中时,碰到的效率问题.最终查明是cache的配置导致的. https://www.cnblogs.c ...
- 都9012了,Java8中的日期时间API你还没有掌握?
一,Java8日期时间API产生的前因后果 1.1 为什么要重新定义一套日期时间API 操作不方便:java中最初的Date不能直接对指定字段进行加减操作也不支持国际化,后来新增了Calendar,但 ...
- 《手把手教你》系列练习篇之7-python+ selenium自动化测试 -压轴篇(详细教程)
1. 简介 “压轴”原本是戏曲名词,指一场折子戏演出的倒数第二个剧目.在现代社会中有很多应用,比如“压轴戏”,但压轴也是人们知识的一个盲区.“压轴”本意是指倒数第二个节目,而不是人们常说的倒数第一个, ...
- 如何重置IE浏览器
1.退出所有程序,包括 Internet Explorer.单击“开始”.在“开始搜索”框中键入 inetcpl.cpl 命令,然后按回车键打开“Inetnet 选项”对话框. 2.单击“高级”选项卡 ...
- 八大机器学习框架对比及Tensorflow的优势
八大机器学习框架的对比: (1) TensorFlow:深度学习最流行的库之一,是谷歌在深刻总结了其 前身 DistBelief 的经验教训上形成的:它不仅便携.高效.可扩 展,还能再不同计算机上运 ...
- C#语法--委托,架构的血液
委托的定义 什么是委托? 委托实际上是一种类型,是一种引用类型. 微软用delegate关键字来声明委托,delegate与int,string,double等关键字一样.都是声明用的. 下面先看下声 ...
- JGit----将 Git 嵌入你的应用
如果你想在一个 Java 程序中使用 Git ,有一个功能齐全的 Git 库,那就是 JGit . JGit 是一个用 Java 写成的功能相对健全的 Git 的实现,它在 Java 社区中被广泛使用 ...
- 解密国内BAT等大厂前端技术体系-百度篇(长文建议收藏)
1 引言 整个业界在前端框架不断迭代中,也寻找到了许多突破方向,例如跨平台中的RN.Flutter,服务端GraphQL.Serverless,前端和客户端的融合越来越紧密,前端在Node和Elect ...
- Cannot forward after response has been committed问题的解决
Cannot forward after response has been committed问题解决及分析 通过TOMCAT把系统启动,可以正常登陆门户,登陆进去选择子系统的时候点击登陆的时候,可 ...
- 2019牛客全国多校第八场A题 All-one Matrices(单调栈)
题意:让你找最大不可扩展全1子矩阵的数量: 题解:考虑枚举每一行为全1子矩阵的的底,然后从左到右枚举:up[i][j]:表示(i,j)这个位置向上可扩展多少,同时还有记录每个位置(i,j)向左最多可扩 ...