ALV_GRID set_table_for_first_display /REFRESH_TABLE_DISPLAY

庾鸿飞
2023-12-01
3.打印和排序,过滤控制
 
   打印的参数控制请参考结构 [ LVC_S_PRNT]
   排序的参数控制请参考结构[ LVC_S_SORT]
   过滤的参数控制请参考结构[ LVC_S_FILT]
 
 这里不再一一解释,进入中文版本,里面应该也有解释的,虽然一些不是很清楚.
 
五.编写简单的ALV程序.
 
   首先这里就不详细介绍DIALOG的用法了.
 
   OO的ALV GRID必须存在于一个容器当中,就是FUNCTION的ALV,其实也是一样的,底层也是使用CL_GUI_ALV_GRID这个类的.
 
   首先ALV的显示需要有几个先决条件.
 
   1,字段目录,这个是必须的,如果没有这个参数,参考一个数据字典也是可以的,就是参数I_STRUCTURE_NAME.
   2.存放数据的内表,最好内表的结构和字段目录是一致的,否则可能会出现一些无法预知的错误,当然你说我非要不一样,那也不一定会出现错误.我建议是最好一样的.
 
   这2个是必须的,布局的话,应该是可以不设置的,使用默认的就可以了.
 
 
第一步:创建个SCREEN,在屏幕上创建个容器,CONTAINER.定义变量.
  SPAN { font-family: "Arial monospaced for SAP"; font-size: 13pt; color: #000000; background: #FFFFFF; } .L1S52 { color: #0000FF; } DATA:
      WCL_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
      WCL_ALV TYPE REF TO CL_GUI_ALV_GRID .
  *--- 存放字段目录的内表
    DATA gt_fieldcat TYPE lvc_t_fcat .
  *--- 布局结构
    DATA gs_layout TYPE lvc_s_layo .
  *----声明需要显示的内表(以SFLIGHT为例)
    DATA BEGIN OF gt_list OCCURS 0 .
         INCLUDE STRUCTURE SFLIGHT .
    DATA END OF gt_list .
 
第二步: 创建ALV这个对象,它的父组件是那个容器.
       在PBO中写入如下代码:
 
          PROCESS BEFORE OUTPUT .
             MODULE display_alv .
 
       创建DISPLAY_ALV的MODULE后,写下如下代码:
              MODULE display_alv OUTPUT .
                 PERFORM. display_alv .
           ENDMODULE .
 
       在FORM. DISPLAY_ALV中,判断ALV实例是否存在,如果不存在,则创建:
      IF  WCL_ALV IS INITIAL .
     SPAN { font-family: "Arial monospaced for SAP"; font-size: 13pt; color: #000000; background: #FFFFFF; } .L0S33 { color: #4DA619; } .L0S52 { color: #0000FF; }  CREATE OBJECT: WCL_CONTAINER 
       EXPORTING 
         CONTAINER_NAME = 'ALV_CON'.
      CREATE OBJECT WCL_ALV
       EXPORTING
         I_PARENT = WCL_CONTAINER.
 
       *-----准备获取字段目录
PERFORM. prepare_field_catalog CHANGING gt_fieldcat .
       *-----设置布局
PERFORM. prepare_layout CHANGING gs_layout .
       *-----显示ALV
CALL METHOD gr_alvgrid->set_table_for_first_display
EXPORTING
* I_BUFFER_ACTIVE =
* I_CONSISTENCY_CHECK =
* I_STRUCTURE_NAME =
* IS_VARIANT =
* I_SAVE =
* I_DEFAULT = 'X'
is_layout = gs_layout
* IS_PRINT =
* IT_SPECIAL_GROUPS =
* IT_TOOLBAR_EXCLUDING =
* IT_HYPERLINK =
CHANGING
it_outtab = gt_list[]
it_fieldcatalog = gt_fieldcat
* IT_SORT =
* IT_FILTER =
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4 .

       ELSE .
         *----刷新ALV
CALL METHOD gr_alvgrid->refresh_table_display
* EXPORTING
* IS_STABLE =
* I_SOFT_REFRESH =
EXCEPTIONS
finished = 1
OTHERS = 2 .
IF sy-subrc <> 0.
*--异常处理
ENDIF.
 
       ENDIF .
 
 
  方法"set_table_for_first_display"的参数说明
 
参数含义
I_BUFFER_ACTIVE如果方法调用是静态的,可以设置这个标记,这表示,如果每次显示ALV都是
相同的字段目录.既然这样,那么字段目录会被放到一个特殊的缓存里,
这样加速了ALV的显示
I_STRUCTURE_NAME输出数据参考的数据字典的结构名,例如'SFLIGHT'.如果指定了这个参数,字段
目录会自动生成,下面的参数IT_FIELDCATALOG不需要传值.
IS_VARIANT决定布局显示的变式
I_SAVE决定用户是否可以保存变式:
'X' 只能保存全局变式
'U' 只能保存特定变式
'A' 都可以保存
SPACE 不可以保存变式
I_DEFAULT决定用户是否可以定义默认的布局:
'X' 可以定义默认布局,这个参数是默认的
SPACE 不可以定义默认布局
IS_LAYOUT布局参数,传递布局控制的一些信息
IS_PRINT后台打印属性的参数
IT_SPECIAL_GROUPS如果在字段目录中,一些字段通过SP_GROUP被分组在一起.我们就必须为这些
组传递一个组的文本内表进去
IT_TOOLBAR_EXCLUDING需要隐藏的标准的按钮的内表
IT_HYPERLINK为每个句柄分配了超连接的内表,LVC_S_HYPE中的HREF存放了超连接的地址,
HANDLE指定了句柄,使用这些句柄,你可以在GRID中使用超连接
IT_ALV_GRAPHICS比较复杂,没有用过,意思好象是可以在图表中显示ALV.
IT_OUTTAB输出数据存放的内表,数据都是存放在这个内表里
IT_FIELDCATALOG字段目录
IT_SORT排序的标准
IT_FILTER过滤的标准
  
方法"REFRESH_TABLE_DISPLAY"的参数说明
 
参数含义
IS_STABLE刷新的稳定性,有2个参数,一个是行,一个是列.如果设置了相应的值,
那么对应的行,或者列,在刷新的时候,将会保持稳定,就是滚动条保持不动.
I_SOFT_REFRESH这个参数只是在异常情况下被使用,如果设置了这个参数,任何创建的合计,
任何排序次序,任何为了显示数据而设置的过滤都将保持不变.这个是非常
有意义的.例如:当然你没有修改数据内表里的数据而想刷新ALV,仅仅只是
改变一下布局和字段目录.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17204926/viewspace-609153/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/17204926/viewspace-609153/

 类似资料:

相关阅读

相关文章

相关问答