OO實現ALV TABLE 六:ALV的彈出窗口形式

rel="File-List" href="file:///C:%5CWINDOWS%5CTEMP%5Cmsohtml1%5C01%5Cclip_filelist.xml"> rel="Edit-Time-Data" href="file:///C:%5CWINDOWS%5CTEMP%5Cmsohtml1%5C01%5Cclip_editdata.mso">

前面的例子ALV列表都是直接輸出在主窗口中,下面我們實現在彈出窗口中實現ALV。在彈出窗口中實現ALV也很簡單,只要在實現類CL_SALV_TABLE的一個方法SET_SCREEN_POPUP就可以了。

gr_table->set_screen_popup(

      start_column = 1

      end_column   = 120

      start_line   = 1

      end_line     = 20 ).

方法SET_SCREEN_POPUP的是彈出窗口的顯示範圍。

 

下面是效果圖

 


下面是程序的所有代碼:

REPORT  y_xin_002.

 

*變量定義

TYPES: BEGIN OF gs_spfli,

        mandt       TYPE spfli-mandt,

        carrid      TYPE spfli-carrid,

        connid      TYPE spfli-connid,

        countryfr   TYPE spfli-countryfr,

        cityfrom    TYPE spfli-cityfrom,

        airpfrom    TYPE spfli-airpfrom,

        countryto   TYPE spfli-countryto,

        cityto      TYPE spfli-cityto,

        airpto      TYPE spfli-airpto,

        fltime      TYPE spfli-fltime,

        deptime     TYPE spfli-deptime,

        arrtime     TYPE spfli-arrtime,

        distance    TYPE spfli-distance,

        distid      TYPE spfli-distid,

        fltype      TYPE spfli-fltype,

        period      TYPE spfli-period,

END OF gs_spfli.

TYPES  ty_spfli TYPE gs_spfli OCCURS 0.

 

DATA: gr_table     TYPE REF TO cl_salv_table.

 

*設置屏幕

SELECTION-SCREEN PUSHBUTTON 2(20) btn USER-COMMAND clk.

 

INITIALIZATION.

  btn = '點擊顯示彈出alv窗口'.

 

*----------------------------------------------------------------------*

*       CLASS lcl_alv DEFINITION

*----------------------------------------------------------------------*

*       ALV操作類(定義)

*----------------------------------------------------------------------*

CLASS lcl_alv DEFINITION.

  PUBLIC SECTION.

    METHODS: getdata         "取得要顯示的數據

               RETURNING value(lt_tab) TYPE ty_spfli,

             alv_full        "全屏Grid列表處理方法

               IMPORTING value(lt_tab) TYPE ty_spfli,

             main.           "主方法

ENDCLASS.                    "lcl_alv DEFINITION

 

*----------------------------------------------------------------------*

*       CLASS lcl_alv IMPLEMENTATION

*----------------------------------------------------------------------*

*       ALV操作類實現

*----------------------------------------------------------------------*

CLASS lcl_alv IMPLEMENTATION.

*取得要顯示的數據

  METHOD getdata.

    SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_tab FROM spfli.

  ENDMETHOD.                    "getdata

 

*輸出全屏網格列表的方法

  METHOD alv_full.

    DATA: lr_functions TYPE REF TO cl_salv_functions.

 

    "創建實例

    TRY.

        cl_salv_table=>factory(

          IMPORTING

            r_salv_table = gr_table

          CHANGING

            t_table      = lt_tab

        ).

      CATCH cx_salv_msg.

    ENDTRY.

 

    "顯示ALV的標準功能

    lr_functions = gr_table->get_functions( ).

    lr_functions->set_all( 'X' ).

 

    "彈出窗口設置

    gr_table->set_screen_popup(

      start_column = 1

      end_column   = 120

      start_line   = 1

      end_line     = 20 ).

 

    "顯示列表

    gr_table->display( ).

  ENDMETHOD.                    "alv_full

 

*主方法,整合數據

  METHOD main.

    DATA: lt_tab TYPE ty_spfli.

 

    "取得要顯示的數據

    lt_tab = me->getdata( ).

 

    me->alv_full( lt_tab ).

  ENDMETHOD.                    "main

ENDCLASS.                    "lcl_alv IMPLEMENTATION

 

*執行按鈕點擊動作

AT SELECTION-SCREEN.

  CASE sy-ucomm.

    WHEN 'CLK'.

      DATA  lr_alv   TYPE REF TO lcl_alv.

      CREATE OBJECT lr_alv.

      lr_alv->main( ).

  ENDCASE.

發佈了30 篇原創文章 · 獲贊 1 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章