同一界面查询并显示ALV

*初始化变量
TYPE-POOLS:slis.
TABLES:tstc.
DATA:wa_alv_field TYPE slis_fieldcat_alv.
DATA:wa_alv_layout TYPE slis_layout_alv.
DATA:wa_alv_fieldcat TYPE slis_t_fieldcat_alv.

DATA zxeinfo LIKE STANDARD TABLE OF tstc WITH HEADER LINE.
SELECT * FROM tstc INTO CORRESPONDING FIELDS OF TABLE zxeinfo.

----------------------------------------------------------------------

  •   CLASS LCL_REPORT DEFINITION
    

----------------------------------------------------------------------
*
----------------------------------------------------------------------
CLASS lcl_report DEFINITION.
PUBLIC SECTION.
DATA: t_data TYPE STANDARD TABLE OF tstc, " Output dat
r_ztcode TYPE RANGE OF tstc-tcode, " Select Option
r_zpgmna TYPE RANGE OF tstc-pgmna, " Select Option
r_zdypno TYPE RANGE OF tstc-dypno, " Select Option
r_zmenue TYPE RANGE OF tstc-menue, " Select Option
r_zcinfo TYPE RANGE OF tstc-cinfo, " Select Option
r_zarbgb TYPE RANGE OF tstc-arbgb. " Select Option
METHODS:
get_data,
generate_output.
ENDCLASS. "lcl_report DEFINITION

DATA: lo_report TYPE REF TO lcl_report.
DATA: w_ztcode TYPE tstc-tcode.
DATA: w_zpgmna TYPE tstc-pgmna.
DATA: w_zdypno TYPE tstc-dypno.
DATA: w_zmenue TYPE tstc-menue.
DATA: w_zcinfo TYPE tstc-cinfo.
DATA: w_zarbgb TYPE tstc-arbgb.

** Selection Screen
SELECTION-SCREEN: BEGIN OF BLOCK blk1 WITH FRAME TITLE aaa.
SELECT-OPTIONS:
s_ztcode FOR tstc-tcode MEMORY ID ztcode,
s_zpgmna FOR tstc-pgmna MEMORY ID zpgmna,
s_zdypno FOR tstc-dypno MEMORY ID zdypno,
s_zmenue FOR tstc-menue MEMORY ID zmenue,
s_zcinfo FOR tstc-cinfo MEMORY ID zcinfo,
s_zarbgb FOR tstc-arbgb MEMORY ID zarbgb.
SELECTION-SCREEN: END OF BLOCK blk1.

** Initialization
INITIALIZATION.
aaa = '请输入查询条件[事务:查询事务码信息]'.

  • 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_ztcode = s_ztcode[].
    lo_report->r_zpgmna = s_zpgmna[].
    lo_report->r_zdypno = s_zdypno[].
    lo_report->r_zmenue = s_zmenue[].
    lo_report->r_zcinfo = s_zcinfo[].
    lo_report->r_zarbgb = s_zarbgb[].
    lo_report->get_data( ).
    ———————————————————————-

  • Local Class Implementation
    ———————————————————————-
    CLASS lcl_report IMPLEMENTATION.
    METHOD get_data.
    SELECT * FROM tstc
    INTO TABLE me->t_data
    WHERE tcode IN s_ztcode AND
    pgmna IN s_zpgmna AND
    dypno IN s_zdypno AND
    menue IN s_zmenue AND
    cinfo IN s_zcinfo AND
    arbgb IN s_zarbgb.
    IF sy-dbcnt IS INITIAL.
    MESSAGE s398(00) WITH '未找到符合条件的记录'.
    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 = 68
    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 = 'TSTC'
    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

posted @ 2021-10-09 11:04  毛毛一号  阅读(42)  评论(0)    收藏  举报