SAP如何利用ALV控件创建简单报表
1、T-code:SE38创建一个程序(例子ZALV999),填写标题,选择类型,保存进入下一步。

2、进入ABAP程序编辑器界面,敲打以下程序。
REPORT ZALV999.
TABLES:MARA."这里用了MARA表做例子。
DATA:TAB1 LIKE STANDARD TABLE OF MARA WITH HEADER LINE."定义内表
DATA:FIELDCAT TYPE LVC_T_FCAT,"定义FieldCat对象
GRID TYPE REF TO CL_GUI_ALV_GRID,"定义ALV控件名
G_CONTAINER TYPE SCRFNAME VALUE 'CONT1',"重新定义本地容器对象名称
G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER."定义容器对象名
START-OF-SELECTION.
CALL SCREEN '0001'."屏幕号
*-----------------------------------*
* 抓取数据赋值给内表
*-----------------------------------*
FORM GETDATA.
SELECT * FROM MARA INTO CORRESPONDING FIELDS OF TABLE TAB1.
ENDFORM.
*-----------------------------------*
* 产生ALV子程序
*-----------------------------------*
FORM ALVSHOW.
CREATE OBJECT G_CUSTOM_CONTAINER "创建容器对象
EXPORTING CONTAINER_NAME = G_CONTAINER.
CREATE OBJECT GRID "创建ALV对象
EXPORTING I_PARENT = G_CUSTOM_CONTAINER.
CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY "调用ALV显示的方法
EXPORTING I_STRUCTURE_NAME = 'MARA' "参考的数据库表,上面我们已经定义参考MARA
CHANGING IT_OUTTAB = TAB1[]
IT_FIELDCATALOG = FIELDCAT[].
ENDFORM.
*--------------------------------*
* 菜单事件
*--------------------------------*
MODULE USER_COMMAND_0001 INPUT."屏幕中的PAI事件模块
CASE SY-UCOMM.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'EXEC'.
PERFORM GETDATA.
PERFORM ALVSHOW.
ENDCASE.
ENDMODULE.
MODULE STATUS_0001 OUTPUT."屏幕中的PBO事件模块
SET PF-STATUS 'T001'.”菜单名
ENDMODULE.


3、保存。双击代码中的屏幕号“0001”,弹出对话框,点击“是”。

4、进入屏幕绘制器,填写简短描述”ZALV999的屏幕0001”(这个描述随便填)。然后点击“格式”。


5、进入图形界面。绘制一个ALV容器,名称取”CONT1”。然后点击“逻辑流”退出。

6、进入逻辑流编辑界面,将“*”删除,保存,激活。点击后退回到ABAP程序编辑器。


7、双击程序中的菜单名“T001”,弹出对话框,点击“是”。


8、进入菜单编辑器。点击功能键边上的加号。对应程序填写。点击保存,激活,后退。







9、回到ABAP程序编辑界面。点击保存,激活,执行。

10、查看结果。

