*&---------------------------------------------------------------------*
*& Report Z_TEST_ZS13
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_TEST_ZS13 .
*&---------------------------------------------------------------------*
*& Report ZDEMO_ALVGRID_EDIT *
*& *
*&---------------------------------------------------------------------*
*& *
*& Example of a simple ALV Grid Report *
*& ................................... *
*& *
*& The basic ALV grid, Enhanced to display specific fields as *
*& editable depending on field value *
*&---------------------------------------------------------------------*
TABLES : ekko .
TYPE - POOLS : slis . "ALV Declarations
*Data Declaration
*----------------
TYPES : BEGIN OF t_ekko ,
ebeln TYPE ekpo - ebeln ,
ebelp TYPE ekpo - ebelp ,
statu TYPE ekpo - statu ,
aedat TYPE ekpo - aedat ,
matnr TYPE ekpo - matnr ,
menge TYPE ekpo - menge ,
meins TYPE ekpo - meins ,
netpr TYPE ekpo - netpr ,
peinh TYPE ekpo - peinh ,
field_style TYPE lvc_t_styl , "FOR DISABLE
END OF t_ekko .
DATA : it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0 ,
wa_ekko TYPE t_ekko .
*ALV data declarations
DATA : fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE .
DATA : it_fieldcat TYPE lvc_t_fcat , "slis_t_fieldcat_alv WITH HEADER LINE,
wa_fieldcat TYPE lvc_s_fcat ,
gd_tab_group TYPE slis_t_sp_group_alv ,
gd_layout TYPE lvc_s_layo , "slis_layout_alv,
gd_repid LIKE sy - repid .
************************************************************************
*Start-of-selection.
START - OF - SELECTION .
PERFORM data_retrieval .
PERFORM set_specific_field_attributes .
PERFORM build_fieldcatalog .
PERFORM build_layout .
PERFORM display_alv_report .
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
* Build Fieldcatalog for ALV Report
*----------------------------------------------------------------------*
FORM build_fieldcatalog .
wa_fieldcat - fieldname = 'EBELN' .
wa_fieldcat - scrtext_m = 'Purchase Order' .
wa_fieldcat - col_pos = 0 .
wa_fieldcat - outputlen = 10 .
wa_fieldcat - emphasize = 'X' .
wa_fieldcat - key = 'X' .
APPEND wa_fieldcat TO it_fieldcat .
CLEAR wa_fieldcat .
wa_fieldcat - fieldname = 'EBELP' .
wa_fieldcat - scrtext_m = 'PO Item' .
wa_fieldcat - col_pos = 1 .
APPEND wa_fieldcat TO it_fieldcat .
CLEAR wa_fieldcat .
wa_fieldcat - fieldname = 'STATU' .
wa_fieldcat - scrtext_m = 'Status' .
wa_fieldcat - col_pos = 2 .
APPEND wa_fieldcat TO it_fieldcat .
CLEAR wa_fieldcat .
wa_fieldcat - fieldname = 'AEDAT' .
wa_fieldcat - scrtext_m = 'Item change date' .
wa_fieldcat - col_pos = 3 .
APPEND wa_fieldcat TO it_fieldcat .
CLEAR wa_fieldcat .
wa_fieldcat - fieldname = 'MATNR' .
wa_fieldcat - scrtext_m = 'Material Number' .
wa_fieldcat - col_pos = 4 .
APPEND wa_fieldcat TO it_fieldcat .
CLEAR wa_fieldcat .
wa_fieldcat - fieldname = 'MENGE' .
wa_fieldcat - scrtext_m = 'PO quantity' .
wa_fieldcat - col_pos = 5 .
APPEND wa_fieldcat TO it_fieldcat .
CLEAR wa_fieldcat .
wa_fieldcat - fieldname = 'MEINS' .
wa_fieldcat - scrtext_m = 'Order Unit' .
wa_fieldcat - col_pos = 6 .
APPEND wa_fieldcat TO it_fieldcat .
CLEAR wa_fieldcat .
wa_fieldcat - fieldname = 'NETPR' .
wa_fieldcat - scrtext_m = 'Net Price' .
*设置单价字段可编辑
wa_fieldcat - edit = 'X' .
wa_fieldcat - col_pos = 7 .
wa_fieldcat - outputlen = 15 .
wa_fieldcat - datatype = 'CURR' .
APPEND wa_fieldcat TO it_fieldcat .
CLEAR wa_fieldcat .
wa_fieldcat - fieldname = 'PEINH' .
wa_fieldcat - scrtext_m = 'Price Unit' .
wa_fieldcat - col_pos = 8 .
APPEND wa_fieldcat TO it_fieldcat .
CLEAR wa_fieldcat .
ENDFORM . " BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*& Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
* Build layout for ALV grid report
*----------------------------------------------------------------------*
FORM build_layout .
* Set layout field for field attributes(i.e. input/output)
gd_layout - stylefname = 'FIELD_STYLE' .
gd_layout - zebra = 'X' .
ENDFORM . " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
* Display report using ALV grid
*----------------------------------------------------------------------*
FORM display_alv_report .
gd_repid = sy - repid .
* call function 'REUSE_ALV_GRID_DISPLAY'
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = gd_repid
* i_callback_user_command = 'USER_COMMAND'
is_layout_lvc = gd_layout
it_fieldcat_lvc = it_fieldcat
i_save = 'X'
TABLES
t_outtab = it_ekko
EXCEPTIONS
program_error = 1
OTHERS = 2 .
IF sy - subrc <> 0 .
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF .
ENDFORM . " DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
*& Form DATA_RETRIEVAL
*&---------------------------------------------------------------------*
* Retrieve data form EKPO table and populate itab it_ekko
*----------------------------------------------------------------------*
FORM data_retrieval .
SELECT ebeln ebelp statu aedat matnr menge meins netpr peinh
UP TO 10 ROWS
FROM ekpo
INTO CORRESPONDING FIELDS OF TABLE it_ekko .
ENDFORM . " DATA_RETRIEVAL
*&---------------------------------------------------------------------*
*&根据条件设置字段是否可编辑
*&---------------------------------------------------------------------*
* populate FIELD_STYLE table with specific field attributes
*----------------------------------------------------------------------*
form set_specific_field_attributes .
DATA ls_stylerow TYPE lvc_s_styl .
DATA lt_styletab TYPE lvc_t_styl .
* Populate style variable (FIELD_STYLE) with style properties
* The NETPR field/column has been set to editable in the fieldcatalog...
* The following code sets it to be disabled(display only) if 'NETPR'
* is gt than 10.
LOOP AT it_ekko INTO wa_ekko .
IF wa_ekko - netpr GT 10 .
ls_stylerow - fieldname = 'NETPR' .
ls_stylerow - style = cl_gui_alv_grid => mc_style_disabled .
"set field to disabled
APPEND ls_stylerow TO wa_ekko - field_style .
*可以按上面的代码添加多个字段的是否可修改
MODIFY it_ekko FROM wa_ekko .
ENDIF .
ENDLOOP .
endform . " set_specific_field_attributes
*& Report Z_TEST_ZS13
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_TEST_ZS13 .
*&---------------------------------------------------------------------*
*& Report ZDEMO_ALVGRID_EDIT *
*& *
*&---------------------------------------------------------------------*
*& *
*& Example of a simple ALV Grid Report *
*& ................................... *
*& *
*& The basic ALV grid, Enhanced to display specific fields as *
*& editable depending on field value *
*&---------------------------------------------------------------------*
TABLES : ekko .
TYPE - POOLS : slis . "ALV Declarations
*Data Declaration
*----------------
TYPES : BEGIN OF t_ekko ,
ebeln TYPE ekpo - ebeln ,
ebelp TYPE ekpo - ebelp ,
statu TYPE ekpo - statu ,
aedat TYPE ekpo - aedat ,
matnr TYPE ekpo - matnr ,
menge TYPE ekpo - menge ,
meins TYPE ekpo - meins ,
netpr TYPE ekpo - netpr ,
peinh TYPE ekpo - peinh ,
field_style TYPE lvc_t_styl , "FOR DISABLE
END OF t_ekko .
DATA : it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0 ,
wa_ekko TYPE t_ekko .
*ALV data declarations
DATA : fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE .
DATA : it_fieldcat TYPE lvc_t_fcat , "slis_t_fieldcat_alv WITH HEADER LINE,
wa_fieldcat TYPE lvc_s_fcat ,
gd_tab_group TYPE slis_t_sp_group_alv ,
gd_layout TYPE lvc_s_layo , "slis_layout_alv,
gd_repid LIKE sy - repid .
************************************************************************
*Start-of-selection.
START - OF - SELECTION .
PERFORM data_retrieval .
PERFORM set_specific_field_attributes .
PERFORM build_fieldcatalog .
PERFORM build_layout .
PERFORM display_alv_report .
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
* Build Fieldcatalog for ALV Report
*----------------------------------------------------------------------*
FORM build_fieldcatalog .
wa_fieldcat - fieldname = 'EBELN' .
wa_fieldcat - scrtext_m = 'Purchase Order' .
wa_fieldcat - col_pos = 0 .
wa_fieldcat - outputlen = 10 .
wa_fieldcat - emphasize = 'X' .
wa_fieldcat - key = 'X' .
APPEND wa_fieldcat TO it_fieldcat .
CLEAR wa_fieldcat .
wa_fieldcat - fieldname = 'EBELP' .
wa_fieldcat - scrtext_m = 'PO Item' .
wa_fieldcat - col_pos = 1 .
APPEND wa_fieldcat TO it_fieldcat .
CLEAR wa_fieldcat .
wa_fieldcat - fieldname = 'STATU' .
wa_fieldcat - scrtext_m = 'Status' .
wa_fieldcat - col_pos = 2 .
APPEND wa_fieldcat TO it_fieldcat .
CLEAR wa_fieldcat .
wa_fieldcat - fieldname = 'AEDAT' .
wa_fieldcat - scrtext_m = 'Item change date' .
wa_fieldcat - col_pos = 3 .
APPEND wa_fieldcat TO it_fieldcat .
CLEAR wa_fieldcat .
wa_fieldcat - fieldname = 'MATNR' .
wa_fieldcat - scrtext_m = 'Material Number' .
wa_fieldcat - col_pos = 4 .
APPEND wa_fieldcat TO it_fieldcat .
CLEAR wa_fieldcat .
wa_fieldcat - fieldname = 'MENGE' .
wa_fieldcat - scrtext_m = 'PO quantity' .
wa_fieldcat - col_pos = 5 .
APPEND wa_fieldcat TO it_fieldcat .
CLEAR wa_fieldcat .
wa_fieldcat - fieldname = 'MEINS' .
wa_fieldcat - scrtext_m = 'Order Unit' .
wa_fieldcat - col_pos = 6 .
APPEND wa_fieldcat TO it_fieldcat .
CLEAR wa_fieldcat .
wa_fieldcat - fieldname = 'NETPR' .
wa_fieldcat - scrtext_m = 'Net Price' .
*设置单价字段可编辑
wa_fieldcat - edit = 'X' .
wa_fieldcat - col_pos = 7 .
wa_fieldcat - outputlen = 15 .
wa_fieldcat - datatype = 'CURR' .
APPEND wa_fieldcat TO it_fieldcat .
CLEAR wa_fieldcat .
wa_fieldcat - fieldname = 'PEINH' .
wa_fieldcat - scrtext_m = 'Price Unit' .
wa_fieldcat - col_pos = 8 .
APPEND wa_fieldcat TO it_fieldcat .
CLEAR wa_fieldcat .
ENDFORM . " BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*& Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
* Build layout for ALV grid report
*----------------------------------------------------------------------*
FORM build_layout .
* Set layout field for field attributes(i.e. input/output)
gd_layout - stylefname = 'FIELD_STYLE' .
gd_layout - zebra = 'X' .
ENDFORM . " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
* Display report using ALV grid
*----------------------------------------------------------------------*
FORM display_alv_report .
gd_repid = sy - repid .
* call function 'REUSE_ALV_GRID_DISPLAY'
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = gd_repid
* i_callback_user_command = 'USER_COMMAND'
is_layout_lvc = gd_layout
it_fieldcat_lvc = it_fieldcat
i_save = 'X'
TABLES
t_outtab = it_ekko
EXCEPTIONS
program_error = 1
OTHERS = 2 .
IF sy - subrc <> 0 .
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF .
ENDFORM . " DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
*& Form DATA_RETRIEVAL
*&---------------------------------------------------------------------*
* Retrieve data form EKPO table and populate itab it_ekko
*----------------------------------------------------------------------*
FORM data_retrieval .
SELECT ebeln ebelp statu aedat matnr menge meins netpr peinh
UP TO 10 ROWS
FROM ekpo
INTO CORRESPONDING FIELDS OF TABLE it_ekko .
ENDFORM . " DATA_RETRIEVAL
*&---------------------------------------------------------------------*
*&根据条件设置字段是否可编辑
*&---------------------------------------------------------------------*
* populate FIELD_STYLE table with specific field attributes
*----------------------------------------------------------------------*
form set_specific_field_attributes .
DATA ls_stylerow TYPE lvc_s_styl .
DATA lt_styletab TYPE lvc_t_styl .
* Populate style variable (FIELD_STYLE) with style properties
* The NETPR field/column has been set to editable in the fieldcatalog...
* The following code sets it to be disabled(display only) if 'NETPR'
* is gt than 10.
LOOP AT it_ekko INTO wa_ekko .
IF wa_ekko - netpr GT 10 .
ls_stylerow - fieldname = 'NETPR' .
ls_stylerow - style = cl_gui_alv_grid => mc_style_disabled .
"set field to disabled
APPEND ls_stylerow TO wa_ekko - field_style .
*可以按上面的代码添加多个字段的是否可修改
MODIFY it_ekko FROM wa_ekko .
ENDIF .
ENDLOOP .
endform . " set_specific_field_attributes