目录

    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、代码示例

  1. REPORT ZMMRTEST.
  2.  
  3. *****************************TABLES
  4. TABLES:marc.
  5.  
  6. *****************************Data Definitions
  7. *定义ALV所要显示的数据对应的内表数据类型及内表数据对象
  8. TYPES: BEGIN OF ty_data,
  9. matnr LIKE mara-matnr, "物料號碼
  10. maktx LIKE makt-maktx, "物料说明
  11. groes LIKE mara-groes, "规格
  12. END OF ty_data.
  13.  
  14. DATA: gt_data TYPE TABLE OF ty_data,
  15. gt_makt LIKE TABLE OF makt,
  16. wa_data LIKE LINE OF gt_data,
  17. wa_makt LIKE LINE OF gt_makt.
  18.  
  19. *定义一些显示ALV时所需要使用的变量
  20.  
  21. *定义ALV所需要用到的类型池
  22. TYPE-POOLS slis.
  23. "定义和LAYOUTFIELDCAT
  24. DATA: gs_layout TYPE slis_layout_alv,
  25. gt_fieldcat TYPE slis_t_fieldcat_alv,
  26. wa_fieldcat TYPE slis_fieldcat_alv.
  27.  
  28. *****************************Selection Screen
  29. *定义选择屏幕
  30. PARAMETERS: p_werks LIKE marc-werks DEFAULT '' OBLIGATORY.
  31. SELECT-OPTIONS: s_matnr FOR marc-matnr.
  32.  
  33. *****************************Main Process
  34. *声明各个选择屏幕事件块
  35. START-OF-SELECTION.
  36. PERFORM get_data.
  37. PERFORM display_data.
  38. END-OF-SELECTION.
  39.  
  40. *&---------------------------------------------------------------------*
  41. *& Form GET_DATA
  42. *&---------------------------------------------------------------------*
  43. FORM get_data .
  44.  
  45. DATA: l_index LIKE sy-tabix.
  46.  
  47. SELECT marc~matnr mara~groes
  48. INTO CORRESPONDING FIELDS OF TABLE gt_data
  49. FROM marc
  50. INNER JOIN mara ON marc~matnr EQ mara~matnr
  51. WHERE marc~matnr IN s_matnr
  52. AND marc~werks EQ p_werks.
  53.  
  54. SELECT * INTO TABLE gt_makt
  55. FROM makt
  56. WHERE matnr IN s_matnr
  57. AND spras = sy-langu.
  58.  
  59. SORT gt_data BY matnr.
  60. SORT gt_makt BY matnr.
  61.  
  62. SORT: gt_data BY matnr,
  63. gt_makt BY matnr.
  64.  
  65. LOOP AT gt_data INTO wa_data.
  66. l_index = sy-tabix.
  67.  
  68. READ TABLE gt_makt INTO wa_makt WITH KEY matnr = wa_data-matnr
  69. BINARY SEARCH.
  70. IF sy-subrc = .
  71. wa_data-maktx = wa_makt-maktx.
  72. ENDIF.
  73.  
  74. MODIFY gt_data FROM wa_data INDEX l_index.
  75. ENDLOOP.
  76. ENDFORM. " GET_DATA
  77.  
  78. *&---------------------------------------------------------------------*
  79. *& Form DISPLAY_DATA
  80. *&---------------------------------------------------------------------*
  81. FORM display_data.
  82.  
  83. "栏位最适宽度
  84. gs_layout-colwidth_optimize = 'X'.
  85.  
  86. PERFORM set_fieldcat.
  87.  
  88. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  89. EXPORTING
  90. i_callback_program = sy-repid
  91. is_layout = gs_layout
  92. it_fieldcat = gt_fieldcat[]
  93. * i_callback_pf_status_set = 'alv_pf_status' " 触发事件调用子程序
  94. * i_callback_user_command = 'alv_user_command' " 鼠标事件操作子程序
  95. i_save = 'A'
  96. TABLES
  97. t_outtab = gt_data
  98. EXCEPTIONS
  99. program_error =
  100. OTHERS = .
  101.  
  102. ENDFORM. " DISPLAY_DATA
  103.  
  104. *&---------------------------------------------------------------------*
  105. *& Form SET_FIELDCAT
  106. *&---------------------------------------------------------------------*
  107. FORM set_fieldcat.
  108.  
  109. DEFINE fieldcat.
  110. wa_fieldcat-fieldname = &. "对应内表字段名
  111. wa_fieldcat-seltext_l = &. "输出列文本
  112. APPEND wa_fieldcat TO gt_fieldcat.CLEAR wa_fieldcat.
  113. END-OF-DEFINITION.
  114.  
  115. fieldcat 'MATNR' '物料'.
  116. fieldcat 'MAKTX' '物料说明'.
  117. fieldcat 'GROES' '规格'.
  118.  
  119. 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. Python多线程与多进程详解

    进程,线程,协程https://blog.csdn.net/qq_23926575/article/details/76375337 多进程 https://www.cnblogs.com/lipij ...

  2. 10个超漂亮的CSS 3D特效

    10个超漂亮的CSS 3D特效 一.总结 一句话总结: 后面有空得好好练一练,也可以作为录课素材 二.10个超漂亮的CSS 3D特效 转自或参考:10个超漂亮的CSS 3D特效https://blog ...

  3. session设置存活时间的三种方式

    在web容器中设置(此处以tomcat为例)在tomcat-5.0.28\conf\web.xml中设置,以下是tomcat 5.0中的默认配置: [html] view plain copy < ...

  4. python : takes 0 positional arguments but 1 was given

    def 的要加self, https://blog.csdn.net/u010269790/article/details/78834410

  5. docker 安装redis 并配置外网可以访问

    1, docker 拉去最新版本的redis docker pull redis #后面可以带上tag号, 默认拉取最新版本 2, docker安装redis container 安装之前去定义我们的 ...

  6. MAC下快速打开指定目录(转)

    使用了这么长时间MAC,打开文件查找目录总是感觉还是不如windows来的爽快 1.通过快捷键搜索   command + 空格,输入关键词 2.通过控制台打开    1) 跳转到指定路径  cd  ...

  7. MWC飞控增加声纳定高的方法(转)

    源: MWC飞控增加声纳定高的方法

  8. SQLite数据库数据类型详解

    数据类型 类型 描             述 bit 整型 bit 数据类型是整型,其值只能是0.1或空值.这种数据类型用于存储只有两种可能值的数据,如Yes 或No.True 或Fa lse .O ...

  9. android多图选择器 图片/视频 单选or多选,以及视频录制。

    PictureSelector 最近项目中用到多图选择上传的需求,考虑到android机型众多问题就自己花时间写了一个,测试了大概60款机型,出现过一些问题也都一一修复了,基本上稳定了特分享出来,界面 ...

  10. .Net MVC 下载网站的文件

    目录 前言 C#文件的下载 ajax 返回文件路径,使用window.open打开 前言 上传文件我使用的是Bootstrap的插件FileInput,这个抽时间看看写个博客 现在下载我遇到坑了,而这 ...