Function ALV 是实现最简单,使用频率最高的报表
使用Function ALV的关键就是调用SAP标准的程序 REUSE_ALV_LIST_DISPLAY
简单实现: 生成报表
示例代码:
REPORT ZABAP_FUNCTION_ALV.
DATA gt_itab TYPE TABLE OF SFLIGHT.
SELECT * FROM SFLIGHT INTO TABLE gt_itab UP TO 25 ROWS.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_structure_name = 'SFLIGHT'
TABLES
t_outtab = gt_itab.
运行程序结果如图:
可以看到简单几行代码就实现了一个报表,但是目前的报表只能查看不能编辑后保存数据到数据库
添加工具栏按钮和绑定点击事件
首先创建一个GUI Status
其次回到编辑器后引入类型池SLIS和绑定事件所需的变量
SLIS类型池中定义了 Function ALV 所需的类型
REPORT ZABAP_FUNCTION_ALV.
TYPE-POOLS:SLIS.
DATA lt_events TYPE SLIS_T_EVENT.
DATA ls_event TYPE SLIS_ALV_EVENT.
DATA gt_itab TYPE TABLE OF SFLIGHT.
SELECT * FROM SFLIGHT INTO TABLE gt_itab UP TO 25 ROWS.
*设置 GUI Status 显示到画面上
MOVE 'PF_STATUS_SET' TO ls_event-NAME.
MOVE 'ALV_STATUS_SET' TO ls_event-FORM.
APPEND ls_event TO lt_events.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-repid
it_events = lt_events
i_structure_name = 'SFLIGHT'
i_callback_user_command = 'ALV_USER_COMMAND'
TABLES
t_outtab = gt_itab.
*设置GUI Status 子程序
FORM ALV_STATUS_SET USING PT_EXTAB TYPE SLIS_T_EXTAB.
CLEAR PT_EXTAB[].
SET PF-STATUS 'ALV_STATUS'.
ENDFORM.
*设置点击事件 p_ucomm 表示 GUI Status 的 Function Code
FORM ALV_USER_COMMAND USING p_ucomm LIKE sy-ucomm p_selfield TYPE slis_selfield.
CASE p_ucomm.
WHEN 'CLOSE'.
LEAVE PROGRAM.
WHEN OTHERS.
ENDCASE.
ENDFORM.
此时点击关闭按钮会关闭当前程序
参数 :i_callback_user_command 用于设置点击事件
参数 :i_callback_program 以及 it_events 用于设置 工具栏按钮GUI Status
进阶模式:查看报表并按需修改保存报表
下面演示下进阶的Function ALV 报表,也就是开启Function ALV的Edit模式,做到既能查看又能修改后保存到数据库
未完待续...