ALV GRID的参考文档 ( 1 )

 SAP HELP对ALV的定义如下:The ALV grid control is a flexible tool for displaying lists. The tool provides common list operations as generic functions and can be enhanced by self-defined options。
 ALV Grid控件用来创建非层次的友好的交互式报表。作为一个控件,他被安装在本地机的客户端上。
 ALV Grid控件提供了典型的常用功能,比如排序,筛选和总计等。同时他也提供了自开发功能的接口。它提供了大量与excel和水晶报表的接口。
 类CL_GUI_GRID用来实现ALV GRID控件的各种功能。还可以使用:REUSE_ALV….这些功能模块,来实现ALV报表。
 当我们想通过ALV来实现报表时,我们通常需要准备一下几个部分:
1)        List data;就是你要显示的内表。除排序功能之外,ALV GRID的控件只是读取所要显示的内表中的内容。然而,排序将会改表内表的状态。所要显示的内表可以包含任何flat type的数据。如果要显示deep type的数据,那可能就要设定ALV GRID的某些特定功能。
2)        Field Catalog: 使用另外一个内表来定义ALV报表的每一个字段的显示方式。Field catalog可以通过三种方式来实现:自动生成,半自动和手动生成。这个内表的类型必须是LVC_T_FCAT
3)        Layout Structure: 我们可以通过这个结构来设置ALV的显示格式。用这个结构我们可以用来设置ALV的常用选项,对GRID控件的配置,汇总选项已经颜色等。这个结构的类型必须是LVC_S_LAYO
4)        Event Handler: 如果我们想在alv grid中触发时间,可以通过事件处理类来实现,必须注册一个事件处理类的实例来处理alv grid的事件。
5)        Additional data: 通过alv其他的一些参数可以用来设置alv grid的其它的一些特征。例如设置初始的排序顺序,把某些按钮置为非激活状态等。
下面我们来简单看一下alv的实现步骤,作为一个控件对象必须有一个容器来实现与屏幕的连接。我们用cl_gui_custom_container这个类的实例来实现这个目的。另外还有一些其他类的实例也可能会用到,比如cl_gui_docking_container,cl_gui_dialogbox_container。首先我们要在屏幕上创建custome control区域。
下面简单描述一下ALV GRID的创建过程;
1.         在屏幕上创建custom control区域,比如我们把这个区域的名字定位cc_alv
  
1.         定义alv grid的全局变量
2.         *--GLOBAL DATA DEFINITIONS FOR ALV
*--- ALV GRID instance reference
DATA : gr_alvgrid  TYPE  REF  TO  cl_gui_alv_grid.
*--- Name of the custome control added on the screen
DATA : gc_custome_control_name  TYPE  scrfname  VALUE  'CC_ALV' .
*-- Custome container instance reference
DATA : gr_container  TYPE  REF  TO  cl_gui_custom_container.
*-- Field catalog table
DATA  gt_fieldcat  TYPE  lvc_t_fcat.
*-- Layout structure
DATA  gs_layout  TYPE  lvc_s_layo.声明用来创建容纳显示内容的内表
3.         根据自己的具体需求把取出来的数据放到内表中
4.         建立PBO MODULE用来创建ALV GRID的实例
     PROCESS BEFORE  OUTPUT .
* MODULE STATUS_0100.
  
MODULE  display_alv.
MODULE  display_alv  OUTPUT .
  
PERFORM  display_alv.
ENDMODULE
5.         下面是显示alv的主要步骤,先检查一下alv容器的实例是否存在,如果存在的话就把刷新,否则的话就创建它,并调用显示alv的方法。
    FORM  display_alv.
  
IF  gr_alvgrid  IS  INITIAL .
    
CREATE  OBJECT  GR_CONTAINER
      
EXPORTING
        CONTAINER_NAME               = gc_custome_control_name
       
EXCEPTIONS
         CNTL_ERROR                  = 
1
         CNTL_SYSTEM_ERROR           = 
2
         CREATE_ERROR                = 
3
         LIFETIME_ERROR              = 
4
         LIFETIME_DYNPRO_DYNPRO_LINK = 
5
         
others                       =  6 .
    
IF  SY-SUBRC <>  0 .

    
ENDIF .
    
CREATE  OBJECT  GR_ALVGRID
      
EXPORTING
        I_PARENT           = GR_CONTAINER
       
EXCEPTIONS
         ERROR_CNTL_CREATE = 
1
         ERROR_CNTL_INIT   = 
2
         ERROR_CNTL_LINK   = 
3
         ERROR_DP_CREATE   = 
4
         
others             =  5 .
    
IF  SY-SUBRC <>  0 .

    
ENDIF .
*-- preparing field catalog
* PERFORM prepare_fieldcatalog CHANGING gt_fieldcat.
*-- preparing layout structure
*  PERFORM prepare_layout CHANGING gs_layout.
*-- display alv list
  
CALL  METHOD  GR_ALVGRID->SET_TABLE_FOR_FIRST_DISPLAY
     
EXPORTING
*      I_BUFFER_ACTIVE               =
*      I_BYPASSING_BUFFER            =
*      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                  =
*      IT_ALV_GRAPHICS               =
*      IT_EXCEPT_QINFO               =
    
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 .
  
IF  SY-SUBRC <>  0 .
  
ENDIF .
  
ELSE .
    
CALL  METHOD  GR_ALVGRID->REFRESH_TABLE_DISPLAY
*      EXPORTING
*        IS_STABLE      =
*        I_SOFT_REFRESH =
       
EXCEPTIONS
         FINISHED       = 
1
         
others          =  2 .
    
IF  SY-SUBRC <>  0 .
    
ENDIF .
  
ENDIF .
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值