CHANGING PARTICULAR ROW EDITABLE ON LEAD SELECT IN LIST GUIBB
for the question raised from discussion
Hi everyone someone raised question how to change the particular row content to editable on lead select so i worked on this and finally Mr.Jitin gave me an idea how can we achive this, i thought it may be helpful to everyone later so i created scenario for this.
SCENARIO:
WHEN I LOAD THE APPLICATION LIST GUIBB WILL DISPLAY THE DETAILS OF MATNR.WHEN WE CLICK ON CHECKBOX FPM_GUIBB_LIST_ON_LEAD_SELECTI EVENT WILL BE TRIGGERED THEN THE PARTICULAR ROW WILL BE EDITABLE.
AFTER CHANGING THE VALUES WHEN YOU CLICK ON ENTER THEN FPM_GUIBB_LIST_CELL_ACTION IS TRIGGERED AND IT DISPLAYS THE SAVED DATA.( YOU CAN ADD CHECK CHANGE LOG INFORMATION THEN PROCEED WITH THIS ACTION IF CHANGES DONE OTHER WISE SIMPLY EXIT BUT IN THIS SCENARIO I DID NOT WRITTEN THAT CODE ).
NOW LET US START SCENARIO :
STEP1 : CREATE FEEDER CLASS
NOW GOTO INTERFACE TAB THEN ADD
IF_FPM_GUIBB_LIST( IF_FPM_GUIBB AUTOMATICALLY ADDED ).
CODE IN METHOD IF_FPM_GUIBB_LIST~GET_DEFINITION:
data:
lt_field_description type fpmgb_t_listfield_descr,
ls_field_description type fpmgb_s_listfield_descr,
ls_action_definition type fpmgb_s_actiondef,
lt_comp type abap_component_tab,
ls_comp type abap_componentdescr.
eo_field_catalog ?= cl_abap_tabledescr=>DESCRIBE_BY_DATA( lt_mara ).
ls_field_description–name = ‘MATNR’.
ls_field_description–text = ‘MATERIAL NUMBER’.
ls_field_description–read_only_ref = ‘MATNR_RO_REF’.
ls_field_description–visibility = cl_wd_uielement=>e_visible–visible.
APPEND ls_field_description to lt_field_description.
ls_field_description–name = ‘MATNR_RO_REF’.
ls_field_description–text = ‘MATERIAL KEY’.
ls_field_description–visibility = cl_wd_uielement=>e_visible–visible.
APPEND ls_field_description to lt_field_description.
ls_field_description–name = ‘MAKTX’.
ls_field_description–text = ‘MATERIAL DESCRIPTION’.
ls_field_description–read_only_ref = ‘MAKTX_RO_REF’.
ls_field_description–visibility = cl_wd_uielement=>e_visible–visible.
APPEND ls_field_description to lt_field_description.
ls_field_description–name = ‘MAKTX_RO_REF’.
ls_field_description–text = ‘DESCRIPTION KEY’.
ls_field_description–visibility = cl_wd_uielement=>e_visible–visible.
APPEND ls_field_description to lt_field_description.
et_field_description = lt_field_description.
ls_action_definition–id = IF_FPM_GUIBB_LIST=>GC_FPM_EVENT_ON_LEAD_SEL.
ls_action_definition–text = ‘ON LEAD SELECT’.
ls_action_definition–visible = cl_wd_uielement=>e_visible–visible.
APPEND ls_action_definition to et_action_definition.
CODE IN METHOD IF_FPM_GUIBB_LIST~GET_DATA :
data:ls_fieldusage type fpmgb_s_fieldusage,
lt_fieldusage type fpmgb_t_fieldusage,
lo_fpm type REF TO if_fpm.
IF IV_EVENTID->MV_EVENT_ID = ‘FPM_START’.
data:ls_mara like LINE OF lt_mara.
SELECT MATNR MAKTX FROM MAKT INTO CORRESPONDING FIELDS OF TABLE LT_MARA WHERE SPRAS = ‘EN’.
loop at lt_mara into ls_mara.
ls_mara–matnr_ro_ref = ‘X’.
ls_mara–maktx_ro_ref = ‘X’.
MODIFY lt_mara from ls_mara.
clear:ls_mara.
endloop.
CT_DATA = LT_MARA.
EV_DATA_CHANGED = abap_true.
ELSEIF IV_EVENTID->MV_EVENT_ID = IF_FPM_GUIBB_LIST=>GC_FPM_EVENT_ON_LEAD_SEL.
REFRESH LT_MARA.
LT_MARA = CT_DATA.
READ TABLE LT_MARA INTO LS_MARA INDEX CV_LEAD_INDEX.
LS_MARA–MATNR_RO_REF = ‘ ‘.
LS_MARA–MAKTX_RO_REF = ‘ ‘.
MODIFY LT_MARA FROM LS_MARA INDEX CV_LEAD_INDEX.
CT_DATA = LT_MARA.
EV_DATA_CHANGED = abap_true.
ELSEIF IV_EVENTID->MV_EVENT_ID = IF_FPM_GUIBB_LIST=>GC_GUIBB_LIST_ON_CELL_ACTION.
DATA:WA_MARA TYPE MAKT.
REFRESH LT_MARA.
LT_MARA = CT_DATA.
READ TABLE LT_MARA INTO LS_MARA INDEX CV_LEAD_INDEX.
SELECT SINGLE * FROM MAKT INTO WA_MARA WHERE MATNR = LS_MARA–MATNR AND SPRAS = SY–LANGU.
IF SY–SUBRC = 0.
WA_MARA–MAKTX = LS_MARA–MAKTX.
UPDATE MAKT SET MAKTX = WA_MARA–MAKTX WHERE MATNR = LS_MARA–MATNR AND SPRAS = SY–LANGU.
ELSE.
WA_MARA–MANDT = SY–MANDT.
WA_MARA–MATNR = LS_MARA–MATNR.
WA_MARA–SPRAS = SY–LANGU.
WA_MARA–MAKTX = LS_MARA–MAKTX.
WA_MARA–MAKTG = LS_MARA–MAKTX.
INSERT MAKT FROM WA_MARA.
ENDIF.
lo_fpm = cl_fpm_factory=>get_instance( ).
lo_fpm->RAISE_EVENT_BY_ID( iv_event_id = ‘FPM_START’).
ENDIF.
STEP2: CREATE EMPTY WEBDYNPRO COMPONENT
NOW CREATE APPLICATION
COMPONENT : FPM_OIF_COMPONENT.
WINDOW : FPM_WINDOW
PLUG: DEFAULT
STEP3: CONFIGURATION
NOTE: WHILE DOING THE CONFIGURATION PARAMETER_LIST,INITIALIZATION,GET_DEFINITION WILL EXICUTE
SO IF ANY CODE IN THOSE METHODS APPLICATION GOES TO DUMP.
NOW ENTER THE FEEDER CLASS NAME IF PARAMETERS ARE NOT DEFINED THEN IT WILL SHOW SOME SUSSES MESSAGE
ENTER THE FOLLOWING VALUES AS MENTIONED IN THE RECTANGULAR BOX ,NEXT MAINTAIN THE DISPLAY TYPE AS INPUTFIELD AS SHOWN BELOW,AND ONLY ADD MATNR,MAKTX FIELDS.CLICK ON THE LEAD SELECTION ACTION ASSIGNMENT AS SHOWN BELOW THEN SELECT THE STANDARD LEAD SELECTION THEN EVENT FPM_GUIBB_LIST_ON_LEAD_SELECTI WILL BE TRIGGERED AUTOMATICALLY.