*&---------------------------------------------------------------------*
*& 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
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/20186.html