*"如何将查询结果显示在选择屏幕上的代码示例
REPORT zzzz.
*----------------------------------------------------------------------*
* CLASS lcl_report DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_report DEFINITION.
PUBLIC SECTION.
DATA: t_data TYPE STANDARD TABLE OF zwxcj, " 此处的表为已经建好的表,测试时可以修改为其它表
r_ekorg TYPE RANGE OF zwxcj-ekorg. " Select Option 自建表的一个字段
METHODS:
get_data,
generate_output.
ENDCLASS. "lcl_report DEFINITION
DATA: lo_report TYPE REF TO lcl_report.
DATA: w_ekorg TYPE zwxcj-ekorg.
** Selection Screen
SELECTION-SCREEN: BEGIN OF BLOCK blk1 WITH FRAME TITLE aaa.
SELECT-OPTIONS: s_ekorg FOR w_ekorg.
SELECTION-SCREEN: END OF BLOCK blk1.
** Initialization
INITIALIZATION.
aaa = 'Selection Criteria'.
* object for the report
CREATE OBJECT lo_report. "创建类的实例
* generate output
lo_report->generate_output( ). "调用输出方法
** Start of Selection
START-OF-SELECTION.
* Get data
lo_report->r_ekorg = s_ekorg[]. "类全局变量初始化
lo_report->get_data( ). "调用取数方法
*----------------------------------------------------------------------*
* Local Class Implementation
*----------------------------------------------------------------------*
CLASS lcl_report IMPLEMENTATION.
METHOD get_data.
SELECT * FROM zwxcj
INTO TABLE me->t_data
WHERE ekorg IN s_ekorg.
IF sy-dbcnt IS INITIAL.
MESSAGE s398(00) WITH 'No data selected'.
ENDIF.
EXPORT data = me->t_data TO MEMORY ID sy-cprog.
ENDMETHOD. "get_data
METHOD generate_output.
DATA: lo_dock TYPE REF TO cl_gui_docking_container,
lo_cont TYPE REF TO cl_gui_container,
lt_fcat TYPE lvc_t_fcat,
gr_grid_d1001 TYPE REF TO cl_gui_alv_grid.
IMPORT data = me->t_data FROM MEMORY ID sy-cprog.
FREE MEMORY ID sy-cprog.
CHECK me->t_data IS NOT INITIAL.
CHECK lo_dock IS INITIAL.
CREATE OBJECT lo_dock
EXPORTING
repid = sy-cprog
dynnr = sy-dynnr
ratio = 87
side = cl_gui_docking_container=>dock_at_bottom
name = 'DOCK_CONT'.
IF sy-subrc <> 0.
MESSAGE 'Error in the Docking control' TYPE 'S'.
ENDIF.
CHECK gr_grid_d1001 IS INITIAL.
lo_cont ?= lo_dock. "此处的?=与move lo_dock to lo_cont功能相同。
CREATE OBJECT gr_grid_d1001
EXPORTING
i_parent = lo_cont.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_buffer_active = space
i_structure_name = 'ZWXCJ' "结构名
i_client_never_display = 'X'
i_bypassing_buffer = space
* i_internal_tabname = '' "内表名
CHANGING
ct_fieldcat = lt_fcat "字段目录
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
CALL METHOD gr_grid_d1001->set_table_for_first_display
EXPORTING
i_buffer_active = space
i_bypassing_buffer = space
CHANGING
it_outtab = me->t_data
it_fieldcatalog = lt_fcat.
ENDMETHOD. "generate_output
ENDCLASS. "lcl_report IMPLEMENTATION
效果如下: