业务场景:用户想要更方便,更直观的查看自己想要的数据。筛选条件和数据实时更新。
业务分析:通常查看一个报表需要至少跳转一次屏幕,并且如果想要查看更多的数据需要返回到选择屏幕重新选择条件。
解决方案:选择屏幕和ALV报表在一个屏幕上,可重复选择条件然后查看自己想要的数据。
CLASS lcl_report DEFINITION.
PUBLIC SECTION.
DATA: t_data TYPE STANDARD TABLE OF anep, " Output dat
r_BUKRS TYPE RANGE OF ANEP-BUKRS,
R_GJAHR TYPE RANGE OF ANEP-GJAHR. " Select Option
METHODS:
get_data,
generate_output.
ENDCLASS. "lcl_report DEFINITION
DATA: lo_report TYPE REF TO lcl_report.
DATA: w_BUKRS TYPE ANEP-BUKRS,
W_GJAHR TYPE ANEP-GJAHR.
** Selection Screen
SELECTION-SCREEN: BEGIN OF BLOCK blk1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: s_BUKRS FOR w_BUKRS.
SELECT-OPTIONS: s_GJAHR FOR w_GJAHR.
SELECTION-SCREEN: END OF BLOCK blk1.
** Initialization
INITIALIZATION.
* 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_BUKRS = s_BUKRS[].
lo_report->r_GJAHR = s_GJAHR[].
lo_report->get_data( ).
*----------------------------------------------------------------------*
* Local Class Implementation
*----------------------------------------------------------------------*
CLASS lcl_report IMPLEMENTATION.
METHOD get_data.
SELECT * FROM ANEP
INTO TABLE t_data
WHERE BUKRS IN s_BUKRS AND GJAHR IN S_GJAHR.
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 = 80
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.
create object gr_grid_d1001
exporting i_parent = lo_cont.
call function 'LVC_FIELDCATALOG_MERGE'
exporting
i_buffer_active = space
i_structure_name = 'ANEP'
i_client_never_display = 'X'
i_bypassing_buffer = space
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
效果图
执行前
执行后