ALV报表——基础(一)
目录
一、ALV简介
The ALV Grid Control (ALV = SAP List Viewer)是一个显示列表的灵活的工具,它提供了基本功能的列表操作,也可以通过自定义来进行增强,因此可以允许你可以在大型的应用程序中使用。在SAP的开发项目中,ALV GRID也可以作为修改和创建数据的一种工具。它包括3大部分,工具栏,标题,用于显示数据的网格控制器.如果有必要,用户可以隐藏标题和工具栏。
二、程序实现
2.1、实现步骤
①定义ALV所需要用到的类型池:TYPE-POOLS:SLIS.
②定义ALV所要显示的数据对应的内表数据类型及内表数据对象
③定义一些显示ALV时所需要使用的变量
④定义选择屏幕
⑤声明各个选择屏幕事件块
2.2、代码示例
- REPORT ZMMRTEST.
- *****************************TABLES
- TABLES:marc.
- *****************************Data Definitions
- *定义ALV所要显示的数据对应的内表数据类型及内表数据对象
- TYPES: BEGIN OF ty_data,
- matnr LIKE mara-matnr, "物料號碼
- maktx LIKE makt-maktx, "物料说明
- groes LIKE mara-groes, "规格
- END OF ty_data.
- DATA: gt_data TYPE TABLE OF ty_data,
- gt_makt LIKE TABLE OF makt,
- wa_data LIKE LINE OF gt_data,
- wa_makt LIKE LINE OF gt_makt.
- *定义一些显示ALV时所需要使用的变量
- *定义ALV所需要用到的类型池
- TYPE-POOLS slis.
- "定义和LAYOUT和FIELDCAT
- DATA: gs_layout TYPE slis_layout_alv,
- gt_fieldcat TYPE slis_t_fieldcat_alv,
- wa_fieldcat TYPE slis_fieldcat_alv.
- *****************************Selection Screen
- *定义选择屏幕
- PARAMETERS: p_werks LIKE marc-werks DEFAULT '' OBLIGATORY.
- SELECT-OPTIONS: s_matnr FOR marc-matnr.
- *****************************Main Process
- *声明各个选择屏幕事件块
- START-OF-SELECTION.
- PERFORM get_data.
- PERFORM display_data.
- END-OF-SELECTION.
- *&---------------------------------------------------------------------*
- *& Form GET_DATA
- *&---------------------------------------------------------------------*
- FORM get_data .
- DATA: l_index LIKE sy-tabix.
- SELECT marc~matnr mara~groes
- INTO CORRESPONDING FIELDS OF TABLE gt_data
- FROM marc
- INNER JOIN mara ON marc~matnr EQ mara~matnr
- WHERE marc~matnr IN s_matnr
- AND marc~werks EQ p_werks.
- SELECT * INTO TABLE gt_makt
- FROM makt
- WHERE matnr IN s_matnr
- AND spras = sy-langu.
- SORT gt_data BY matnr.
- SORT gt_makt BY matnr.
- SORT: gt_data BY matnr,
- gt_makt BY matnr.
- LOOP AT gt_data INTO wa_data.
- l_index = sy-tabix.
- READ TABLE gt_makt INTO wa_makt WITH KEY matnr = wa_data-matnr
- BINARY SEARCH.
- IF sy-subrc = .
- wa_data-maktx = wa_makt-maktx.
- ENDIF.
- MODIFY gt_data FROM wa_data INDEX l_index.
- ENDLOOP.
- ENDFORM. " GET_DATA
- *&---------------------------------------------------------------------*
- *& Form DISPLAY_DATA
- *&---------------------------------------------------------------------*
- FORM display_data.
- "栏位最适宽度
- gs_layout-colwidth_optimize = 'X'.
- PERFORM set_fieldcat.
- CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
- EXPORTING
- i_callback_program = sy-repid
- is_layout = gs_layout
- it_fieldcat = gt_fieldcat[]
- * i_callback_pf_status_set = 'alv_pf_status' " 触发事件调用子程序
- * i_callback_user_command = 'alv_user_command' " 鼠标事件操作子程序
- i_save = 'A'
- TABLES
- t_outtab = gt_data
- EXCEPTIONS
- program_error =
- OTHERS = .
- ENDFORM. " DISPLAY_DATA
- *&---------------------------------------------------------------------*
- *& Form SET_FIELDCAT
- *&---------------------------------------------------------------------*
- FORM set_fieldcat.
- DEFINE fieldcat.
- wa_fieldcat-fieldname = &. "对应内表字段名
- wa_fieldcat-seltext_l = &. "输出列文本
- APPEND wa_fieldcat TO gt_fieldcat.CLEAR wa_fieldcat.
- END-OF-DEFINITION.
- fieldcat 'MATNR' '物料'.
- fieldcat 'MAKTX' '物料说明'.
- fieldcat 'GROES' '规格'.
- ENDFORM. " SET_FIELDCAT
运行效果:
三、Layout、Fieldcat相关属性
3.1、Layout相关属性:主要用于设定 ALV 的输出格式,为 ALV 输出的可选项
①公共部分
字段名称 | 描述 | 输入值 | 备注 |
no_colhead(1) | 不显示标题 | X-不显示,space-显示 | |
no_hotspot(1) | 标题不设热点 | X-没有,space-有 | |
zebra(1) | 使ALV表格按斑马线间隔条码方式显示 | X-有,space-没有 | |
no_vline(1) | 设置列间竖线 | X-不显示,space-显示 | |
no_hline(1) | 设置行间隔线 | X-不显示,space-显示 | |
cell_merge(1) | 设置是否压域复制 | X-可复制,space-不可复制 | |
edit(1) | 设置所有单元格可编辑 | X-可编辑,space-不可编辑 | |
edit_mode(1) | 编辑模式 | ||
numc_sum(1) | 设置仅NUMC类型字段进行总计 | X-仅Numc类型,space-不仅Numc类型 | |
no_input(1) | 不允许输入,用于显示状态 | X-不允许,space-允许 | |
f2code | 设置触发弹出详细信息窗口的功能码 | sy-ucomm '&ETA' – 双击 | |
no_keyfix (1) | 关键字不固定,可以随滚动条滚动 | X-不固定,space-固定 | |
expand_all (1) | 展开所有的node | ||
no_author (1) | 设置是否需要系统标准权限检查 | X-不需要,space-需要 |
②ALV菜单栏
字段名称 | 描述 | 输入值 | 备注 |
def_status (1) | 默认菜单状态 | A显示,space不显示 | 'A' – 为显示所有标准菜单 |
item_text (20) | 菜单按钮文本 | ||
countfname (1) | lvc_fname |
③显示选项
字段名称 | 描述 | 输入值 | 备注 |
colwidth_optimize(1) | 优化列宽设置 | X-优化 | 默认:space |
no_min_linesize(1) | 设置不允许最小宽度 | X-不允许,space-允许 | 默认:space |
min_linesize | ALV列表的最小宽度 | sy-linsz,取值10到250 | 可选参数 |
max_linesize | ALV列表的最大宽度 | sy-linsz,可取值80-1020 | 默认值250 |
window_titlebar | 窗口标题 | sy-title | |
no_uline_hs(1) | 输出ALV表不显示水平格线 | X-不显示,space-显示 |
④红路灯显示异常
字段名称 | 描述 | 输入值 | 备注 |
lights_fieldname | 输出内表中定义的字段名,该字段用来显示状态灯 | 1:red,2:yellow,3:green | |
lights_tabname | 输出字段的参考内表名称 | ||
lights_rollname | 数据元素的名称,在灯字段按F1触发 | ||
lights_condense | 对输出的内表分类汇总的时候,小计行显示状态灯 | x |
⑤汇总合计
字段名称 | 描述 | 输入值 | 备注 |
no_sumchoice (1) | 不能进行选择总计 | ||
no_totalline (1) | 不能总计,但可以小计 | ||
no_subchoice (1) | 不能选择小计,但可以总计 | ||
no_subtotals (1) | 不能小计,但可以总计 | ||
no_unit_splitting | 有单位字段,不进行总计 | ||
totals_before_items | 总行将会显示在最前面 | ||
totals_only (1) | 仅显示合计 | ||
totals_text (60) | 合计,第一列显示的文本 | ||
subtotals_text (60) | 总计和小计行,第一列显示的文本 |
⑥交互
字段名称 | 描述 | 输入值 | 备注 |
box_fieldname | 设置ALV表格是否显示选择按钮栏位 | ||
box_tabname | box_fieldname 参考内表名称 | ||
box_rollname | 下拉框按钮名称 | ||
expand_fieldname | '展开'字段名称 | ||
hotspot_fieldname | 热点字段 | ||
confirmation_prompt | 退出ALV列表的确认对话框 | ||
key_hotspot (1) | 关键字段作为热点 | ||
flexible_key (1) | 关键字段可以移动 | ||
group_buttons (1) | COL1 – COL5 按钮组 | ||
get_selinfos (1) | 获取选择屏幕 | ||
group_change_edit (1) | 设置用户新的按钮组 | ||
no_scrolling(1) | 滚动条无效,清单不随其滚动 | 仅list_alv有效 |
⑦明细窗口
字段名称 | 描述 | 输入值 | 备注 |
detail_popup (1) | 行项目明细弹窗形式 | X-显示,space-不显示 | 对list_alv有效 |
detail_initial_lines(1) | 明细中同时显示初始化行 | X-同时显示,space-不显示 | |
detail_titlebar | 明细窗口标题文本 | sy-title |
⑧显示变式
字段名称 | 描述 | 输入值 | 备注 |
header_text | 表头按钮 | ||
default_item (1) | 列表明细作为默认值 | X-激活,space-不激活 |
⑨颜色
字段名称 | 描述 | 输入值 | 备注 |
info_fieldname | 用于设置ALV输出报表每一行的颜色,其参数为输出内表的栏位名称 | C000~C999 | 倘若其数据输出内表名为LT_OUT,则需要在改内表增加一个栏位“COLOR”,并为内表每行赋值,LT_OUT-COLOR = ‘C500’ |
coltab_fieldname | 颜色值 |
⑩其他
字段名称 | 描述 | 输入值 | 备注 |
list_append | 设置是否Call屏幕 | ||
xifunckey | eXtended interaction(SAPQuery) | ||
xidirect | eXtended INTeraction(SAPQuery) | ||
dtc_layout | 设置Tabstip的布局格式配置 | DTC_S_LAYO | |
allow_switch_to_list | 设置从Grid模式转换为List模式 |
3.2、Fieldcat相关属性:主要用于ALV的结构定义,包括具体的栏位及名称、类型、格式等属性,为 ALV 输出的必选项
字段名称 | 描述 | 输入值 | 备注 |
row_pos | 输出行位置 | 1…n | |
col_pos | 输出列位置 | 1…n | |
fieldname | 字段名称 | ||
tabname | fieldname字段对应的内表名称 | ||
currency | 货币单位 | ||
cfieldname | 当前输出内表中的货币单位字段的字段名称 | ||
ctabname | Cfieldname字段值对应的内表名称 | ||
ifieldname | |||
quantity | 计量单位 | ||
qfieldname | 参考计量单位的字段名称 | ||
qtabname | Qfieldname 对应的输出内表名 | ||
round | 四舍五入保留位数 | ||
exponent | 流动表示的指数 | ||
key(1) | 将栏位设置为Key值 | ||
icon(1) | 将定义栏位以ICON的形式显示 | ||
symbol(1) | 作为Symbol符号输出,在ALV输出内表中的字段值可以是ABAP名称 | ||
checkbox(1) | 作为复选框输出 | (R)Right (L)Left (C)Center | |
just(1) | 定义栏位对齐方式 | ||
lzero(1) | 输出前置零 | ||
no_sign(1) | 不输出正负号+、- | ||
no_zero(1) | 如果取值为零,则为空,既不输出零 | ||
no_convext(1) | |||
edit_mask | 输出编辑掩码, 同write语句中的edit mas格式是一样的 | 一般用来格式化时间和日期等 | |
emphasize(4) | 设置栏位的颜色 | ||
fix_column(1) | 固定列 | ||
do_sum(1) | 对当前列输出时自动求和 | ||
no_out(1) | 当前列隐藏输出 | ||
tech(1) | 技术字段,设置’X’后,该字段不会显示,也不能输出,如同MANDT字段一样的效果 | ||
outputlen | 列的字符宽度 | ||
offset | 偏移量 | ||
seltext_l / scrtext_l | 长文本 | ||
seltext_m / scrtext_m | 中文本 | ||
seltext_s / scrtext_s | 短文本 | ||
ddictxt(1) | 列标题描述格式 | (S)hort (M)iddle (L)ong | |
rollname | |||
datatype | 数据类型 | ||
inttype | 整型 | ||
intlen | 整型长度 | ||
lowercase | 是否允许小写字母 | ||
decfloat_style | 浮点格式 | ||
ref_fieldname | 参考字段名称,配合ref_tabname一起使用,一般用来使单元格生成F4帮助 | ||
ref_tabname | 参考表名称,配合ref_fieldname使用 | ||
roundfieldname | 四舍五入字段名称 | ||
roundtabname | 四舍五入内表名称 | ||
decimalsfieldname | 小数点字段名称 | ||
decimalstabname | 小数点内表名称 | ||
decimals_out(6) | 控制小数点的位数 | ||
text_fieldname | 文本字段名称 | ||
reptext_ddic | 与数据元素的主标题类似 | ||
ddic_outputlen | 数据字典输出长度 | ||
key_sel(1) | 这个参数只和设置了Key的字段相关,和Key一起使用,可以交互式的隐藏设置为Key的字段(alv_list有效) | ||
no_sum(1) | 不自动汇总 | ||
sp_group(4) | 分组需求 | ||
reprep(1) | selection for rep/rep | ||
input(1) | 输入 | ||
edit(1) | 编辑 | ||
hotspot(1) | 设置栏位是否有热点(热点栏位显示有下划线) |
3.3、ALV输出函数:使用ALV输出,可以直接参考数据字典中的现有透明表,也可以自定义Fieldcat来输出字段;
如若使用数据字典中的透明表或视图时,需要调用REUSE_ALV_FIELDCATALOG_MERGE函数来对相应的Fieldcat 进行匹配;
另外,必须保证该结构或内表中的每个字段都参考数据字典中的Data Element,否则无法获取字段的相关信息.
ALV报表——基础(一)的更多相关文章
- ALV报表——点击事件(二)
目录 一.ALV点击事件(双击) 一.ALV点击事件(双击) 代码: *Report ZRFI001_XFL_TEST REPORT ZRFI001_XFL_TEST . *定义ALV所需要用到的类型 ...
- WinForm中使用CrystalReport水晶报表——基础,分组统计,自定义数据源
开篇 本篇文章主要是帮助刚开始接触CrystalReport报表的新手提供一个循序渐进的教程.该教程主要分为三个部分1)CrystalReport的基本使用方法:2)使用CrystalReport对数 ...
- ALV报表——发送Excel报表邮件
ABAP发送报表邮件 运行效果: 代码: *&---------------------------------------------------------------------* *& ...
- ALV报表——选择屏幕选项卡
ALV选择屏幕选项卡 运行效果: 代码: *&--------------------------------------------------------------------* *&a ...
- ALV报表——表头实现
ABAP实现ALV表头的DEMO: 运行效果: 代码: *********************************************************************** ...
- ALV报表——ALV颜色设置(三)
目录 一.行 二.列 三.单元格 四.附ALV的颜色代码 一.行:用Layout相关属性设置 代码: *Report ZRFI001_XFL_TEST REPORT ZRFI001_XFL_TEST ...
- ALV报表——抓取工单长文
ABAP抓取工单长文 运行效果: 代码: *&---------------------------------------------------------------------* *& ...
- ALV报表——选择屏幕变量赋值
ABAP选择屏幕变量赋值 运行效果: 代码: *&---------------------------------------------------------------------* ...
- ALV详解:OO SALV
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
随机推荐
- Python多线程与多进程详解
进程,线程,协程https://blog.csdn.net/qq_23926575/article/details/76375337 多进程 https://www.cnblogs.com/lipij ...
- 10个超漂亮的CSS 3D特效
10个超漂亮的CSS 3D特效 一.总结 一句话总结: 后面有空得好好练一练,也可以作为录课素材 二.10个超漂亮的CSS 3D特效 转自或参考:10个超漂亮的CSS 3D特效https://blog ...
- session设置存活时间的三种方式
在web容器中设置(此处以tomcat为例)在tomcat-5.0.28\conf\web.xml中设置,以下是tomcat 5.0中的默认配置: [html] view plain copy < ...
- python : takes 0 positional arguments but 1 was given
def 的要加self, https://blog.csdn.net/u010269790/article/details/78834410
- docker 安装redis 并配置外网可以访问
1, docker 拉去最新版本的redis docker pull redis #后面可以带上tag号, 默认拉取最新版本 2, docker安装redis container 安装之前去定义我们的 ...
- MAC下快速打开指定目录(转)
使用了这么长时间MAC,打开文件查找目录总是感觉还是不如windows来的爽快 1.通过快捷键搜索 command + 空格,输入关键词 2.通过控制台打开 1) 跳转到指定路径 cd ...
- MWC飞控增加声纳定高的方法(转)
源: MWC飞控增加声纳定高的方法
- SQLite数据库数据类型详解
数据类型 类型 描 述 bit 整型 bit 数据类型是整型,其值只能是0.1或空值.这种数据类型用于存储只有两种可能值的数据,如Yes 或No.True 或Fa lse .O ...
- android多图选择器 图片/视频 单选or多选,以及视频录制。
PictureSelector 最近项目中用到多图选择上传的需求,考虑到android机型众多问题就自己花时间写了一个,测试了大概60款机型,出现过一些问题也都一一修复了,基本上稳定了特分享出来,界面 ...
- .Net MVC 下载网站的文件
目录 前言 C#文件的下载 ajax 返回文件路径,使用window.open打开 前言 上传文件我使用的是Bootstrap的插件FileInput,这个抽时间看看写个博客 现在下载我遇到坑了,而这 ...