注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

XINBO'S SAP BLOG

你所浪费的今天,是昨天死去的人奢望的明天。你所厌恶的现在,是未来的你回不去的曾经

 
 
 

日志

 
 

ALV GRID的参考文档(I)  

2009-05-22 14:34:35|  分类: ALV |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

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

ALV GRID的参考文档(I) - 柏拉图的永恒 - 柏拉的ABAP BOLOG

  

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.

  评论这张
 
阅读(445)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017