Hi,
1.> Redefine Get_V_Attribute.
Create object using rv_descriptor and export your outboundplug let say Search_attribute
2.> METHOD op_search_attribute.
* Added by wizard: Outbound plug 'SEARCH_ATTRIBUTE'
CONSTANTS:
lc_if_view_name TYPE string VALUE 'MainWindow',
lc_usage TYPE string VALUE 'xyzValueHelp', "' SEARCH_ATTRIBUTE',
lc_event_name TYPE string VALUE 'SEARCHATTRIBUTECLOSED'.
DATA:
lv_title TYPE string,
lr_col TYPE REF TO if_bol_bo_col,
lr_cnode TYPE REF TO cl_bsp_wd_context_node_asp,
lr_qs TYPE REF TO cl_crm_bol_dquery_service,
lr_msg_srv TYPE REF TO cl_bsp_wd_message_service,
lr_col_selection_params TYPE REF TO if_bol_bo_col,
lr_current TYPE REF TO cl_crm_bol_entity,
lv_product TYPE string,
lv_event_string TYPE string.
cl_chtmlb_config_utility=>outbound_plug_event_info( EXPORTING iv_event_string = lv_event_string
IMPORTING ev_index = gv_index ).
lr_current ?= xyz( )->get_bo_by_index( gv_index ).
IF lr_current IS BOUND.
ENDIF.
* create popup
IF NOT search_attribute_popup IS BOUND.
lv_title = text-001.
search_campaign_popup = me->comp_controller->window_manager->create_popup(
iv_usage_name = lc_usage
iv_interface_view_name = lc_if_view_name
iv_title = lv_title ).
ENDIF.
* open popup
IF search_attribute_popup IS BOUND.
search_attribute_popup->set_on_close_event( iv_event_name = lc_event_name iv_view = me ).
search_campaign_popup->set_display_mode( if_bsp_wd_popup=>c_display_mode_surrounded ).
search_campaign_popup->open( iv_inbound_plug = 'VALUEHELP' ).
lr_cnode ?= search_attribute_popup->get_context_node( iv_cnode_name = 'ZSEARCH' ).
CHECK lr_cnode IS BOUND.
lr_qs ?= lr_cnode->collection_wrapper->get_current( ).
CHECK lr_qs IS BOUND.
lr_col_selection_params = lr_qs->get_selection_params( ).
lr_col_selection_params->clear( ).
CALL METHOD lr_qs->add_selection_param
EXPORTING
iv_attr_name = 'ATTR_ID'
iv_sign = 'I'
iv_option = 'EQ'
iv_low = lv_attr.
ENDIF.
ENDMETHOD.
3.> Define On_attribute_popup closed
method EH_ONSEARCHATTRIBUTECLOSED.
DATA:
lv_attr_id TYPE string,
lv_attr_txt TYPE string,
lr_cnode TYPE REF TO cl_bsp_wd_context_node,
lr_attr TYPE REF TO if_bol_bo_property_access,
lr_current TYPE REF TO if_bol_bo_property_access,
lv_event_string TYPE string,
lr_entity TYPE REF TO cl_crm_bol_entity,
lv_outbound_plug TYPE seocmpname.
DATA: lr_root TYPE REF TO if_bsp_wd_tree_node,
lr_node TYPE REF TO ZCL_IUICCON_xyz_CN02,
lv_attribute TYPE string,
lv_index TYPE string.
CONSTANTS: lc_tab TYPE string VALUE 'table[',
lc_attr TYPE string VALUE '].attr_id'.
CHECK search_attr_popup IS BOUND.
"Check if PopUp was closed by OK Button
lv_outbound_plug = search_attr_popup->get_fired_outbound_plug( ).
CHECK lv_outbound_plug = 'BACK'. "Otherwise PopUp/Search has been canceled
"Get query result context node
lr_cnode = search_campaign_popup->get_context_node( iv_cnode_name = 'ZRESULT' ).
CHECK lr_cnode IS BOUND.
lr_attr = lr_cnode->collection_wrapper->get_current( ).
CHECK lr_attr IS BOUND.
"Retrieve attribute field value using get_property_as_value.
"Clean up result
lr_cnode->collection_wrapper->clear( ).
Set attribute using set_property_as_value.
CLEAR: search_attribute_popup,
endmethod.
Arun : Now compare your logic with this code.... hope it works..... reward if helpful.
Regards,
Sumeet