Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
0 Kudos

hi every one in this blog i am going to show you how tabbed guibb works.

SCENARIO :  here tabbed guibb contains four tabs,each tab embeds one interface view of the component.however on the first tab contains the check boxes.

each check box is related to the visibility of the remaining tabs i.e if we click on the first check box TAB2 is visible or if we click on the second check box TAB3 is visible.

PLEASE SEE THE BELOW SCREEN SHOTS:


I USED FPM_OIF_COMPONENT.


WHEN THE COMPONENT LOADED.



NOW I ENABLE FIRST CHECK BOX

NOW I ENABLES ALL CHECK BOXES ONE BY ONE

NOW I DISABLE FOURTH CHECK BOX.

SO THIS IS MY REQUIREMENT LET US START.

WEBDYNPRO COMPONENT:  Z_DEMO_OBJECT1


IMPLEMENTED INTERFACES: 


1)IF_FPM_UI_BUILDING_BLOCK: when we add this interface automatically FPM methods (  FLUSH  - to send the data to  Central Data Model,NEEDS_FOR_CONFIRMATION  - to provide the data loss popup if data not saved ,PROCESS_EVENT - to process the fpm events,PROCESS_BEFORE_OUTPUT - to read the data to be displayed ,AFTER_FAILED_EVENT - to handle the failed events  ) are loaded in to the

COMPONENT CONTROLLER.



2) IF_FPM_TABBED_CONF_EXIT :  when we add this interface only OVERRIDE_CONFIG_TABBED method is added which is triggered after every fpm event raised.

                                                           



COMPONENT CONTROLLER :

CODE IN ACTIVE_FIRST_TAB:


types:
BEGIN OF ty_s_tab,
variant
TYPE string,
id TYPE string,
name
TYPE string,
END OF ty_s_tab .
types:
ty_t_tab
TYPE STANDARD TABLE OF ty_s_tab .

DATA:LV_VARIANT_ID TYPE STRING,
LT_TAB
TYPE TY_T_TAB,
LS_TAB
LIKE LINE OF LT_TAB.

CALL METHOD WD_THIS->GO_TABBED->GET_CURRENT_VARIANT
RECEIVING
RV_VARIANT_ID
= LV_VARIANT_ID.

TRY.
CALL METHOD WD_THIS->GO_TABBED->GET_TABS
EXPORTING
IV_VARIANT_ID
= LV_VARIANT_ID
IMPORTING
ET_TAB       
= LT_TAB.
CATCH CX_FPM_FLOORPLAN .
ENDTRY.

LOOP AT LT_TAB INTO LS_TAB.
IF SY-TABIX GT 1.
CALL METHOD WD_THIS->GO_TABBED->SET_TAB_VISIBLE
EXPORTING
IV_TAB_ID 
= LS_TAB-ID
IV_VISIBLE
= ' '.
CLEAR LS_TAB.
ENDIF.
ENDLOOP.

CODE IN INITIALIZE_BOX:

  DATA lo_nd_check TYPE REF TO if_wd_context_node.
DATA lo_el_check type ref to if_wd_context_element.
DATA lt_check TYPE wd_this->Elements_check.
DATA ls_check TYPE wd_this->Element_check.
*  navigate from <CONTEXT> to <CHECK> via lead selection
lo_nd_check
= wd_context->get_child_node( name = wd_this->wdctx_check ).


*  @TODO handle non existant child
IF NOT lo_nd_check IS INITIAL.

do 3 times.
lo_el_check
= lo_nd_check->create_element( ).
lo_nd_check
->bind_element( new_item = lo_el_check set_initial_elements = abap_false ).

enddo.

ENDIF.

CODE IN OVERRIDE_CONFIG_TABBED


  DATA lv_VISIBLE TYPE BOOLE_D.
DATA lv_id TYPE string.
DATA lv_name  TYPE string.
CASE io_tabbed->mo_event->mv_event_id.
WHEN 'FPM_START'.
WD_THIS
->GO_TABBED = IO_TABBED.
wd_this
->active_first_tab(
*    lo_tabbed =                        " ref to if_fpm_tabbed
).

WHEN 'ADD_TAB'.
io_tabbed
->mo_event->MO_EVENT_DATA->get_value( EXPORTING iv_key = 'ID' IMPORTING ev_value = lv_id ).
io_tabbed
->mo_event->MO_EVENT_DATA->get_value( EXPORTING iv_key = 'NAME' IMPORTING ev_value = lv_name ).

CALL METHOD IO_TABBED->SET_TAB_VISIBLE
EXPORTING
IV_TAB_ID 
= LV_ID
IV_VISIBLE
= 'X'.
WHEN 'DELETE_TAB'.
io_tabbed
->mo_event->MO_EVENT_DATA->get_value( EXPORTING iv_key = 'ID' IMPORTING ev_value = lv_id ).
io_tabbed
->mo_event->MO_EVENT_DATA->get_value( EXPORTING iv_key = 'NAME' IMPORTING ev_value = lv_name ).

CALL METHOD IO_TABBED->SET_TAB_VISIBLE
EXPORTING
IV_TAB_ID 
= LV_ID
IV_VISIBLE
= ' '.



endcase.

CODE IN WDDOINIT :


wd_this->initialize_box( ).

VIEW CONTROLLER:


CODE IN ONACTIONON_CHECK_BOX :

types:
BEGIN OF ty_s_tab,
variant
TYPE string,
id TYPE string,
name
TYPE string,
END OF ty_s_tab .
types:
ty_t_tab
TYPE STANDARD TABLE OF ty_s_tab .

DATA:LV_VARIANT_ID TYPE STRING,
LT_TAB
TYPE TY_T_TAB,
LS_TAB
LIKE LINE OF LT_TAB,
LV_INDEX
TYPE I.

CASE ID.
WHEN 'TABLE_CHECK_BOX_EDITOR'.
DATA: lo_fpm TYPE REF TO if_fpm,
lo_event
TYPE REF TO cl_fpm_event.


CALL METHOD CONTEXT_ELEMENT->GET_INDEX
RECEIVING
MY_INDEX
= LV_INDEX.

DATA lo_nd_check TYPE REF TO if_wd_context_node.

DATA lo_el_check TYPE REF TO if_wd_context_element.
DATA ls_check TYPE wd_this->Element_check.
DATA lv_check_box TYPE wd_this->Element_check-check_box.

* navigate from <CONTEXT> to <CHECK> via lead selection
lo_nd_check
= wd_context->get_child_node( name = wd_this->wdctx_check ).

* @TODO handle non existant child
* IF lo_nd_check IS INITIAL.
* ENDIF.

* get element via lead selection
lo_el_check
= lo_nd_check->get_element( index = LV_INDEX ).
* alternative access  via index
* lo_el_check = lo_nd_check->get_element( index = 1 ).
* @TODO handle not set lead selection
IF lo_el_check IS INITIAL.
ENDIF.

* get single attribute
lo_el_check
->get_attribute(
EXPORTING
name
`CHECK_BOX`
IMPORTING
value = lv_check_box ).



CALL METHOD WD_COMP_CONTROLLER->GO_TABBED->GET_CURRENT_VARIANT
RECEIVING
RV_VARIANT_ID
= LV_VARIANT_ID.

TRY.
CALL METHOD WD_COMP_CONTROLLER->GO_TABBED->GET_TABS
EXPORTING
IV_VARIANT_ID
= LV_VARIANT_ID
IMPORTING
ET_TAB       
= LT_TAB.
CATCH CX_FPM_FLOORPLAN .
ENDTRY.

READ TABLE LT_TAB INTO LS_TAB INDEX LV_INDEX + 1.
IF lv_check_box = 'X'.
lo_fpm
= cl_fpm=>get_instance( ).
lo_event
= cl_fpm_event=>create_by_id( 'ADD_TAB' ).
lo_event
->MO_EVENT_DATA->set_value( iv_key  = 'ID' IV_VALUE = LS_TAB-ID ).
lo_event
->MO_EVENT_DATA->set_value( iv_key  = 'NAME' iv_value = LS_TAB-NAME ).
lo_fpm
->raise_event( io_event = lo_event ).
ELSEIF lv_check_box = ' '.
lo_fpm
= cl_fpm=>get_instance( ).
lo_event
= cl_fpm_event=>create_by_id( 'DELETE_TAB' ).
lo_event
->MO_EVENT_DATA->set_value( iv_key  = 'ID' IV_VALUE = LS_TAB-ID ).
lo_event
->MO_EVENT_DATA->set_value( iv_key  = 'NAME' iv_value = LS_TAB-NAME ).
lo_fpm
->raise_event( io_event = lo_event ).
ENDIF.
ENDCASE.




VIEWS  TAB2_VIEW  -------> TAB2

              TAB3_VIEW --------->TAB3

              TAB4_VIEW --------->TAB4

FOR APPLICATION CONFIGURATION .




1 Comment
Labels in this area