目录

    2.1、实现步骤

    2.2、代码示例

3.1、Layout相关属性

3.2、Fieldcat相关属性 

3.3、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报表——基础(一)的更多相关文章

  1. ALV报表——点击事件(二)

    目录 一.ALV点击事件(双击) 一.ALV点击事件(双击) 代码: *Report ZRFI001_XFL_TEST REPORT ZRFI001_XFL_TEST . *定义ALV所需要用到的类型 ...

  2. WinForm中使用CrystalReport水晶报表——基础,分组统计,自定义数据源

    开篇 本篇文章主要是帮助刚开始接触CrystalReport报表的新手提供一个循序渐进的教程.该教程主要分为三个部分1)CrystalReport的基本使用方法:2)使用CrystalReport对数 ...

  3. ALV报表——发送Excel报表邮件

    ABAP发送报表邮件 运行效果: 代码: *&---------------------------------------------------------------------* *& ...

  4. ALV报表——选择屏幕选项卡

    ALV选择屏幕选项卡 运行效果: 代码: *&--------------------------------------------------------------------* *&a ...

  5. ALV报表——表头实现

    ABAP实现ALV表头的DEMO: 运行效果: 代码: *********************************************************************** ...

  6. ALV报表——ALV颜色设置(三)

    目录 一.行 二.列 三.单元格 四.附ALV的颜色代码 一.行:用Layout相关属性设置 代码: *Report ZRFI001_XFL_TEST REPORT ZRFI001_XFL_TEST ...

  7. ALV报表——抓取工单长文

    ABAP抓取工单长文 运行效果: 代码: *&---------------------------------------------------------------------* *& ...

  8. ALV报表——选择屏幕变量赋值

    ABAP选择屏幕变量赋值 运行效果: 代码: *&---------------------------------------------------------------------* ...

  9. ALV详解:OO SALV

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

随机推荐

  1. 类别不平衡问题之SMOTE算法(Python imblearn极简实现)

    类别不平衡问题类别不平衡问题,顾名思义,即数据集中存在某一类样本,其数量远多于或远少于其他类样本,从而导致一些机器学习模型失效的问题.例如逻辑回归即不适合处理类别不平衡问题,例如逻辑回归在欺诈检测问题 ...

  2. Java_jdbc 基础笔记之一 数据库连接

    方式一: 1.创建一个Driver实现类的对象 2.准备连接数据库的基本信息:url,user,password 3.调用Driver接口的connect(url,info)获取数据库连接 * Dri ...

  3. 数据包分析中Drop和iDrop的区别

    数据包分析中Drop和iDrop的区别   在数据包分析中,Drop表示因为过滤丢弃的包.为了区分发送和接受环节的过滤丢弃,把Drop又分为iDrop和Drop.其中,iDrop表示接受环节丢弃的包, ...

  4. 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_39、SpringBoot2.x整合redis实战讲解

    笔记 3.SpringBoot2.x整合redis实战讲解 简介:使用springboot-starter整合reids实战 1.官网:https://docs.spring.io/spring-bo ...

  5. 从0开始学爬虫9之requests库的学习之环境搭建

    从0开始学爬虫9之requests库的学习之环境搭建 Requests库的环境搭建 环境:python2.7.9版本 参考文档:http://2.python-requests.org/zh_CN/l ...

  6. ES6深入浅出-6 ES 6 模块-2.babel webpack parcel

    https://babeljs.io/ 复制到命令行执行 提示一个警告.缺少package.json这个文件 npm init -t ls 然后看到了生成了package.json这个文件. 然后再去 ...

  7. 【438】Python 处理文件

    1. 读取文件,计算 tweets 数目 python中readline判断文件读取结束的方法 line == '' python:如何检查一行是否为空行 line == '\n' or line = ...

  8. SAP标准屏幕中字段描述增强

    转自:https://www.cnblogs.com/sap-ronny/p/7921817.html如果想要改变标准屏幕中的字段名称,如把物料主数据基本数据元素的名字改为我们想要的名字 . 1.首先 ...

  9. delphi中我用定时器每隔一段时间执行操作

    delphi中,我用定时器每隔一段时间执行数据库插入及更新工作!adoquery.close;adoquery.sql.cleare;adoquery.connection:=con1;adoquer ...

  10. 什么是 https ?这应该是全网把 https 讲的最好的一篇文章了

    https://blog.csdn.net/m0_37907797/article/details/102759257