如何设置REUSE_ALV_GRID_DISPLAY'的单个单元格的是否可以输入
代碼如下:具體說明參見紅色說明(本例子是從訂單明細提取兩個字段的數據到內表)
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.
"第1步:用操作具體單元的是否可編輯的內表和工作區
DATA: LS_EDIT TYPE LVC_S_STYL,
????? LT_EDIT TYPE LVC_T_STYL.
"第2步:在內表定義添加字段,用于控制具體行的具體單元是否可編輯
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'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
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'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
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.
source url:https://www.sdn.sap.com/irj/sdn/wiki?path=/display/Snippets/Disable+or+Enable+Input+fields+Conditionally+In+ALV
轉載于:https://www.cnblogs.com/duadu/archive/2008/08/21/6166545.html
總結
以上是生活随笔為你收集整理的如何设置REUSE_ALV_GRID_DISPLAY'的单个单元格的是否可以输入的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 求一个剪短头发的个性签名!
 - 下一篇: jQuery 实现图片的特效1[原]