on 12-23-2008 11:19 AM
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.
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 .
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks for your reply.
I was already tried with that but am not able to get the deactive mode.
Regards,
sravan.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Any Updates Please...
Regards,
sravan.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
86 | |
10 | |
10 | |
9 | |
6 | |
6 | |
6 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.