ALV 中根据条件设置某个cell 是否可编辑详解编程语言

*&———————————————————————*


*& 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/20186.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论