文档库 最新最全的文档下载
当前位置:文档库 › ALV中文教程(超经典)

ALV中文教程(超经典)

ALV中文教程(超经典)
ALV中文教程(超经典)

S A P学习系列教程之A L V(一)

教程目的:

学习S A P已经有一段时间,A L V报表在项目中使用都是比较简单的功能.一直想着有时间好好整理一下整个A L V报表的编写方法,给自己以及学习A B A P的同志们做一个参考.

部分文字与代码参考了网络上流传的文档,在此感谢.

时间仓促加上水平有限,行文不当之处敬请谅解.

一、 A L V介绍

T h e A L V G r i d C o n t r o l(A L V=S A P L i s t V i e w e r)是一个显示列表的灵活的工具,它提供了基本功能的列表操作,也可以通过自定义来进行增强,因此可以允许你可以在大型的用程序中使用.

A L V提供了常用的按键功能.(求和,排序,导出等)

A L V可以简单的认为是一个界面美观,功能强大,可以提供灵活的互动界面的报表显示。

如果说传统的w r i t e输出比作是一辆马车的话,那A L V可以算是一个是奔驰了.

图一:A L V显示效果

它包括3大部分,工具栏,标题,用于显示数据的网格控制器.如果有必要,用户可以隐藏标题和工具栏.

实现A L V输出主要有两种方法

1.类“C L_G U I_A L V_G R I D”中封装的方法

2.函数“R E U S E_A L V…”

在这个文档中,将分别对这两种方法进行讲解.

二、 A L V类方法输出

在A L V输出之前,我们先要了解最基本的3个这种方法输出的参数.

1.输出数据.也就是我们想要在报表中显示的数据,必须是扁平结构的内表.

2.F i e l d C a t a l o g(字段目录).字段目录是用来控制A L V显示的网格中每个字段的属性的,

比如字段的顺序,对齐方式,可编辑状态,颜色,等等.以内表形式传入A L V类方法,内表的每一行代表一个字段(A L V报表输出中的一列).每一行的字段可以参考结构

L V C_T_F C A T.

3.L a y o u t S t r u c t u r e(布局控制结构).布局是用来控制整个A L V的一个布局,比如A L V的

标题,是否可编辑,行颜色,列颜色.以工作区形式传入A L V类方法,结构参考L V C_S_L A Y O

注意:除了上面三个最基本的要素之外,对于A L V事件的处理,打印设置,数据过滤等功能还将涉及到其他的参数.

下面我们就一步一步的来做一个简单的A L V报表(容器方式,也就是在屏幕的一个区域内显示A L V报表).

第一步:建立一个用户屏幕区域.

第二步:定义A L V相关变量

*-- Global data definitions for ALV

*--- ALV Grid instance reference

DATA gr_alvgrid TYPE REF TO cl_gui_alv_grid .

*--- Name of the custom control added on the screen

DATA gc_custom_control_name TYPE scrfname VALUE ‘CC_ALV’ . *--- Custom container instance reference

DATA gr_ccontainer 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

第三步: 定义数据内表

*--- Internal table holding list data

DATA BEGIN OF gt_list OCCURS 0 .

INCLUDE STRUCTURE SFLIGHT .

*--In further sections, some additional fields will added here

*--for some functionality

DATA END OF gt_list .

第四步: 填充内表数据

START-OF-SELECTION.

SELECT * FROM sflight INTO TABLE gt_list.

第五步: 调用屏幕

CALL SCREEN 100.

第六步:编写PBO和PAI

PROCESS BEFORE OUTPUT.

* MODULE STATUS_0100.

MODULE display_alv.

PROCESS AFTER INPUT.

* MODULE USER_COMMAND_0100.

MODULE display_alv OUTPUT.

PERFORM display_alv.

ENDMODULE.

FORM display_alv .

IF gr_alvgrid IS INITIAL .

CREATE OBJECT gr_ccontainer

EXPORTING

container_name = gc_custom_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.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CREATE OBJECT gr_alvgrid

EXPORTING

* I_SHELLSTYLE = 0

* I_LIFETIME =

i_parent = gr_ccontainer

* I_APPL_EVENTS = space

* I_PARENTDBG =

* I_APPLOGPARENT =

* I_GRAPHICSPARENT =

* I_NAME =

EXCEPTIONS

error_cntl_create = 1

error_cntl_init = 2

error_cntl_link = 3

error_dp_create = 4

OTHERS = 5

.

IF sy-subrc <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

*----Preparing field catalog.

* PERFORM prepare_field_catalog CHANGING gt_fieldcat .

*----Preparing layout structure

* PERFORM prepare_layout CHANGING gs_layout .

CALL METHOD gr_alvgrid->set_table_for_first_display

EXPORTING

* I_BUFFER_ACTIVE =

* I_BYPASSING_BUFFER =

* I_CONSISTENCY_CHECK =

* I_STRUCTURE_NAME = 'SFLIGHT'

* IS_VARIANT =

* I_SAVE =

* I_DEFAULT = 'X'

is_layout = gs_layout

* IS_PRINT =

* IT_SPECIAL_GROUPS =

IT_TOOLBAR_EXCLUDING = ui_functions_exclude

* 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.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ELSE.

CALL METHOD gr_alvgrid->refresh_table_display

* EXPORTING

* IS_STABLE =

* I_SOFT_REFRESH =

EXCEPTIONS

finished = 1

OTHERS = 2

.

IF sy-subrc <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDIF.

ENDFORM. " display_alv

未完待续…………

相关文档