Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

want to disable indivisual cell in alv grid

Former Member
0 Kudos

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.

4 REPLIES 4

Former Member
0 Kudos

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

Former Member
0 Kudos

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

Former Member
0 Kudos

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.

Former Member
0 Kudos

thank u