Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29012
  • 博文数量: 10
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 120
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-02 19:21
文章分类

全部博文(10)

文章存档

2008年(10)

我的朋友

分类:

2008-09-05 10:39:38

grid是一种面向对象的方法,处理的结果跟调用FUNCTION'REUSE_ALV_DISPLAY'一样.
  **********************************************************************
**Program name:Z_ALVGIRD_TEST
**Description :alvgrid的用法总结
**Date/Autohr :david
************************************************************************
** M O D I F I C A T I O N  L O G
************************************************************************
** ChangeDate  Programmer  Request     Description
** ==========  ==========  ==========  =========================
**
************************************************************************
REPORT Z_ALVGIRD_TEST
  NO STANDARD PAGE HEADING
  LINE-SIZE 120
  LINE-COUNT 90.

*** Global Data declear
INCLUDE Z_ALVGIRD_TESTTOP.
INCLUDE Z_ALVGIRD_TESTF01.
INCLUDE Z_ALVGRID.
INCLUDE Z_ALVGIRD_TEST_PBO.
INCLUDE Z_ALVGIRD_TEST_PAI.
*======================================================================*
*  Selection Screen Events
*======================================================================*
***  maintain selection screen output
AT SELECTION-SCREEN OUTPUT.
TXT01 = '订单'.
TXT02 = '客户名称'.
TITLE1 = '查询'.
*** F4 value help
*AT SELECTION-SCREEN ON VALUE-REQUEST for .

*** check input data
AT SELECTION-SCREEN.
*AT SELECTION-SCREEN ON .
*AT SELECTION-SCREEN ON BLOCK <>.
****CHECK ON SELECT SCREEN INPUT
*======================================================================*
*  Report Events
*======================================================================*
*** initial data
INITIALIZATION.
*** prepare report data
START-OF-SELECTION.
*PERFORM get_data1.
CALL SCREEN 1002.
*** output report
END-OF-SELECTION.
*======================================================================*
*  List Events
*======================================================================*
*** page header
TOP-OF-PAGE.
*** page header after first list
TOP-OF-PAGE DURING LINE-SELECTION.
*** page footer
END-OF-PAGE.
*** when double click
AT LINE-SELECTION.
 
  *&---------------------------------------------------------------------*
*&  Include           Z_ALVGIRD_TESTTOP
*&---------------------------------------------------------------------*
TABLES:VBAK,VBAP.
DATA:BEGIN OF IT_VBAK OCCURS 0,
     vbeln TYPE vbak-vbeln,             " Sales document
     kunnr TYPE vbak-kunnr,             " Sold-to party
     netwr TYPE vbak-netwr,             " Net Value of the Sales Order
     erdat TYPE vbak-erdat,             " Creation date
     waerk TYPE vbak-waerk,             " SD document currency
     END OF IT_VBAK.


data:ok_code type sy-ucomm.
data:save_code type sy-ucomm.
data:is_load(1type c value ''.


SELECTION-SCREEN BEGIN OF SCREEN 1001 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TITLE1.
SELECTION-SCREEN BEGIN OF LINE.
 SELECTION-SCREEN POSITION 1.
 SELECTION-SCREEN COMMENT 1(8) TXT01.
 SELECTION-SCREEN POSITION 6.
 SELECT-OPTIONS :S_VBELN FOR VBAK-VBELN.

 SELECTION-SCREEN POSITION 60.
 SELECTION-SCREEN COMMENT 60(8) TXT02.
 SELECTION-SCREEN POSITION 65.
 SELECT-OPTIONS:S_KUNNR FOR VBAK-KUNNR.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK BLK1.
SELECTION-SCREEN END OF SCREEN 1001.
  *&---------------------------------------------------------------------*
*&  Include           Z_ALVGIRD_TESTF01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  get_data1
*&---------------------------------------------------------------------*
FORM get_data1 .
  SELECT vbeln kunnr netwr waerk erdat
    FROM vbak
*      UP TO p_max ROWS
    INTO CORRESPONDING FIELDS OF TABLE IT_VBAK
    WHERE VBELN IN S_VBELN.
ENDFORM.
  *&---------------------------------------------------------------------*
*&  Include           ZLA_MMRECEIVE_GRID
*&---------------------------------------------------------------------*
CLASS GRID DEFINITION.
PUBLIC  SECTION.
METHODS:SET_GRID_HEADER  IMPORTING
        FIELDNAME TYPE LVC_FNAME  " IT'S CHAR TYPES(30)
        COLTEXT   TYPE LVC_TXTCOL " IT'S CHAR TYPES(40)
        OUTPUTLEN TYPE LVC_OUTLEN " IT'S NUMC TYPES(6)
        NO_OUT    TYPE C
        IS_CHK    TYPE C
        EDIT      TYPE C
        do_sum    TYPE c
        IS_GROUP_FILED TYPE C
        IS_GROUP_TOTAL TYPE C
        HOTSPOT  TYPE C . "david added
METHODS:SET_CONTAINER    IMPORTING CONTAINER_NAME TYPE C.

METHODS:SET_GRID_VIEW     IMPORTING SMALLTITLE TYPE C
                                    NO_TOOLBAR TYPE C
                          CHANGING DATASOURCE TYPE STANDARD TABLE.
METHODS:SET_GRID_LAYOUT  CHANGING LAYOUT TYPE LVC_S_LAYO.
METHODS:SET_GRID_NAME    IMPORTING NAME  TYPE C.
METHODS:handle_toolbar
        FOR EVENT toolbar OF cl_gui_alv_grid
            IMPORTING e_object e_interactive.

METHODS:handle_user_command
        FOR EVENT AFTER_USER_COMMAND OF cl_gui_alv_grid
            IMPORTING e_ucomm.

METHODS:HANDLE_GRID_DOUBLU_CLICK FOR EVENT DOUBLE_CLICK OF
cl_gui_alv_grid IMPORTING e_row e_column ES_ROW_NO.

METHODS:Handle_hotspot_click
       FOR EVENT hotspot_click OF cl_gui_alv_grid
       IMPORTING e_row_id e_column_id es_row_no.
PRIVATE SECTION.
**********----------------------------------------------------*
**********GRID1
**********----------------------------------------------------*
DATA: COL_INDEX TYPE I.
DATA: Z_GRID TYPE REF TO CL_GUI_ALV_GRID.
DATA: GT_FIELDCAT TYPE LVC_T_FCAT.
DATA: IT_FIELDCAT LIKE LINE OF GT_FIELDCAT.
DATA: GS_LAYOUT   TYPE LVC_S_LAYO.
DATA: T_FCODES    TYPE UI_FUNCTIONS.
DATA: gs_toolbar  TYPE stb_button.
DATA: GRID_NAME(4)    TYPE C VALUE ''.
DATA: S_SORT          TYPE  LVC_T_SORT.
DATA: L_S_SORT        TYPE  LVC_S_SORT.
**********----------------------------------------------------*
**********CONTAINER
**********----------------------------------------------------*
DATA: G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA: SPLITTER_V type ref to CL_GUI_SPLITTER_CONTAINER.
DATA: SPLITTER_V_TOP type ref to CL_GUI_CONTAINER.
DATA: SPLITTER_V_BOTTOM type ref to CL_GUI_CONTAINER.
ENDCLASS.

CLASS GRID IMPLEMENTATION.
METHOD SET_GRID_HEADER.
      COL_INDEX = COL_INDEX + 1.
      IT_FIELDCAT-COL_POS   = COL_INDEX.
      IT_FIELDCAT-FIELDNAME = FIELDNAME.
      IT_FIELDCAT-COLTEXT   = COLTEXT.
      IT_FIELDCAT-NO_OUT    = NO_OUT.
      IT_FIELDCAT-SELTEXT   = COLTEXT.
      IT_FIELDCAT-EDIT      = EDIT.
      IT_FIELDCAT-CHECKBOX  = IS_CHK.
      IT_FIELDCAT-DO_SUM    = DO_SUM."DAVID ADDED
      IT_FIELDCAT-HOTSPOT   = HOTSPOT.
      IF OUTPUTLEN >= 0 .
        IT_FIELDCAT-OUTPUTLEN = OUTPUTLEN.
      ENDIF.
      IF IS_GROUP_FILED = 'X'.
      CLEAR L_S_SORT.
      L_S_SORT-SPOS = '1'.
      L_S_SORT-UP = 'X'.
      L_S_SORT-FIELDNAME = FIELDNAME.
      L_S_SORT-SUBTOT    = IS_GROUP_TOTAL.
      APPEND L_S_SORT TO S_SORT.
      ENDIF.
      APPEND IT_FIELDCAT TO GT_FIELDCAT.
ENDMETHOD.
METHOD SET_GRID_LAYOUT.
    GS_LAYOUT = LAYOUT.
ENDMETHOD.                    "SET_GRID_LAYOUT
METHOD SET_CONTAINER.
CREATE OBJECT: G_CUSTOM_CONTAINER EXPORTING CONTAINER_NAME =
CONTAINER_NAME.
create object SPLITTER_V
exporting
PARENT = G_CUSTOM_CONTAINER
ROWS = 1
COLUMNS = 1.
call method SPLITTER_V->SET_BORDER
exporting BORDER = CL_GUI_CFW=>FALSE.
call method SPLITTER_V->SET_ROW_MODE
exporting MODE = SPLITTER_V->MODE_ABSOLUTE.
call method SPLITTER_V->SET_ROW_HEIGHT
exporting ID = 1
HEIGHT = 160.
SPLITTER_V_TOP    = SPLITTER_V->GET_CONTAINER( ROW = 1 COLUMN = 1 ).
SPLITTER_V_BOTTOM = SPLITTER_V->GET_CONTAINER( ROW = 2 COLUMN = 1 ).
CREATE OBJECT: Z_GRID             EXPORTING I_PARENT       =
SPLITTER_V_TOP.
ENDMETHOD.
METHOD SET_GRID_VIEW.
  REFRESH t_fcodes .
  APPEND cl_gui_alv_grid=>mc_fc_expcrdata      TO t_fcodes.
  APPEND cl_gui_alv_grid=>mc_fc_expcrdesig     TO t_fcodes.
  APPEND cl_gui_alv_grid=>mc_fc_expcrtempl     TO t_fcodes.
  APPEND cl_gui_alv_grid=>mc_fc_graph          TO t_fcodes.
  APPEND cl_gui_alv_grid=>mc_fc_help           TO t_fcodes.
*  APPEND cl_gui_alv_grid=>mc_mb_sum            TO t_fcodes.
  APPEND cl_gui_alv_grid=>mc_fc_average        TO t_fcodes.
*  APPEND cl_gui_alv_grid=>mc_fc_to_office      TO t_fcodes.
*  APPEND cl_gui_alv_grid=>mc_fc_view_crystal   TO t_fcodes.
*  APPEND cl_gui_alv_grid=>mc_fc_send           TO t_fcodes.
*  APPEND cl_gui_alv_grid=>mc_fc_info           TO t_fcodes.
*  APPEND cl_gui_alv_grid=>mc_fc_call_abc       TO t_fcodes.
*  APPEND cl_gui_alv_grid=>mc_fc_sum            TO t_fcodes.
*  APPEND cl_gui_alv_grid=>mc_fc_subtot         TO t_fcodes.
  CALL METHOD Z_GRID->SET_TABLE_FOR_FIRST_DISPLAY
  EXPORTING
  IS_LAYOUT = GS_LAYOUT
  it_toolbar_excluding = t_fcodes[]"用于控制工具栏上的按钮
  CHANGING
  IT_OUTTAB        = DATASOURCE
  IT_SORT          = S_SORT[]
  IT_FIELDCATALOG  = GT_FIELDCAT.

  CALL METHOD Z_GRID->refresh_table_display
  EXCEPTIONS
  finished = 1
  OTHERS = 2.
  SET HANDLER ME->handle_toolbar FOR Z_GRID.
  SET HANDLER ME->handle_user_command FOR Z_GRID.
  SET HANDLER ME->HANDLE_GRID_DOUBLU_CLICK FOR Z_GRID.
  SET HANDLER ME->handle_hotspot_click FOR Z_GRID.
ENDMETHOD.
METHOD SET_GRID_NAME.
    GRID_NAME = NAME.
ENDMETHOD.                    "SET_GRID_NAME
METHOD HANDLE_GRID_DOUBLU_CLICK.  "双击事件处理
PERFORM METHOD_DOUBLE_CLICK USING E_ROW E_COLUMN ES_ROW_NO GRID_NAME.
ENDMETHOD.
METHOD handle_hotspot_click. "单击事件处理
PERFORM handle_hotspot_click USING e_row_id e_column_id es_row_no GRID_NAME.
ENDMETHOD.

METHOD handle_user_command.

ENDMETHOD.
METHOD handle_toolbar.  "在标准工具栏上添加按钮
PERFORM handle_toolbar USING e_object.
ENDMETHOD.

ENDCLASS.
DATA:GRID1 TYPE REF TO GRID.
 
  *&---------------------------------------------------------------------*
*&  Include           Z_ALVGIRD_TEST_PBO
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  STATUS_1002  OUTPUT
*&---------------------------------------------------------------------*
MODULE STATUS_1002 OUTPUT.
  SET PF-STATUS 'TOOLBAR'.
  if is_load = ''.
        is_load = 'X'.
   CREATE OBJECT  grid1.
   call method grid1->set_grid_header
          exporting
            fieldname = 'VBELN'
            coltext   = '销售单号'
            outputlen = 10
            no_out    = ''
            is_chk    = ''
            edit      = ''
            do_sum    = ''
            IS_GROUP_FILED = ''
            IS_GROUP_TOTAL = ''
            HOTSPOT  = 'X'.

  call method grid1->set_grid_header
          exporting
            fieldname = 'KUNNR'
            coltext   = '客户名称'
            outputlen = 10
            no_out    = ''
            is_chk    = ''
            edit      = 'X'
            do_sum    = ''
            IS_GROUP_FILED = 'X'
            IS_GROUP_TOTAL = ''
            HOTSPOT  =  ''.
  call method grid1->set_grid_header
          exporting
            fieldname = 'NETWR'
            coltext   = '金额'
            outputlen = 10
            no_out    = ''
            is_chk    = ''
            edit      = ''
            do_sum    = 'X'
            IS_GROUP_FILED = ''
            IS_GROUP_TOTAL = ''
            HOTSPOT  =  ''.
     call method grid1->set_grid_header
          exporting
            fieldname = 'ERDAT'
            coltext   = '创建者'
            outputlen = 10
            no_out    = ''
            is_chk    = ''
            edit      = ''
            do_sum    = ''
            IS_GROUP_FILED = ''
            IS_GROUP_TOTAL = ''
            HOTSPOT  =  ''.
        call method grid1->set_grid_header
          exporting
            fieldname = 'WAERK'
            coltext   = '币别'
            outputlen = 10
            no_out    = ''
            is_chk    = ''
            edit      = ''
            do_sum    = ''
            IS_GROUP_FILED = ''
            IS_GROUP_TOTAL = ''
            HOTSPOT  =  ''.
*************************************************
*Define parent panel
*************************************************
         call method grid1->set_container
          exporting
            container_name = 'CUS'.
         CALL METHOD grid1->set_grid_name
            EXPORTING
             name = 'MAIN'.
        DATA:gs_layout TYPE lvc_s_layo.
            GS_LAYOUT-DETAILTITL = '?????'.
            GS_LAYOUT-SEL_MODE   = 'D'.
            GS_LAYOUT-SMALLTITLE = ''.
*           GS_LAYOUT-SMALLTITLE =  SMALLTITLE.
            GS_LAYOUT-NO_TOOLBAR =  ''.
            GS_LAYOUT-ZEBRA      = 'X'.
            GS_LAYOUT-DETAILINIT = 'X'.
            GS_LAYOUT-CWIDTH_OPT = 'X'.
        CALL METHOD grid1->set_grid_layout
          CHANGING
           layout = gs_layout.

        call method grid1->set_grid_view
          exporting
            smalltitle = ''
            no_toolbar = 'X'
          changing
            datasource = IT_VBAK[].
   ENDIF.
*  SET TITLEBAR 'xxx'.
ENDMODULE.                 " STATUS_1002  OUTPUT
*&---------------------------------------------------------------------*
*&      Form  handle_toolbar
*&---------------------------------------------------------------------*
FORM handle_toolbar  USING   i_object TYPE REF TO cl_alv_event_toolbar_set.
  DATA: ls_toolbar TYPE stb_button.
   CLEAR ls_toolbar.
   MOVE 3 TO ls_toolbar-butn_type.
   APPEND ls_toolbar TO i_object->mt_toolbar.

   CLEAR ls_toolbar.
   MOVE 'PER' TO ls_toolbar-function.
   MOVE icon_display_text TO ls_toolbar-icon.
   MOVE 'Passenger Info'(201TO ls_toolbar-quickinfo.
   MOVE 'Passenger Info'(201TO ls_toolbar-text.
   MOVE ' ' TO ls_toolbar-disabled.
   APPEND ls_toolbar TO i_object->mt_toolbar.

   CLEAR ls_toolbar.
   MOVE 'EXCH' TO ls_toolbar-function.
   MOVE 2 TO ls_toolbar-butn_type.
   MOVE icon_calculation TO ls_toolbar-icon.
   MOVE 'Payment in other Curencies'(202TO ls_toolbar-quickinfo.
   MOVE ' ' TO ls_toolbar-text.
   MOVE ' ' TO ls_toolbar-disabled.
   APPEND ls_toolbar TO i_object->mt_toolbar.
ENDFORM.                    " handle_toolbar
 
  *&---------------------------------------------------------------------*
*&  Include           Z_ALVGIRD_TEST_PAI
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_1002  INPUT
*&---------------------------------------------------------------------*
MODULE USER_COMMAND_1002 INPUT.
  ok_code   = sy-ucomm.
  save_code = ok_code.
  case save_code.
    WHEN 'QUERY'.
      PERFORM get_data1.
       call method GRID1->set_grid_view
          exporting
            smalltitle = ''
            no_toolbar = 'X'
          changing
            datasource = IT_VBAK[].
    WHEN 'QUIT'.
      LEAVE PROGRAM.
  endcase.
ENDMODULE.                 " USER_COMMAND_1002  INPUT
*&---------------------------------------------------------------------*
*&      Form  METHOD_DOUBLE_CLICK
*&---------------------------------------------------------------------*
FORM METHOD_DOUBLE_CLICK  USING   e_row     TYPE lvc_s_row
                                  e_column  TYPE lvc_s_col
                                  es_row_no TYPE lvc_s_roid
                                  grid_name TYPE c.
    IF grid_name = 'MAIN' AND e_column-fieldname = 'VBELN'.
      read table it_vbak index e_row-index.
      SET PARAMETER ID'AUN' FIELD IT_VBAK-VBELN.
      CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
    ENDIF.

ENDFORM.                    " METHOD_DOUBLE_CLICK
*&---------------------------------------------------------------------*
*&      Form  handle_hotspot_click
*&---------------------------------------------------------------------*
FORM handle_hotspot_click  USING  e_row     TYPE lvc_s_row
                                  e_column  TYPE lvc_s_col
                                  es_row_no TYPE lvc_s_roid
                                  grid_name TYPE c.
    IF grid_name = 'MAIN' AND e_column-fieldname = 'VBELN'.
      read table it_vbak index e_row-index.
      SET PARAMETER ID'AUN' FIELD IT_VBAK-VBELN.
      CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
    ENDIF.
ENDFORM.                    " handle_hotspot_click
  
 
 
阅读(1016) | 评论(4) | 转发(0) |
0

上一篇:LSMW upload data

下一篇:屏幕开发(dialog)

给主人留下些什么吧!~~

chinaunix网友2009-09-21 10:52:37

tu ran kan bu dong le

chinaunix网友2009-09-21 10:52:20

tu ran kan bu dong le

chinaunix网友2009-09-21 10:52:20

tu ran kan bu dong le

chinaunix网友2009-09-21 10:52:16

tu ran kan bu dong le