04-24-2008 1:38 PM
hi all,
I am displaying alv grid in my module pool screen. After taking certain input from the screen, I want to make one perticular cell input disabled . I dont want to disable the complete colum. I want to operate on one perticular cell of the grid.
I would be thankfull and happy to reward points to you.
thank you.
04-24-2008 1:50 PM
jayavant,
You'll need to look into the use of the appened field CELLSTYLES.
Should look something like this in its definition
DATA: BEGIN OF gt_outrec.
INCLUDE STRUCTURE zscemp_wk.
DATA: cellstyles TYPE lvc_t_styl.
DATA: END OF gt_outrec.
Use of it comes like this (this is doing every cell, but you can modify to your needs)
*&---------------------------------------------------------------------*
*& Form adjust_editables
*&---------------------------------------------------------------------*
FORM adjust_editables USING pt_list LIKE gt_outtab[].
DATA: ls_listrow LIKE LINE OF pt_list.
DATA: ls_stylerow TYPE lvc_s_styl.
DATA: ls_styletab TYPE lvc_t_styl.
LOOP AT pt_list INTO ls_listrow.
REFRESH ls_listrow-cellstyles.
REFRESH ls_styletab.
IF edit_mode EQ 'D'.
ls_stylerow-fieldname = 'BRANCH'.
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
APPEND ls_stylerow TO ls_styletab.
ENDIF.
ls_stylerow-fieldname = 'EMPNO'.
IF ls_listrow-empno IS INITIAL
AND edit_mode EQ 'E'.
ls_stylerow-style = cl_gui_alv_grid=>mc_style_enabled.
ELSE.
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
ENDIF.
APPEND ls_stylerow TO ls_styletab.
INSERT LINES OF ls_styletab INTO TABLE ls_listrow-cellstyles.
MODIFY pt_list FROM ls_listrow.
ENDLOOP.
ENDFORM. " adjust_editables
04-25-2008 8:19 AM
HI,
I THINK THIS WILL SOLVE YOUR PROBLEM
In screen flowlogic
Loop it_mara into wa_mara withcontrol
module disable.
endloop.
In main prg
module disable.
loop at screen.
check screen-name = 'wa_mara-matnr'.
if is_tab-netwr >100.000
screen-input = 0.----disable
else.
screen-input = 1.-----enable
endif.
endloop.
endmodule.
Reward Points if usefull,
Regards
Fareeads
04-25-2008 8:25 AM
Hi
See the demo program BCALV_EDIT_02.
Also check this sample..
here i am disabling the cells conditionally..
codeREPORT ZTESTALV.
TYPE-POOLS: SLIS.
Fieldcatalog
DATA: IT_FIELDCAT TYPE LVC_T_FCAT,
IT_FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV..
For Events
DATA:IT_EVENTS TYPE SLIS_T_EVENT.
DATA: X_FIELDCAT TYPE LVC_S_FCAT,
X_FIELDCAT1 TYPE SLIS_FIELDCAT_ALV.
DATA:X_LAYOUT TYPE LVC_S_LAYO.
"{ FOR DISABLE
DATA: LS_EDIT TYPE LVC_S_STYL,
LT_EDIT TYPE LVC_T_STYL.
"} FOR DISABLE
DATA: BEGIN OF IT_VBAP OCCURS 0,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
HANDLE_STYLE TYPE LVC_T_STYL, "FOR DISABLE
BUTTON(10),
END OF IT_VBAP.
DATA: LS_OUTTAB LIKE LINE OF IT_VBAP.
SELECT VBELN
POSNR
UP TO 10 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 = 'Button'.
x_fieldcat-fieldname = 'BUTTON'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '10'.
X_FIELDCAT-style = X_FIELDCAT-style bit-xor
cl_gui_alv_grid=>MC_STYLE_BUTTON bit-xor
cl_gui_alv_grid=>MC_STYLE_ENABLEd.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
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.
"{FOR DISABLE HERE 6ROW IS DISABLED
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-HANDLE_STYLE.
MODIFY IT_VBAP INDEX SY-TABIX FROM LS_OUTTAB TRANSPORTING
HANDLE_STYLE .
X_LAYOUT-STYLEFNAME = 'HANDLE_STYLE'.
"} UP TO HERE
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 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.[/code]
Regards,
Raj.
09-12-2008 11:45 AM