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(1) type 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'(201) TO ls_toolbar-quickinfo.
MOVE 'Passenger Info'(201) TO 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'(202) TO 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) |