简单的OO ALV小示例
OO ALV即面向对象ALV,是在屏幕上显示的一种可以自定义大小的ALV。它区别普通ALV的优点是可以多个ALV出现在同一个屏幕,也可以同其他屏幕元素同时出现在同一个屏幕。
示例展示:
1. 进入实用程序-->显示对象列表:
2.点击创建屏幕9000:
3. 开始画第一个屏幕:
4.画图如下:
部分字段属性:
5. 记得此处输入OK_CODE用于接受屏幕返回值:
6.启用9000 OUTPUT INPUT.
7.双击MODULE STATUS_9000.设置屏幕为A1,激活显示屏幕状态栏,点击创建-->GUI状态:
8.双击MODULE USER_COMMAND_9000.对屏幕状态进行响应:
DATA: ok_code(3).
MODULE USER_COMMAND_9000 INPUT.
DATA lv_ok(3).
lv_ok = ok_code.
CASE lv_ok.
WHEN 'YES'.
CALL SCREEN 9001.
WHEN '&F1'.
LEAVE TO SCREEN 0.
WHEN OTHERS.
ENDCASE.
ENDMODULE.
9.制作OO ALV屏幕9001用于装载数据:
10. 设置MODULE STATUS_9001.MODULE USER_COMMAND_9001.如下:
MODULE STATUS_9001 OUTPUT.
SET PF-STATUS 'A2'.
ENDMODULE.
MODULE USER_COMMAND_9001 INPUT.
lv_ok = ok_code.
CASE lv_ok.
WHEN 'YES' OR '&F1'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.
11.添加MODULE INIT_ALV.处理OO ALV数据:
12.源代码如下(因此示例只是自己学习所用,代码仍有改进之处):
*&---------------------------------------------------------------------*
*& Report ZTEST004
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZTEST004.
*======================================================================*
* 说明书编号 :
* 程序名称 : ZSDR16
* 程序描述 :
* 功能顾问 : XIONGHN
* 开发顾问 :
* 开始日期 :
* 完成日期 :
*======================================================================*
* 修改历史.
*----------------------------------------------------------------------*
*
*序号. 修改人 日期 描述
*--- ----------- ---- -----------
*
*
*======================================================================*
* Tables used in the program
*TABLES: likp , lips , zsdf04_1.
*======================================================================*
*======================================================================*
* Type declarations in the program
*======================================================================*
*TYPE-POOLS: SLIS.
TYPES: BEGIN OF ty_alv,
vkorg TYPE vbak-vkorg,
tl_netwr TYPE vbap-netwr,
waerk TYPE vbap-waerk,
year TYPE char4,
month TYPE char2,
END OF ty_alv.
TYPES: BEGIN OF ty_vbakpa,
vkorg TYPE vbak-vkorg,
erdat TYPE vbak-erdat,
netwr TYPE vbap-netwr,
waerk TYPE vbap-waerk,
END OF ty_vbakpa.
TYPES: BEGIN OF ty_vbakpb,
vkorg TYPE vbak-vkorg,
erdat TYPE vbak-erdat,
netwr TYPE vbap-netwr,
waerk TYPE vbap-waerk,
END OF ty_vbakpb.
*======================================================================*
* Internal Tables used in the program
*======================================================================*
DATA : gt_fcat TYPE TABLE OF lvc_s_fcat,
gs_fcat TYPE lvc_s_fcat,
gs_layo TYPE lvc_s_layo.
DATA: go_alva TYPE REF TO cl_gui_alv_grid,
go_alvb TYPE REF TO cl_gui_alv_grid,
go_cona TYPE REF TO cl_gui_custom_container,
go_conb TYPE REF TO cl_gui_custom_container.
DATA: gt_dataa TYPE TABLE OF ty_alv,
gs_dataa TYPE ty_alv.
DATA: gt_datab TYPE TABLE OF ty_alv,
gs_datab TYPE ty_alv.
DATA: gt_vbakpa TYPE TABLE OF ty_vbakpa,
gs_vbakpa TYPE ty_vbakpa.
DATA: gt_vbakpb TYPE TABLE OF ty_vbakpb,
gs_vbakpb TYPE ty_vbakpb.
DATA: gt_waerka TYPE vbap-waerk,
gt_waerkb TYPE vbap-waerk.
DATA: gv_vkorga TYPE vbak-vkorg,
gv_vkorgb TYPE vbak-vkorg,
gv_yeara TYPE char4,
gv_yearb TYPE char4,
gv_montha TYPE char2,
gv_monthb TYPE char2.
DATA: ok_code(3).
*======================================================================*
* Data declarations in the program
*======================================================================*
*======================================================================*
* CONSTANTS
*======================================================================*
*======================================================================*
* Input Selection Screen
*======================================================================*
*======================================================================*
* Initialization
*======================================================================*
INITIALIZATION.
*======================================================================*
* At Selection Screen
*======================================================================*
AT SELECTION-SCREEN.
*======================================================================*
* AT SELECTION-SCREEN OUTPUT
*======================================================================*
AT SELECTION-SCREEN OUTPUT .
*======================================================================*
* AT SELECTION-SCREEN ON VALUE-REQUEST
*======================================================================*
*======================================================================*
* Start of Selection
*======================================================================*
START-OF-SELECTION.
CALL SCREEN 9000.
*======================================================================*
* End of Selection
*======================================================================*
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form GT_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GT_DATA .
SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_vbakpa
FROM vbak
JOIN vbap ON vbak~vbeln = vbap