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: 
Former Member

To use Drag-and-Drop between GUIBBs and UIBBs, Drag-and-Drop must be enabled in the following areas:

  • The feeder class that provides the GUIBB with data or in the Web Dynpro component view of a UIBB

Code for enabling drag and drop in feeder class.

whenever we inherit any form feeder class( IF_FPM_GUIBB_FORM) or list feeder class(  IF_FPM_GUIBB_LIST ) interface in your classthere is interface method GET_DEFINATION

     GET_DEFINATION  offer a dedicated exporting parameter ET_DND_DEFINITION (of type FPMGB_T_DND_DEFINITION) in method GET_DEFINITION. Its line structure (of type FPMGB_S_DND_DEFINITION)

COMPONENT in structure FPMGB_S_DND_DEFINITION:-

      TYPE - This field defines the type of the drag & drop definition entry, whether it is a drag source  or a drop target. This attribute value cann’t  be overwritten in the configuration or modified at  runtime

ENABLED - This attribute defines whether a drag & drop definition entry is enabled or not. This attribute value can be overwritten in the configuration or modified at runtime.

Note:-

   If a drag source is disabled dragging will be completely blocked.

   If a drop target is disabled dropping on this target will be completely blocked.

TAGS - This attribute specifies the relevant tags of the drag & drop definition entry.    If you have to drop some data than drag source tag must match with drop source tag. Tags can be overwritten in the configuration or modified at runtime.

Multiple tags can be separated by a space.

      Note:-

           Tags such as ‘JITU*’  or ‘TEST*’, are supported by system.

SCOPE - The scope defines whether dropping is possible on the drag source itself or on any other GUIBB.

If dropping is perform on drag source itself its local for example dragging  row from list UIBB and dropping it on same list UIBB.

If dragging from list and dropping on form UIBB its scope must be global.

Default scope is ‘Global’. The scope can be overwritten in the configuration or later at runtime. .

NAME - A name is required for distinguish multiple drop definition entries of the same type.  this attribute can neither be overwritten during  configuration or modified at runtime.

OVERRIDE - This attribute defines whether other  properties such as scope  of the drag & drop definition entry can be modified at runtime or not.

This attribute value can be overwritten in the configuration

Code for setting diffrent attribute and making drag and drop sources:-

  • The Enable Drag and Enable Drop checkboxes in the configuration editor

Drag-and-Drop is primarily enabled in the feeder class and its attributes are displayed as the Drag-and-Drop attributes in the configuration editor. You can edit these attributes. If no Drag-and-Drop attributes are defined in the feeder class, no Enable Drag and Enable Drop checkboxes are displayed in the configuration editor.

To display the Drag-and-Drop attributes in the configuration editor.

In List UIBB :-

Open FPM_LIST_UIBB component in diffent window.

Select general setting tab  there on tool bar you will see GUIBB setting.

Selecting GUIBB setting will show DRAG and DROP setting click on it.

Explorer with popup window appear in which drag and drop properties defined in feeder class appear.

In  Form GUIBB :-

Open form GUIBB in different window.

Select group fro making it drop source.

Whenever a drag source is dropped  FPM event 'FPM_DROP_COMPLETED' is triggered. 

if_fpm_guibb_list=>gc_guibb_list_on_drop constant have value 'FPM_DROP_COMPLETED'

after triggering 'FPM_DROP_COMPLETED'  we have to  call method get_value( )  of interface IF_FPM_PARAMETER 

If you export drag source ( if_fpm_guibb_constants=>gc_guibb_dnd-drag_source ) in get_value( ) method.

Method  will fill variable  of type fpmgb_s_drag_and_drop this variable have all information about drag source.

DRAG_SOURCE_INDICES – holds  table index

DROP_POSITION  - holds at which drag data is dropped

DRAG_SOURCE_DATA – holds all drag source data

Code  when  'FPM_DROP_COMPLETED'   triggered.

  IF iv_eventid->mv_event_id = if_fpm_guibb_list=>gc_guibb_list_on_drop.

    iv_eventid->mo_event_data->get_value( exporting iv_key = if_fpm_guibb_constants=>gc_guibb_dnd-drag_source
                                          importing ev_value = lt_drag_result ).


lo_result = lt_drag_result-drag_source_data.


      if lo_result is not initial.
        ASSIGN lo_result->* TO <lr_result>.
        lt_drag_result_set = <lr_result>.
        ct_selected_lines = lt_drag_result-drag_source_indices.
        drop_position = lt_drag_result-drop_position.
        if ct_selected_lines is not initial.
          LOOP AT ct_selected_lines ASSIGNING <rstabix>.
            ls_selected_lines = <rstabix>-tabix.
            READ TABLE lt_drag_result_set assigning <value_sflight> index ls_selected_lines.
            ls_sflight-connid = <value_sflight>-connid.
            ls_sflight-carrid = <value_sflight>-carrid.
            ls_sflight-planetype = <value_sflight>-planetype.
            ls_sflight-price = <value_sflight>-price.
            ls_sflight-fldate = <value_sflight>-fldate.
            ls_sflight-currency = <value_sflight>-currency.
            if mv_drop_on_row eq abap_true.
              insert ls_sflight into lt_change_result index drop_position.
            else.
              insert ls_sflight into lt_result index drop_position.
            endif.
            drop_position = drop_position + 1.
          endloop.
        endif.

      endif.

Labels in this area