Quantcast
Channel: SCN : Popular Discussions - Floorplan Manager for Web Dynpro ABAP
Viewing all articles
Browse latest Browse all 1726

Raising FPM event in WDA Event Handler

$
0
0

Hi,

 

 

Dynamically Change an Object Instance Floorplan (OIF)

 

I'm replicating the AppCC in the tutorial to suppress dialog box.

 

In my main view of wd component, displaying PA0000 details of employee. If user selects a row and click on Show_ADDRESS button, the Address details PA0006 for the employee displays in a Modal Dialog box.

 

I wanted to suppress the address dialog box on click of Show_address button. So, Implemented IF_CONF_OIF_EXIT for APPCC. Settings are all done.

 

Created FPM event for dialog box in Show_address button event handler and raising the event.

 

Though the OVERRIDE_EVENT_OIF is triggered and inturn the IO_OIF->CANCEL_EVENT is processed, still the address dialog box appears.

 

Please share your thoughts, how to suppress the dialog.

 

method OVERRIDE_EVENT_OIF .

   DATA: lv_ev_val TYPE string.

   IF io_oif->mo_event->mv_event_id = cl_fpm_event=>GC_EVENT_OPEN_DIALOG_BOX.

*    io_oif->mo_event->mo_event_data->get_value( EXPORTING iv_key = 'B1'

*                                           IMPORTING ev_value = lv_ev_val ).

*    IF lv_ev_val = 'BUTTON1'.

       io_oif->cancel_event( ).

*    ENDIF.

 

*    io_oif->set_variant( 'VARIANT_2' ).

   ENDIF.

endmethod.



Button Event Handler:


*********************************************************

method ONACTIONSHOW .

   DATA: lo_nd_addr TYPE REF TO if_wd_context_node,

         lo_nd_org  TYPE REF TO if_wd_context_node,

         lo_el_org  TYPE REF TO if_wd_context_element,

         lo_el_addr TYPE REF TO if_wd_context_element,

         ls_org TYPE wd_this->element_org,

         lt_addr TYPE wd_this->elements_addr,

         l_cmp_api TYPE REF TO if_wd_component,

         l_win_mngr TYPE REF TO if_wd_window_manager,

         l_win TYPE REF TO if_wd_window,

         l_msg_mngr TYPE REF TO if_wd_message_manager,

*        l_win TYPE REF TO if_wd_window,

         lv_pernr TYPE pernr.

 

   lo_nd_org = wd_context->get_child_node( wd_this->wdctx_org ).

   lo_el_org = lo_nd_org->get_element( ).

   CALL METHOD lo_el_org->get_static_attributes

     IMPORTING

       static_attributes = ls_org.

   l_cmp_api = wd_comp_controller->wd_get_api( ).

   SELECT pernr endda begda uname anssa stras ort01 ort02 pstlz land1

     FROM pa0006

     INTO CORRESPONDING FIELDS OF TABLE lt_addr

     WHERE pernr = ls_org-pernr.

   IF sy-subrc eq 0.

 

     lo_nd_addr = wd_context->get_child_node( wd_this->wdctx_addr ).

     lo_nd_addr->bind_table( lt_addr ).

     l_win_mngr = l_cmp_api->get_window_manager( ).

     CALL METHOD l_win_mngr->create_window

       EXPORTING

*        modal                = ABAP_TRUE

         window_name          = 'ADDR_WINDOW'

*        title                =

*        close_button         = ABAP_TRUE

         button_kind          = IF_WD_WINDOW=>co_button_ok

         message_type         = IF_WD_WINDOW=>CO_MSG_TYPE_NONE

*        close_in_any_case    = ABAP_TRUE

*        message_display_mode =

*        default_button       =

*        is_resizable         = ABAP_TRUE

       receiving

         window               = l_win.

       l_win->open( ).

 

   ELSE.

     l_msg_mngr = l_cmp_api->get_message_manager( ).

     l_msg_mngr->report_error_message(

           message_text = 'No Address for the selected employee' ).

 

   ENDIF.

**************************************************************************************************

DATA: lo_fpm_event TYPE REF TO cl_fpm_event,

       lo_fpm TYPE REF TO if_fpm.

CALL METHOD cl_fpm_event=>create_by_id

   EXPORTING

     iv_event_id    = cl_fpm_event=>GC_EVENT_OPEN_DIALOG_BOX

*    io_event_data  =

*    iv_action_type = IF_FPM_CONSTANTS=>GC_ACTION_TYPE-STANDARD

   receiving

     ro_event       = lo_fpm_event.

 

lo_fpm = cl_fpm_factory=>get_instance( ).

lo_fpm_event->mo_event_data->set_value( EXPORTING iv_key = 'B1'

                                                   iv_value = 'BUTTON1').

lo_fpm->raise_event( EXPORTING IO_EVENT = lo_fpm_event ).

**************************************************************************************************

 

endmethod.


regards,

Shivakrishna E


Viewing all articles
Browse latest Browse all 1726

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>