FM控制ALV單元格可編輯

2021-04-26 05:11:28 字數 3089 閱讀 3753

ecc6 測試ok!

report zalv_edit.

type-pools: slis.

*- fieldcatalog

data: it_fieldcat type lvc_t_fcat.

data: x_fieldcat type lvc_s_fcat.

data: x_layout type lvc_s_layo.

data: ls_edit type lvc_s_styl,

lt_edit type lvc_t_styl,

gr_alvgrid type ref to cl_gui_alv_grid .

data: begin of it_vbap occurs 0,

vbeln like vbap-vbeln,

posnr like vbap-posnr,

style type lvc_t_styl, "for disable

end of it_vbap.

data: ls_outtab like line of it_vbap.

select vbeln  posnr

up to 100 rows

into corresponding fields of table it_vbap

from vbap.

data:l_pos type i value 1.

clear: l_pos.

l_pos = l_pos + 1.

x_fieldcat-seltext = 'vbeln'.

x_fieldcat-fieldname = 'vbeln'.

x_fieldcat-tabname = 'itab'.

x_fieldcat-col_pos = l_pos.

x_fieldcat-edit = 'x'.

x_fieldcat-outputlen = '10'.

x_fieldcat-ref_field = 'vbeln'.

x_fieldcat-ref_table = 'vbak'.

clear x_fieldcat.

l_pos = l_pos + 1.

x_fieldcat-seltext = 'posnr'.

x_fieldcat-fieldname = 'posnr'.

x_fieldcat-tabname = 'itab'.

x_fieldcat-col_pos = l_pos.

x_fieldcat-edit = 'x'.

x_fieldcat-outputlen = '5'.

clear x_fieldcat.

l_pos = l_pos + 1.

"第3步:設定第六行兩個單元都不能輸入

sy-tabix = 6.

ls_edit-fieldname = 'vbeln'.

ls_edit-style = cl_gui_alv_grid=>mc_style_disabled.

ls_edit-style2 = space.

ls_edit-style3 = space.

ls_edit-style4 = space.

ls_edit-maxlen = 10.

insert ls_edit into table lt_edit.

ls_edit-fieldname = 'posnr'.

ls_edit-style = cl_gui_alv_grid=>mc_style_disabled.

ls_edit-style2 = space.

ls_edit-style3 = space.

ls_edit-style4 = space.

ls_edit-maxlen = 6.

insert ls_edit into table lt_edit.

insert lines of lt_edit into table ls_outtab-style.

"第4步:將控制資料寫到內錶

modify it_vbap index sy-tabix from ls_outtab transporting style .

"設定第10行只有專案不能輸入

clear ls_outtab.

refresh lt_edit.

ls_edit-fieldname = 'posnr'.

ls_edit-style = cl_gui_alv_grid=>mc_style_disabled.

ls_edit-style2 = space.

ls_edit-style3 = space.

ls_edit-style4 = space.

ls_edit-maxlen = 6.

insert ls_edit into table lt_edit.

insert lines of lt_edit into table ls_outtab-style.

sy-tabix = 10.

"將控制資料寫到內錶

modify it_vbap index sy-tabix from ls_outtab transporting style .

"第5步:設定控制字段

x_layout-stylefname = 'style'.

call function 'reuse_alv_grid_display_lvc'

exporting

i_callback_program = sy-repid

is_layout_lvc      = x_layout

it_fieldcat_lvc    = it_fieldcat

tables

t_outtab           = it_vbap

exceptions

program_error      = 1

others             = 2.

if sy-subrc ne 0.

message id sy-msgid type sy-msgty number sy-msgno

with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

endif.

可編輯單元格ALV

在使用alv顯示列表的過程中,我們可以使用it fieldcat引數設定某乙個欄位的可編輯狀態。但是,要設定具體的單元格的可編輯狀態對於對alv不是很了解的人來說是乙個頭大的問題。具體單元格可編輯狀態設定的主要思想 首先通過eidt引數設定列為可編輯狀態 其次對輸出內錶進行迴圈將不需要編輯的行設定為...

設定ALV單元格可編輯狀態

在使用alv顯示列表的過程中,我們可以使用it fieldcat引數設定某乙個欄位的可編輯狀態。但是,要設定具體的單元格的可編輯狀態對於對alv不是很了解的人來說是乙個頭大的問題。具體單元格可編輯狀態設定的主要思想 首先通過eidt引數設定列為可編輯狀態 其次對輸出內錶進行迴圈將不需要編輯的行設定為...

可編輯單元格的CListCtrl控制項

clistctrl 控制項生成之後,無論你單擊還是雙擊它的單元格,都沒有任何反應,如果我們需要像excel那樣雙擊乙個單元格後即可編輯該單元格的內容,那怎麼辦呢?乙個 方法就是雙擊單元格之後,在該單元格的地方生成乙個編輯框,然後讓輸入焦點落在該編輯框上,我們即可對該編輯框進行文字編輯,當輸入焦點從編...