ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ALV_GRID set_table_for_first_display /REFRESH_TABLE_DISPLAY

ALV_GRID set_table_for_first_display /REFRESH_TABLE_DISPLAY

原创 Linux操作系统 作者:SAP骑士 时间:2009-07-14 15:42:02 0 删除 编辑
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/,如需转载,请注明出处,否则将追究法律责任。

上一篇: ABAP面试题目
请登录后发表评论 登录
全部评论

注册时间:2009-01-01

  • 博文量
    59
  • 访问量
    311561