zoukankan      html  css  js  c++  java
  • ABAP如何将查询结果显示在选择屏幕上的代码

     *&---------------------------------------------------------------------*
    *& Generates the ALV on the Selection Screen itself
    *&
    *&---------------------------------------------------------------------*
    REPORT  zalv_on_sel_screen.
    *
    *----------------------------------------------------------------------*
    *  Local class for report
    *----------------------------------------------------------------------*
    CLASS lcl_report DEFINITION.
      PUBLIC SECTION.
        DATA: t_data   TYPE STANDARD TABLE OF sflight,  " Output dat
              r_carrid TYPE RANGE OF sflight-carrid.    " Select Option
        METHODS:
          get_data,
          generate_output.
    ENDCLASS.                    "lcl_report DEFINITION

    DATA: lo_report TYPE REF TO lcl_report.
    DATA: w_carrid TYPE sflight-carrid.

    ** Selection Screen
    SELECTION-SCREEN: BEGIN OF BLOCK blk1 WITH FRAME TITLE aaa.
    SELECT-OPTIONS: s_carrid FOR w_carrid.
    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_carrid = s_carrid[].
      lo_report->get_data( ).
    *----------------------------------------------------------------------*
    * Local Class Implementation
    *----------------------------------------------------------------------*
    CLASS lcl_report IMPLEMENTATION.
      METHOD get_data.
        SELECT * FROM sflight
               INTO  TABLE me->t_data
               WHERE carrid IN s_carrid.
        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             = 'SFLIGHT'
          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

  • 相关阅读:
    作业11
    作业10总结
    作业10
    作业9总结
    作业9
    作业8总结
    作业8
    实验7总结
    实验6总结
    史航第12次作业&总结
  • 原文地址:https://www.cnblogs.com/xiaomaohai/p/6157045.html
Copyright © 2011-2022 走看看