cancel
Showing results for 
Search instead for 
Did you mean: 

making alv deactive

Former Member
0 Kudos

Hi All,

I have one button and one alv.

Now my requirement is when i press the button on first time the entire table should be in deactive mode

( i got this ) and if i press the same button on second time the entire table should be in edit mode ( i got this also ).But if i press the same button on third time , am able to get non editable mode ,but here i want in deactive mode .

I want display/Change toggle button.

My code is as follows ...Chech it Once..

DATA:V_FLAG TYPE C.

DATA LO_ND_FLAG TYPE REF TO IF_WD_CONTEXT_NODE.

DATA LO_EL_FLAG TYPE REF TO IF_WD_CONTEXT_ELEMENT.

DATA LS_FLAG TYPE WD_THIS->ELEMENT_FLAG.

  • navigate from <CONTEXT> to <FLAG> via lead selection

LO_ND_FLAG = WD_CONTEXT->GET_CHILD_NODE( NAME = WD_THIS->WDCTX_FLAG ).

  • get element via lead selection

LO_EL_FLAG = LO_ND_FLAG->GET_ELEMENT( ).

  • get all declared attributes

LO_EL_FLAG->GET_STATIC_ATTRIBUTES(

IMPORTING

STATIC_ATTRIBUTES = LS_FLAG ).

IF LS_FLAG-DIS_CHG EQ 'D'.

CALL METHOD LO_EL_FLAG->SET_ATTRIBUTE

EXPORTING

VALUE = 'C'

NAME = `DIS_CHG`.

V_FLAG = 'X'.

ELSEIF LS_FLAG-DIS_CHG EQ 'C'.

CALL METHOD LO_EL_FLAG->SET_ATTRIBUTE

EXPORTING

VALUE = 'D'

NAME = `DIS_CHG`.

CLEAR V_FLAG.

ENDIF.

*----


*Instantiate used component

DATA LO_CMP_USAGE TYPE REF TO IF_WD_COMPONENT_USAGE.

LO_CMP_USAGE = WD_THIS->WD_CPUSE_ALV( ).

IF LO_CMP_USAGE->HAS_ACTIVE_COMPONENT( ) IS INITIAL.

LO_CMP_USAGE->CREATE_COMPONENT( ).

ENDIF.

*Get config model

DATA LO_INTERFACECONTROLLER TYPE REF TO IWCI_SALV_WD_TABLE .

LO_INTERFACECONTROLLER = WD_THIS->WD_CPIFC_ALV( ).

DATA LO_VALUE TYPE REF TO CL_SALV_WD_CONFIG_TABLE.

LO_VALUE = LO_INTERFACECONTROLLER->GET_MODEL(

).

*----


DATA: LR_TABLE_SETTINGS TYPE REF TO IF_SALV_WD_TABLE_SETTINGS.

DATA: LR_COLUMN_SETTINGS TYPE REF TO IF_SALV_WD_COLUMN_SETTINGS,

LR_INPUT_FIELD TYPE REF TO CL_SALV_WD_UIE_INPUT_FIELD.

DATA: LR_COLUMN TYPE REF TO CL_SALV_WD_COLUMN.

IF V_FLAG = 'X'.

LO_VALUE->IF_SALV_WD_STD_FUNCTIONS~SET_EDIT_DELETE_ROW_ALLOWED( ABAP_TRUE ).

LO_VALUE->IF_SALV_WD_STD_FUNCTIONS~SET_EDIT_INSERT_ROW_ALLOWED( ABAP_FALSE ).

LO_VALUE->IF_SALV_WD_STD_FUNCTIONS~SET_EDIT_CHECK_AVAILABLE( ABAP_FALSE ).

LO_VALUE->IF_SALV_WD_STD_FUNCTIONS~SET_EDIT_APPEND_ROW_ALLOWED( ABAP_FALSE ).

LR_TABLE_SETTINGS ?= LO_VALUE.

LR_TABLE_SETTINGS->SET_READ_ONLY( ABAP_FALSE ).

*----


Making the Fields Editable -


LR_COLUMN_SETTINGS ?= LO_VALUE.

LR_COLUMN = LR_COLUMN_SETTINGS->GET_COLUMN( 'NAME1' ).

CREATE OBJECT LR_INPUT_FIELD

EXPORTING

VALUE_FIELDNAME = 'NAME1'.

LR_COLUMN->SET_CELL_EDITOR( LR_INPUT_FIELD ).

LR_TABLE_SETTINGS ?= LO_VALUE.

LR_TABLE_SETTINGS->SET_READ_ONLY( ABAP_FALSE ).

LR_COLUMN_SETTINGS ?= LO_VALUE.

LR_COLUMN = LR_COLUMN_SETTINGS->GET_COLUMN( 'EMAIL_ID' ).

CREATE OBJECT LR_INPUT_FIELD

EXPORTING

VALUE_FIELDNAME = 'EMAIL_ID'.

LR_COLUMN->SET_CELL_EDITOR( LR_INPUT_FIELD ).

LR_TABLE_SETTINGS ?= LO_VALUE.

LR_TABLE_SETTINGS->SET_READ_ONLY( ABAP_FALSE ).

ELSE.

LR_TABLE_SETTINGS ?= LO_VALUE.

LR_TABLE_SETTINGS->SET_READ_ONLY( ABAP_TRUE ).

ENDIF.

Could any one help me in this regard.

Thanks in advance.

Regards,

sravan.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi Sravan ,

Thats very easy .

Please follow the below steps.

I have seen ur code....plz make following changes in the ELSE PART .

ELSE.

LR_TABLE_SETTINGS ?= LO_VALUE.

LR_TABLE_SETTINGS->SET_READ_ONLY( ABAP_TRUE ).------>>>>>>>this is ur code .

now add this .

*make columns editable

DATA : l_column TYPE REF TO cl_salv_wd_column ,

l_column1 TYPE REF TO cl_salv_wd_column ,

lr_input TYPE REF TO cl_salv_wd_uie_input_field ,

l_input1 TYPE REF TO cl_salv_wd_uie_input_field .

l_column = lo_value->if_salv_wd_column_settings~get_column( 'NAME1' ).

CREATE OBJECT lr_input

EXPORTING

value_fieldname = 'NAME1'.

*MAKE COLUMN EDIATBLE

l_column->set_cell_editor( value = lr_input ) .

  • MAKE COULNMN NON EDITABLE i.e. read ony

CALL METHOD LR_INPUT->SET_READ_ONLY

EXPORTING

VALUE = ABAP_TRUE

.

*repaeat the same step for another field.

l_column = lo_value->if_salv_wd_column_settings~get_column( 'EMAIL_ID' ).

CREATE OBJECT lr_input

EXPORTING

value_fieldname = 'EMAIL_ID'.

*MAKE COLUMN EDIATBLE

l_column->set_cell_editor( value = lr_input ) .

  • MAKE COULNMN NON EDITABLE i.e. read ony

CALL METHOD LR_INPUT->SET_READ_ONLY

EXPORTING

VALUE = ABAP_TRUE

.

lo_value->IF_SALV_WD_TABLE_SETTINGS~set_read_only( abap_false ).

ENDIF.

hope this will solve ur problem...i have tested and its working perfectly

regards

Arjun .

Answers (3)

Answers (3)

Former Member
0 Kudos

Thanks for your reply.

I was already tried with that but am not able to get the deactive mode.

Regards,

sravan.

Former Member
0 Kudos

IF_SALV_WD_TABLE_SETTINGS in the following interface we have attribute EDIT_MODE use that....

try this .......

if LR_TABLE_SETTINGS->EDIT_MODE( ) eq 0.

else.

endif.

Former Member
0 Kudos

Any Updates Please...

Regards,

sravan.