凡尘clsoho™的博客

E-mail & MSN: clsoho@hotmail.com
QQ1超级群: <101817641已满> QQ2群:<110722895已满>
QQ3超级群:<23765855>QQ4超级群:<85338969>

*"如何将查询结果显示在选择屏幕上的代码示例
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

效果如下:

参考:http://blog.chinaunix.net/u2/65985/showart_1826104.html

posted on 2010-03-18 12:07  凡尘clsoho  阅读(617)  评论(0编辑  收藏  举报