REPORT zsearch_tcode.
*初始化变量
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