REUSE_ALV_GRID_DISPLAY_LVC详解

ALV开发流程:

1.      将得到并整理好的数据以ALV的形式显示出来       4

1.1.  在子FORM(这里如:F_FIELDS)指定需要显示的字段 4

1.2.  在子FORM(这里如:F_BUILD_LAYOUT)里设置ALV的全局属性        4

1.3.  在子FORM(这里如:F_DISPLAY)里将内表中的数据进行显示   51.4.         为ALV程序添加表头标题(这里以添加HTML表头标题为主)     5

1.4.1.        在显示ALV的函数(REUSE_ALV_GRID_DISPLAY_LVC)里添加一个参数       5

1.4.2.        在子FORM(F_TOP_OF_PAGE)里定义好需要的变量     5

1.4.3.        准备好所需数据,如登录用户的描述、制表日期等       6

1.4.4.        将表头数据输出  6

2.      函数“REUSE_ALV_GRID_DISPLAY_LVC”中输入参数的应用  7

2.1.  排序       7

2.1.1.        在显示ALV的子FORM里定义排序用到的变量        7

2.1.2.        设置好需要排序的字段       8

2.1.3.        在显示ALV的函数的输入参数里添加排序的属性   8

2.2.  隐藏不必要的标准按钮       8

2.2.1.        先在显示ALV的子FORM里定义隐藏按钮用到的变量   8

2.2.2.        得到需要隐藏的标准按钮的“FCODE”   8

2.3.  自定义“工具栏”       9

2.3.1.        在显示ALV的函数的输入参数里指定自定义按钮的子FORM         9

3.      热点链接、用户动作的捕捉、调用其他程序或标准事务程序       11

3.1.        在显示ALV的函数的输入参数里指定捕捉用户动作的子FORM      11

3.2.        在“字段和列名”的子FORM(F_FIELDS)里,对需要链接的列添加“热点”属性   11

3.3.  操作代码       11

3.4.  显示具体细节       12

3.5.  调用其他事务       14

3.6.  打开并选择文件:       14

4.      关于设置字段和列名的子FORM(F_FIELDS)的参数设置: 15

4.1.  单列优化宽度       15

4.2.  单列求和或者取消求和,添加属性  15

4.3.  对其方式       15

4.4.  作为图标输出       16

4.5.  固定列和关键列  16

4.6.  列的字符宽度       16

5.      单元格的F1、F4帮助:      17

5.1.  F1帮助:      17

5.2.  F4帮助:      17

6.      输入并保存、回调修改内表(输入时的小数位错位的问题、指定数据类型、小说位数)       17

7.        界面颜色的更改         18

7.1.  更改单元格(字体)的前景、背景颜色  19

7.2.  更改行的颜色和列的颜色:       19

7.3.  利用设置字段和列名子的FORM(F_FIELDS)里来设置列的颜色 20

8.      ALV自带的最左端复选框按钮和自定义复选框按钮        20

8.1.  ALV自带的复选框按钮:    20

8.2.  自定义复选框按钮       20

9.        按照上传的模板格式导出为本地文件     21

9.1.  定义导出为EXCEL用到的数据变量   21

9.2.  上传模板       21

9.3.        代码       22

10.   为ALV标题添加图片   26

10.1.         上传图片       26

10.2.         在子FORM(F_TOP_OF_PAGE2)里的代码      

 

 

 

 

 

 

 

ALV:ABAP LIST VIEW,一种比较美观的报表显示工具

REUSE_ALV_LIST_DISPLAY

Grid的是Excel单元格的格式,而list不是

REUSE_ALV_GRID_DISPLAY 可以控制某一行 某一列,甚至某一格(CELL)的读写

 

 

ALV用到的函数,目前我们有2个:REUSE_ALV_GRID_DISPLAY、REUSE_ALV_GRID_DISPLAY_LVC;两个函数都可以将数据用ALV的形式显示出来,只是在一些小的地方有些不同。

其中这两个函数都用到的全局变量为:1个类型池SLIS和一个指定列数的变量

DATA: v_pos TYPE i.  " 指定第几列   pos表示列

第1个函数用到的全局变量如下:都是slis类型池中的类型,结尾都是alv(表示他们用于alv)

DATA: wa_fieldcat TYPE slis_fieldcat_alv ,    " 相当于工作区

      i_fieldcat  TYPE slis_t_fieldcat_alv ,  " 存放列名的内表

      i_layout    TYPE slis_layout_alv .      " 负责整个ALV的全局属性

 

第2个函数用到的全局变量:

DATA:    wa_fieldcat TYPE lvc_s_fcat , " 相当于工作区

             i_fieldcat_lvc  TYPE lvc_t_fcat , " 存放列名的内表

             i_layout_lvc    TYPE lvc_s_layo . " 负责整个ALV的全局属性     

下面以第2个函数(REUSE_ALV_GRID_DISPLAY_LVC)来介绍ALV的用法;

1.               将得到并整理好的数据以ALV的形式显示出来

1.1.           在子FORM(这里如:F_FIELDS)指定需要显示的字段    wa_fieldcat 工作区,可以赋值

  v_pos = v_pos + 1 . 初始值是零

  wa_fieldcat-col_pos     = v_pos .       " 指定列数

  wa_fieldcat-fieldname    = 'PSPID' .     " 需要输出的内表的字段名

  wa_fieldcat-scrtext_l     = '项目定义 '.  " 字段的描述-长字段标签 screen  text long

  wa_fieldcat-scrtext_m      = '项目定义 '.  " 字段描述-中字段标签

  wa_fieldcat-scrtext_s     = '项目定义 '.  " 字段描述-短字段标签

  wa_fieldcat-fix_column    = 'X' .         " 是否是固定列 column ['kɔləm]列

  APPEND wa_fieldcat TO i_fieldcat_lvc.

  CLEAR wa_fieldcat.

这样逐步的将需要显示的字段都添加到内表i_fieldcat中;

1.2.           在子FORM(这里如:F_BUILD_LAYOUT)里设置ALV的全局属性

  i_layout_lvc-zebra       = 'X' .       " 使ALV界面呈现颜色交替

  i_layout_lvc-sel_mode      = 'A' .       " 选择模式,“A”在最左端有选择按钮

  i_layout_lvc-cwidth_opt       = 'X' .       " 自动优化列宽

  i_layout_lvc-detailinit      = 'X' .       " 是否出现细节屏幕

  i_layout_lvc-detailtitl      = '详细内容' . " 细节屏幕标题

1.3.           在子FORM(这里如:F_DISPLAY)里将内表中的数据进行显示

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'

    EXPORTING

      i_callback_program          = sy-repid          " 当前程序

      is_layout_lvc               = i_layout_lvc      " 属性内表

      it_fieldcat_lvc             = i_fieldcat_lvc[]  " 列明内表

      i_save                      = 'X'               " 是否保存布局

    TABLES

      t_outtab                    = i_tab             " 数据内表

    EXCEPTIONS

      program_error               = 1

      OTHERS                   = 2.

通过这一步后,一个基本的ALV程序就完成了;下面是对ALV程序的优化和扩展。

1.4.           为ALV程序添加表头标题(这里以添加HTML表头标题为主)

1.4.1.                 在显示ALV的函数(REUSE_ALV_GRID_DISPLAY_LVC)里添加一个参数

i_callback_html_top_of_page       = 'F_TOP_OF_PAGE'  

其中“F_TOP_OF_PAGE”是书写ALV表头标题的子FORM,只是在这里使用,没有明显的“PERFORM”调用,如下:

FORM f_top_of_page USING p_cl_dd TYPE REF TO cl_dd_document.

1.4.2.                 在子FORM(F_TOP_OF_PAGE)里定义好需要的变量

  " 定义登录用户的描述

  DATA: l_name TYPE string ,

        name_first LIKE adrp-name_first ,

        name_last  LIKE adrp-name_last .

  " 定义登录日期

  DATA: l_date TYPE string .

  " 定义缓冲区变量

  DATA: m_p TYPE i ,

        m_buffer TYPE string .

1.4.3.                 准备好所需数据,如登录用户的描述、制表日期等

  " 得到登录用户的描述

  SELECT SINGLE adrp~name_first

                adrp~name_last

   INTO (name_first,name_last)

   FROM adrp

         INNER JOIN usr21 ON adrp~persnumber = usr21~persnumber

  WHERE usr21~bname = sy-uname .

 

  IF sy-subrc = 0 .

    CONCATENATE name_last name_first INTO l_name .

  ELSE .

    l_name = sy-uname .

  ENDIF.

  CLEAR name_first .

  CLEAR name_last .

 

  " 拼接制表日期

  CONCATENATE sy-datum+0(4) '.'

              sy-datum+4(2) '.'

              sy-datum+6(2) '.'

         INTO l_date .

1.4.4.                 将表头数据输出

  " 开始输出表头标题

  m_buffer = '<HTML><CENTER><H1>ALV测试</H1></CENTER></HTML>' .

  CALL METHOD p_cl_dd->html_insert

    EXPORTING

      contents = m_buffer

    CHANGING

      position = m_p.

 

  " 输出制表人和制表日期

  CONCATENATE '<P ALIGN = CENTER >出表人:' l_name'出表日期:' l_date INTO m_buffer .

  CALL METHOD p_cl_dd->html_insert

    EXPORTING

      contents = m_buffer

    CHANGING

      position = m_p.

现将需要显示的表头数据放到变量“M_BUFFER”中,然后调用方法“P_CL_DD->HEML_INSERT”将数据插入到HTML页面中显示,至此显示表头数据完成;

2.               函数“REUSE_ALV_GRID_DISPLAY_LVC”中输入参数的应用

2.1.           排序

排序之前,如果同一列有相同的数据,则排好序以后,在该列会自

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值