Quantcast
Channel: SCN : Document List - Floorplan Manager for Web Dynpro ABAP
Viewing all 91 articles
Browse latest View live

FPM Developer's Guide 7.03/7.31 SP7

$
0
0

Updates include: CBA Enabler, and Simplification of CBA Wrapper Component, Asynchronous Callback, FPM Workbench, Search GUIBB Special Groups.

View this Document


SAP HANA Cloud Connector: Operator's Guide

$
0
0

Using the feeder class concept it is possible to build generic adapters on generic business logic encapsulations. Examples are BOL, BOPF or the ESF. Such adapters allow some reuse of generic feeder classes by application development so that UI logic does not need to be re-implemented for each application. FPM provides a rich adapter implementation on BOL which allows creating application UIs without a line of code, purely consisting of Web Dynpro ABAP configurations. The adapter objects can be found in package APB_FPM_BOL_CORE and test applications in APB_FPM_BOL_TEST in the WEBCUIF software layer.

View this Document

A Step-by-Step guide to create a simple FPM application using Feeder Class for FORM GUIBB

$
0
0

Introduction:


In this article, we will create a simple FPM Application using FEEDER CLASS for FORM GUIBB (Generic User Interface Building Blocks). We will use OIF (Object Instance Floorplan) in this article.

We will take a simple example of getting the material number from user and displaying the description of it using FORM GUIBB. One needs to follow all the steps to avoid the runtime errors.

Prerequisite: Before following this document, one should have a basic knowledge of WebDynpro ABAP and ABAP Classes.

What is Feeder Class?

A class that implements the IF_FPM_GUIBB_FORM ABAP interface (for form components) or the IF_FPM_GUIBB_LIST ABAP interface (for list components). Business logic can be access through it. It is the link between the application and the GUIBB.

There are 2 ways which can be used to develop the FPM application. One is using Free Style UIBB and Generic UIBB. In this article we will use the GUIBB (FORM is one of the available GUIBB).

 

Steps to be followed:

  1. Go to transaction code SE24 and create a FEEDER Class as follows.

    1.JPG

      

2)     Go to the “Interfaces” tab and enter the interface for FORM GUIBB “IF_FPM_GUIBB_FORM”.

2.jpg

And press Enter. It will automatically add the interface for the generic UIBB “IF_FPM_GUIBB

2.JPG

3)     Now if you click on the Methods tab, you will see all the methods implemented by these two interfaces.Make Sure you go inside each and every Method and activate them so it won’t give short dump.

 

3.JPG

4)     Now, go to method “GET_DEFINITION” enter the following code. 

* This method is for building Field catalog and actions required in the form

* Local Varibale declarations

  DATA: li_action_line    TYPE fpmgb_s_actiondef. 

* Prepare Field catalog

  eo_field_catalog ?= cl_abap_tabledescr=>describe_by_name( 'MAKT' ). " Here we can use any flat strutures or local types 

* Prepare actions

  li_action_line-id       = 'GET_MAT'.  " You can give wahtever name you want to the action ID

  li_action_line-visible  = cl_wd_uielement=>e_visible-visible.

  li_action_line-enabled  = abap_true.

  li_action_line-imagesrc = 'ICON_ADDRESS'.                          " Image for actions

  APPEND li_action_line TO et_action_definition.

1.jpg

5)     Go to method “GET_DATA” enter the following code.

  DATA : li_makt_line TYPE makt. 

  li_makt_line = cs_data.  "cs_data contains the data

  IF li_makt_line-matnr IS NOT INITIAL.

    SELECT SINGLE * FROM makt INTO cs_data WHERE matnr = li_makt_line-matnr .

    ev_data_changed = abap_true.

  ENDIF. 

* Check if the "Start Over" Button in clicked ; If yes clear the contents

  if io_event->MV_EVENT_ID = 'FPM_GOTO_START'.

    CLEAR cs_data.

  ENDIF.


4.JPG

REMOVED steps 6, 7 and 8

 

 

9)     Create the WebDynpro Application by right clicking on component as follows.

5.JPG

10)  Change the component and View in the properties of WD Application. In this example we are using OIF and hence the component is as follows. In case of other floorplans like GAF and OVP write FPM_GAF* and do the F4 and you will get the list.

            Component     :  FPM_OIF_COMPONENT

            Interface view:  FPM_WINDOW

7.jpg


11)  Now go to the package where you have saved the WebDynpro Application and right click on the Application and click “Create/Change Configuration”. 

 

6.JPG

12)  It will open the browser. Enter the Configuration ID. This is the FIRST CONFIGURATION of your FPM application. This is called as APPLICATION CONFIGURATION. Press Enter so it will give the following ERROR.

 

7.JPG

This is expected because till this point your APPLICATION CONFIGURATION does not exist. Click on Create button. You will receive the success message. 

8.JPG

13)  After Application Configuration, it’s time to create the Component Configuration for your OIF floorplan.

Enter the name component configuration name and click on “Go to Component Configuration”. 


11.jpg

This is again expected error and same as above (Step 12). Click on Create and give your package and it will open the next screen with the success message. 

9.JPG

14)  Click on the “Attributes” button and enter Component as “FPM_FORM_UIBB”.

 

13.jpg


Now as mentioned in the informational message on screen, go to View and click on F4 help and select the View as FORM_WINDOW.

 

10.JPG

Click OK

15.jpg

15)  Now let’s create the GUIBB Configuration and hence enter the Configuration Name and click Enter. It will appear above the “Configure UIBB” button.

11.JPG

16)  You will receive the same error and that is expected error. Click on Create.

166.jpg

17)  Enter your package name and then it will ask for the FEEDER CLASS name. Enter the Feeder Class name and click on Edit Parameters.

 

17.jpg

18)  You will receive the warning message and that can be ignored.

 

18.jpg

Just click OK. 

 

12.JPG

19)  On this screen, Click on the “Add Group”. It will add the group1 under Form and you can name it. 

20.jpg

20)  After adding group, we need to configure that as follows. Select the MATNR as we want to display it as Input field and then add “Button Row”. Click OK. 

 

13.JPG

21)  From Enhancement pack 5, we have some very good options like Value Suggestion while entering the material number. In order to view all the options available; just click on the “Element: Material” link under FORM-> Group1. 


22.jpg

22)  After that let’s configure the button we have added and add the action to it.

 

14.JPG

23)  To display the material details, lets add one more group and configure it by selecting the fields we want to display as follows.

 

24.jpg

24)  Click on the individual elements and set the property as follows :

 

15.JPG


26.jpg

Do it for all the fields and click on SAVE. 


25)  Finally, TEST the application. There are 2 ways to test the application as follows.

a)         Click on the Application Configuration link and then click on TEST.

aa     16.JPG

  It will take you to the Application Configuration. Just click on TEST.

   17.JPG

b)    From SE80; enter your package name and select the application and click on Application Configuration and execute.

29.jpg

26)  The Result screen looks like as follows, Enter the material and the click on Get Details it will populate the data.

 

18.JPG

31.jpg


Search Component with OVS (IF_FPM_SEARCH)

$
0
0

Search GUIBB with OVS:-

 

If you need ovs on search GUIBB this can be possible by implementing interface IF_FPM_GUIBB_OVS  .

 

Step to create search GUIBB with OVS.

  1. create search GUIBB .

    use below link for how to create simple search GUIBB

 

.  

  http://scn.sap.com/people/jitendrayadav/blog/2012/12/06/search-component-with-feeder-class-iffpmsearch

 

  1. interface tab enter IF_FPM_GUIBB_OVS interface it will implement method

1.JPG

 

  1. in order to assign fields OVS . go in method IF_FPM_GUIBB_SEARCH~GET_DEFINITION assign class name in attribute ovs_name .

     

Code :-

 

  ls_descr_attr-name = 'CARRID'.
  ls_descr_attr-
text = 'the carrier id'.
  ls_descr_attr-ovs_name =
'ZSEARCH_WITH_OVS'.
 
APPEND ls_descr_attr TO et_field_description_attr. 

    

  1. Implement PHASE_0.  

 

Code: -

  DATA:  l_text          TYPE wdr_name_value,
         l_label_texts  
TYPE wdr_name_value_list,
         l_column_texts 
TYPE wdr_name_value_list,
         l_window_title 
TYPE string,
         l_group_header 
TYPE string,
         l_table_header 
TYPE string.

  l_text-name =
'CARRID'
  l_text-
value = 'carrier id'.
 
APPEND l_text TO  l_label_texts.
 
append l_text TO  l_column_texts.
 
  l_text-name =
'CONNID'.
  l_text-
value = 'connid id'.
 
APPEND l_text TO  l_label_texts.
 
append l_text TO  l_column_texts.

  l_window_title =
'ovs in search GUIBB'.
  l_group_header =
'ovs in search GUIBB'.
  l_table_header =
'ovs in search GUIBB'.

  io_ovs_callback->set_configuration(
            label_texts  = l_label_texts
            column_texts = l_column_texts
            group_header = l_group_header
            window_title = l_window_title
            table_header = l_table_header
            col_count    =
1
            row_count    =
5 ).

 

  1. Implement PHASE_1.

     

Code :-

    BEGINOF t_stru_input,*   add fields for the display of your search input here
       carrid
TYPE s_carr_id,
       connid
type s_conn_id,
    
ENDOF t_stru_input .data: l_search_input  TYPE t_stru_input.

  io_ovs_callback->context_element->get_static_attributes(
     
IMPORTING static_attributes = l_search_input ).*     pass the values to the OVS component
  io_ovs_callback->set_input_structure(
     
input = l_search_input ).

 

  1. Implement PHASE_2.

 

Code :-

  beginof t_stru_list,*   add fields for the selection list here
    carrid
type s_carr_id,
      connid
type s_conn_id,
 
endof t_stru_list .

 

FIELD-SYMBOLS: <query_params> TYPE t_stru_input.
 
DATA: l_select_list   TYPESTANDARDTABLEOF t_stru_list,
        ls_list
TYPE t_stru_list,
        ls_select_list  
TYPE t_stru_list.

 
ASSIGN io_ovs_callback->query_parameters->*
                         
TO<query_params>.
 
IF  <query_params> ISASSIGNED.

   
SELECT carrid connid FROM sflight INTO CORRESPONDING FIELDSOFTABLE l_select_list WHERE carrid = <query_params>-carrid.
 
ENDIF.

  io_ovs_callback->set_output_table(
output = l_select_list ).

 

  1. Implement PHASE_3.

   Code :-

FIELD-SYMBOLS: <selection>    TYPE t_stru_list.

 
ASSIGN io_ovs_callback->selection->* TO<selection>.

 
IF<selection> ISASSIGNED.

    io_ovs_callback->context_element->set_attribute(
                           name  = IV_WD_CONTEXT_ATTR_NAME
                          
value = <selection>-carrid ).

  ENDIF.

 

 

Result will be :-

2.JPG

Floorplan Manager - Learning Material

$
0
0

Standard Classroom Training

A 4-day classroom training course on Floorplan Manager (FPM) for Web Dynpro ABAP is available (Code NET 313); follow this link for more details http://www.sap.com/education/

 

 

Other Learning Material

No opportunity to attend the classroom training? Then use the material in the table below to further your knowledge of FPM. The material is produced by members of the FPM team.

 

 

Where do you stand?What's available to you?
I want an overview of FPM
  • FPM 2-Minute Video 2 minutes, we swear! Get a very quick overview of what FPM is really about.
  • FPM Overview ....and now you're ready for a more detailed overview. A PPT presentation of about 15 slides.
  • FPM In a Nutshell FPM in just a little more depth than the above videos.
  • New FPM Video With the help of KPS Video Studio, the FPM team have produced a 20 minutes introduction video to FPM explaining the newest features and capabilities (November 2013).
I want a better understanding of FPM
I want to know about adapting FPM applications
I want to develop applications using FPM
I want to take things even further!

 

 

FPM Developer's Guide (FPM Cookbook):

 

From NetWeaver 7.4 SP4 onwards, the FPM Developer's Guide is combined with the FPM Administrator's Guide to form one Floorplan Manager for Web Dynpro ABAP document, and is available in the SAP Help Portal.

 

We hope you like the new layout.

 

Constructive criticism is always welcome; feel free to mail me (Celeste) with yours.

 

 

Cookbook Version

Release Notes (What's New)

(From SAP Help Portal/SAP NetWeaver Library)

RN 7.4 SP5

RN 7.4 SP4

RN 7.4 SP2
RN 7.03/7.31 SP7
RN 7.03/7.31 SP4
RN 7.03

 

Back to Top



Disable FPM Standard Previous and Next buttons in FPM_GAF_COMPONENT

$
0
0

I have searched for many threads for this functionality, even though i haven't get complete solution.

 

Finally discussed with my colleagues (they are priceless), and we have enhanced standard FPM_GAF_COMPONENT to full fill our requirement.

 

Steps

Create the Web Dynpro interface component with two methods called

  1. DISABLE_NEXT (ANY NAME) with method parameters showed in screen shot
  2. DISABLE_PREVIOUS (ANY NAME) method parameters same as above method

In my case I created methods like below screen shot

 

1.jpg

 

Method parameters

 

2.jpg

Implement MODIFY_VIEW_ASSEMBLY of FPM_GAF_COMPONENT with Post-Exit method

3.jpg

 

Write the below code in Post-Exit method

 

Method <method name>.

DATA:

     lr_tstdbtn               TYPE REF TO ziwci_if_wca_fpm_gaf_tbstdbtn,

     lf_changed               TYPE flag,

     ls_fpm_info              TYPE fpm_s_runtime_info,

     lr_fpm_node              TYPE REF TO if_fpm_node,

     lr_fpm_element           TYPE REF TO if_fpm_element,

     ls_button_state          TYPE wd_this->element_button_state,

     ls_target_state          TYPE wd_this->element_target_state.

   CHECK iv_event_failed <> abap_true.

   ls_fpm_info                = wd_this->mr_fpm->get_runtime_info( ).

   CHECK ls_fpm_info-floorplan = 'GAF'.

   CHECK wd_this->mr_app_cc_usage IS BOUND.

   TRY.

       lr_tstdbtn             ?= wd_this->mr_app_cc_usage->get_interface_controller( ).

     CATCH cx_sy_move_cast_error .

       RETURN.

   ENDTRY.

   lr_fpm_node                = wd_assist->mo_floorplan_target_state->get_fpm_root_node( ).

   lr_fpm_element             = lr_fpm_node->get_element).

   lr_fpm_element->get_attributes( IMPORTING attributes = ls_target_state ).

   lr_fpm_node                = wd_assist->mo_floorplan_btn_state->get_fpm_root_node( ).

   lr_fpm_element             = lr_fpm_node->get_element( ).

   lr_fpm_element->get_attributes( IMPORTING attributes = ls_button_state ).

   IF ls_button_state-previous_step_enabled IS NOT INITIAL.

     IF lr_tstdbtn->disable_previous_step( ls_target_state ) = abap_true.

       CLEAR ls_button_state-previous_step_enabled.

       lf_changed             = abap_true.

     ENDIF.

   ENDIF.

   IF ls_button_state-next_step_enabled IS NOT INITIAL.

     IF lr_tstdbtn->disable_next_step( ls_target_state ) = abap_true.

       CLEAR ls_button_state-next_step_enabled.

       lf_changed             = abap_true.

     ENDIF.

   ENDIF.

   IF lf_changed = abap_true.

     lr_fpm_element->set_attributes( attributes = ls_button_state ).

   ENDIF.

ENDMETHOD.

 

Add the above created web dynpro interface in any component of GAF Floorplan component like below

 

4.jpg

Finally implement the below method with your requirement

  • To disable Road map step numbers

METHOD override_event_gaf .
DATA:
lx_fpm_floorplan        
TYPE REF TO cx_fpm_floorplan,
lt_step                 
TYPE io_gaf->ty_t_mainstep,
lt_substep              
TYPE io_gaf->ty_t_substep,
lt_button               
TYPE if_fpm_cnr_gaf=>t_button,
ls_step                 
LIKE LINE OF lt_step,
lr_gaf_info             
TYPE REF TO if_fpm_gaf_info,
ls_target_state         
TYPE fpm_s_gaf_info,
ls_current_state        
TYPE fpm_s_gaf_info,
ls_state                
TYPE if_fpm_gaf=>ty_s_state,
ls_fpm_info             
TYPE fpm_s_runtime_info.

io_gaf
->get_current_state( IMPORTING es_current_state = ls_state ).
TRY.
ls_fpm_info         
= wd_this->gr_fpm->get_runtime_info( ).
lr_gaf_info          ?= ls_fpm_info
-floorplan_info.
TRY.
ls_target_state     
= lr_gaf_info->get_target_state( ).
CATCH cx_fpm_floorplan.
ENDTRY.
TRY.
ls_current_state    
= lr_gaf_info->get_current_state( ).
CATCH cx_fpm_floorplan.
ENDTRY.

io_gaf
->get_mainsteps( IMPORTING et_mainstep = lt_step ).

LOOP AT lt_step INTO ls_step.
IF NOT wd_this-><variable> IS INITIAL.
IF wd_this-><variable> EQ ‘X’.
CASE ls_step-id.
WHEN 'MAINSTEP_1' OR 'MAINSTEP_4' OR 'MAINSTEP_7'.
CALL METHOD io_gaf->enable_mainstep
EXPORTING
iv_variant_id 
= ls_step-variant
iv_mainstep_id
= ls_step-id
iv_enabled    
= abap_false.
ENDCASE.
ELSE.
CASE ls_step-id.
WHEN 'MAINSTEP_1'.
CALL METHOD io_gaf->enable_mainstep
EXPORTING
iv_variant_id 
= ls_step-variant
iv_mainstep_id
= ls_step-id
iv_enabled    
= abap_false.
ENDCASE.
ENDIF.
ELSE.
CASE ls_step-id.
WHEN  'MAINSTEP_4' OR 'MAINSTEP_5' OR 'MAINSTEP_7'.
CALL METHOD io_gaf->enable_mainstep
EXPORTING
iv_variant_id 
= ls_step-variant
iv_mainstep_id
= ls_step-id
iv_enabled    
= abap_false.
ENDCASE.
ENDIF.
ENDLOOP.
CATCH cx_fpm_floorplan INTO lx_fpm_floorplan.
ENDTRY.
ENDMETHOD
.

 

  • To Disable Next step

METHOD disable_next_step .
IF wd_this-><variable> IS INITIAL OR
NOT wd_this-><variable> IS INITIAL.
rv_disabled               
= abap_false.
IF is_gaf_info-mainstep    = 'MAINSTEP_6'.
rv_disabled             
= abap_true.
ENDIF.
ENDIF.
ENDMETHOD
.

 

  • To Disable Previous step

METHOD disable_previous_step .
IF NOT wd_this-><variable> IS INITIAL.
rv_disabled               
= abap_false.
IF is_gaf_info-mainstep = 'MAINSTEP_2'.
rv_disabled             
= abap_true.
ENDIF.
ENDIF.
ENDMETHOD
.

 

I hope this will help others who are looking for this kind of functionality.

Thanks to my Team members and SCN Members to write this document.

How to create a FPM Report using ACT with (almost) no coding

$
0
0

This guide describes step-by-step how a report can be created in NW 7.40 using the Application Creation Tool (ACT).

Coding is only required to implement authorisation checks, or if drill-down or additional action handling is required.

 

The guide has been written in response to this blog: ALV and FPM on SAP HANA which should be read first.

Floorplan Manager for Web Dynpro ABAP 7.4 SP08 SAP_UI SP10


Two shared component instance will be created if we set shared component configuration

$
0
0

Dear colleagues,

 

In our OIF component , shared component and configuration is used.

3.png

we think that FPM will create the shared component for us and only one shared component instance should be created.

 

But we saw two shared component instance created by FPM, one with correct configuration, another with empty configuration.

2.png

 

we debugged the code and saw that

1)firstly FPM will create shared component with our configuration

2)then FPM will instance the UIBB component

3)FPM will attach the shared component instance to UIBB component usage,  but in this step, it does not find the shared component instance created

in step 1), because it try to read shared instance with empty configuration.

 

Here is the code where we found the issue. Could you guys help check if it is wrong?

Class CL_PFM_COMPONENT_MANAGER.png

 

Million Thanks.

 

Best regards,

Tracy

Recently Featured Content in Floorplan Manager for Web Dynpro ABAP

$
0
0

** TEAM FPM ** - Model-Driven UI Development with FPM

    See what the development manager of FPM has to say: "... generation and configuration of UIs has never been as easy as it is today with FPM ...".

** TEAM FPM ** - How to use a Java Script Chart Library in Floorplan Manager Applications

** TEAM FPM ** - Analyzing your FPM Application (in general, customizing, enhancements, ...)

** TEAM FPM ** - Drag & Drop in FPM GUIBBs

** TEAM FPM ** - Melting Groups in the Display Mode of the GUIBB Form@GL2.0

 

NO LIMIT - New Ways to Navigate Data with SAP HANA

ALV and FPM on SAP HANA

See and feel the Difference

Read that article by Thea Hillenbrand

Featured Content for Floorplan Manager

$
0
0

Webdynpro ABAP FPM: Implementing OVS (F4/value Help) for a selection field in a Search UIBB.

$
0
0

You already have a fully operational Search UIBB. You have done all the hard work of creating a feeder class, FPM configuration, search UIBB. The feeder class methods , get_definition, process_event and other tasks to get the output displayed are already implemented in the feeder class. During a demo, a user suggested and that would wonderful if you provide input help for one of the field.  Later when I looked the input structure, the field did not have a search help assigned to it.

 

However, if you are not familiar with the creation of Search UIBB, you may please refer to the link below :

 

http://scn.sap.com/community/abap/blog/2012/12/16/search-guibb-list-guibb

 

Problem:

 

The selection screen need to have value help for a field which does not have a search help assigned to it.

 

 

 

imapge2.png

 

Solution:

 

One of the options was to create a custom search help and assign it to the input structure used in the search GUIBB. The other option was to try implementing an OVS for the input field.  In this document I will try to explain the procedure to implement OVS in feeder class.

 

 

It was time me to go back to the developer guide and our beloved collaborators in SCN. As per FPM developer guide, the document suggests that we follow the below procedure to implement OVS for a selection field in Search GUIBB. It take me a few hours to implement the below procedure. Hence, the idea to create a how-to document for OVS (Search GUIBB) .

 

Extract from the FPM developer guide

Whenever a DDIC search help is not applicable, you should consider the OVS mechanism. OVS offers a generic UI like the DDIC value help. However, you must offer the selection logic. To do this, you must provide the name of a class implementing IF_FPM_GUIBB_OVS in the field description in field OVS_NAME. If the specified name is the same as the feeder class name, then the feeder class instance will be used,
otherwise this class will be instantiated whenever it is needed.

            This interface offers 4 methods:

                1. HANDLE_PHASE_0 where the OVS popup can be “configured”

                 2. HANDLE_PHASE_1 to define the selection fields

                 3.  HANDLE_PHASE_2 where the result list must be determined

               4. HANDLE_PHASE_3 where the selected result list entry is passed back to the input field

             In order to fulfill these tasks, an instance of IF_WD_OVSis passed as an importing parameter to these methods.

 

 

Step 1.

 

 

Go to SE24 and open Feeder Class in edit mode: In this feeder class, now we need to include an additional standard IF_FPM_GUIBB_OVS interface Or your could Implement IF_FPM_GUIBB_OVS_SEARCH Interface. Here in this example we will be using IF_FPM_GUIBB_OVS interface.

 

IF_FPM_GUIBB_OVS_SEARCH interface includes the IF_FPM_GUIBB_OVS interface and in addition provides a method SET_CURRENT_SEARCH_CRITERIA. Example : A user selects  France from the dropdown list in the search criterion Country at runtime; accordingly, the search criterion City should only display cities in France in its dropdown list. IF_FPM_GUIBB_OVS_SEARCH can be used if we want to change a selection field based on value of the another selection field.

 

imapge3.png

 

 

 

Including the interface adds 4 new methods to the feeder class, HANDLE_PHASE_0, HANDLE_PHASE_1, HANDLE_PHASE_2
and HANDLE_PHASE_3. Make sure to open each method and save it once. After that, we will implementing code in  the handle_phase_2 and handle_phase_3 methods.




 

Step 2.

 

Method: IF_FPM_GUIBB_OVS~Handle_phase_2.

The method will be implemented to show the possible (F4 values ) to be displayed on screen. This method allows you to write custom logic to populate possible value help for a given field.

 

Input/Import Parameter:

 

  1. IV_FIELD_NAME (at runtime contains the selection field name for which the F4 (value help) is triggered.
  2. IO_OVS_CALLBACK ( a reference to IF_WD_OVS). This instance has method named set_output_table, which need to be used to populate the possible entries.

 

 

Declare a local structure and internal table to hold the F4 values to be displayed on screen. As always, now we will need to write a select statement to populate the internal table. After that we will pass this internal table to the set_output_table  method.

 

 

          TYPES : BEGIN OF lty_teds2,
            status
TYPE teds2-status,
            descrp
TYPE teds2-descrp,
         
END OF lty_teds2.
     DATA : lit_teds2 TYPE STANDARD TABLE OF lty_teds2.

        SELECT status descrp FROM teds2 INTO TABLE lit_teds2
   
WHERE langua = sy-langu.

 

       io_ovs_callback->set_output_table(
   
EXPORTING
     
output       = lit_teds2
*      table_header = table_header
*      column_texts = column_texts    " Table of Name Value Pairs

).

 

 

Step 3.

 

Method : IF_FPM_GUIBB_OVS~Handle_phase_3.

This method will be implemented to populate the selected value in the popup screen back to the selection screen field value.

 

Input/Import parameter:

 

IV_WD_CONTEXT_ATTR_NAME: This contains the name of the selection field attribute name. For example the field you have
added in the screen is IDOCSTATUS. The value of the attribute will be INPUT_IDOCSTATUS

 

IO_OVS_CALLBACK : ( a reference to IF_WD_OVS). To set the selected value back to the screen, we
will be using the instance attributes SELECTION and context_element

 

 

  1. Define a structure similar to the line type of the values displayed in F4 help.

 

           TYPES : BEGIN OF lty_teds2,
            status
TYPE teds2-status,
            descrp
TYPE teds2-descrp,
         
END OF lty_teds2.
    
FIELD-SYMBOLS: <ls_selection>    TYPE lty_teds2.

 

     2. Assign the attribute SELECTION to field symbol declared. Once assigned use the set_attribute method to set the value on the screen.

 

          ASSIGN io_ovs_callback->selection->* TO <ls_selection>.

         io_ovs_callback->context_element->set_attribute(
     
EXPORTING
       
value = <ls_selection>-status    " Attribute Value
        name 
= iv_wd_context_attr_name   " ).

 

Step 4.

 

Now we finished implementing the methods related to OVS.The next step is to ensure that the
OVS methods get triggered only when the user clicks on Value help on the desired field in this case the idoc status. 

 

 

IF_FPM_GUIBB_SEARCH~GET_DEFINITION

 

 

  ls_descr_attr-name = 'IDOCSTATUS'.
  ls_descr_attr
-text = 'IDOC Status'.
  ls_descr_attr
-ovs_name = Pass the name of the feeder class

    APPEND ls_descr_attr to et_field_description_attr.

 

 

Note: If you have implemented the OVS IF_FPM_GUIBB_OVS in a different class then pass the class
name of the
ls_descr_attr-ovs_name attribute.

 

 

Save and activate your feeder class. It’s time to test the application.

 

imapge4.png

imapge5.png

 

imapge6.png

 

The developer guides suggest that we implement all 4 methods to HANDLE_PHASE_0, HANDLE_PHASE_1, HANDLE_PHASE_2 and HANDLE_PHASE_3. However, in this case we have used methods handle_phase_2 and handle_phase_3 to populate and select the value back to the screen.

 

 

Handle_phase_1 : Can be used to define the fields that we want to see, the title of the popup window and other
optional values. This is done using the method of the instance
IO_OVS_CALLBACK->set_configuration

 

The key to implement OVS is to understand the instance IO_OVS_CALLBACK (interface IF_WD_OVS) . Additionally, we can try
out the attributes and methods of this class we will be able to understand OVS better.

 

 

I hope the document will be helpful and if you have any comments, please feel free to post it.

TechEd&&d-code 2104: UXP261

TechEd 2014 Lectures UXP105/261

$
0
0

UXP105: Big Data @ WDA/FPM

Analytical Content & Productivity Features

Bring your Big Data from SAP HANA, any DB, or ABAP BICS to the UI! Increase end-user productivity with powerful drill-down mechanisms, analytical charts, smart planning tables, and the intuitive Search and Find pattern. To provide attractive user interfaces, use the SAP Fiori-like Blue Crystal theme or utilize the cloud-based UI theme designer.

 

 

 


 

UXP261: Simplify Your Development with WD ABAP & FPM

Hands-on Session

In this session, learn how you can streamline and decrease your development efforts with Web Dynpro ABAP. Get your hands on smart wizards to easily create and enhance your Web applications. Access predefined services and capabilities to increase productivity with one click. Explore tools to efficiently analyze your applications.

 

***TEAM FPM*** Videos

$
0
0

Floorplan Manager - New Productivity Features in List GUIBB

Learn about productivity features recently introduced in the List GUIBB, and how easy it is to activate them.

 

 


**TEAM FPM** Blogs

$
0
0

Blogs from members of the FPM team.

You'll find the more recent blogs at the top of the table.

 

BloggerTopicSummary
Jens Ruths

Initial Search Page and subsequent External Navigation in the OVP Floorplan

Learn about the general requirements when navigating from a search result list, set up as an initial page, in an OVP application.
Jens BoeckenhauerA New Filter UIBBI would like to introduce a new Generic UIBB which serves as an analytical data browser and can be used for deep drill-down into specific segments of your (potentially big) data. In combination with a results list, you can find your filtered data records and navigate into specific object maintenance.
Jens Boeckenhauer

How to Create Beautiful Apps on BOPF Objects: Simple, without Code and Deploying Latest Features (I)

 

Part II: Fine-Tuning the Attribute Filter and Forms

 

Part III: Adding a Visual Business Map and Summary

You may have heard that it is possible to create web applications with FPM without any UI code. You may also have heard that with NW 7.40 release, FPM offers a large variety of new modern features such as quickviews, charts, maps, responsive design features, carousels, etc. But if you want to make use of it, you may not know how to start - and how to continue. This blog aims to show you how in a guided tour, supplemented by many screenshots, easy to understand and easy to reproduce.
Jens BoeckenhauerA Single Point of Entry to FPM UI DevelopmentThe new 'transaction code' for FPM.
Jens RuthsMaximize Mode in the OVP FloorplanWith this feature, the end user can enlarge the display of a UIBB so that only this UIBB is visualized on the page and all other UIBBs are no longer displayed.
Heike LeopoldCarousel UIBBA new GUIBB capable of displaying icons and pictures in a carousel format.
Julia BenderFly around the World with FPM & SAP Visual BusinessThe integration of SAP Visual Business with FPM lets you visualize your business data in an interative, graphical, 3D fashion.
Christian GuentherInstance Styling in FPMLearn how to format individual UI elements in your applications using FPM's Instance Styling.
Christian GuentherAsynchronous Events

If you must start a backend process from your FPM application that takes longer than 1 second, you have the following options:

  1. Block the UI and show a 'waiting' cursor for as long as the backend needs to fulfill the task
  2. Start the process in a seperate asynchronous task, allowing the user to continue to work with the application
Christian GuentherWork Protection

The basic requirement for work protection is very simple: Whenever the application contains unsaved data ('is dirty') and the user is about to leave the application, present him with a data-loss popup. Although this seems to be a rather easy requirement, there is some complexity involved. This is due to the fact that 3 parties must interact: The shell (Portal or NWBC), FPM and the business logic.

Ulrich Miller

Switching from the Old List UIBB to the New List UIBB (aka List ATS UIBB)

How you can switch from the List UIBB to the List ATS UIBB and the new features you can expect.
Julia BenderTranslation and Texts of FPM ApplicationsAll you ever wanted to know about translation of FPM objects.
Dirk BeckerModel-Driven UI Development with FPMDeriving UIs directly from business logic relations is an old dream of Software Architects and UI Designers. Many frameworks were built to reach this goal, but most of them failed due to the complexity of the business logic which needed to be implemented. Until now! Generation and configuration of UIs has never been as easy as it is today with FPM.
Simon HoegHow to use a Java Script Chart Library in Floorplan Manager ApplicationsThis blog presents an introduction on how to involve Java Script Chart libraries in FPM applications based on the new HTML Island UI element provided by WD ABAP from SAP Netweaver 7.31 SP5.
Julia BenderAnalyzing your FPM Application (in general, customizing, enhancements, ...)Ever wondered which kind of analysis tools and tricks are available to get a deep insight into your FPM application?
Jens RuthsDrag & Drop in FPM GUIBBsAll you need to know about D&D in GUIBBs...
Jens RuthsMelting Groups in the Display Mode of the GUIBB Form@GL2.0There are often fields in forms that belong semantically together and are therefore positioned one after the other in the same row of the form. Such fields are called “Melting Groups”. Typical examples include addresses with zip code and city, street and house number, phone numbers with area code and extension, amount and their currency, or numbers and their measure unit.

 

Also:

 

 

 

ALV and FPM on SAP HANA: See and feel the Difference - Thea Hillenbrand

Practical Help-Demos & Interactive Tutorials

FPM Developer/Admin Guide ('Cookbook')

$
0
0

From NetWeaver 7.4 SP4 onwards, the FPM Developer's Guide is combined with the FPM Administrator's Guide to form one Floorplan Manager for Web Dynpro ABAP document.

 

The currentversion is always available in the SAP Help Portal, Floorplan Manager for Web Dynpro ABAP

 

Follow the links in the table below to view previous versions of the Cookbook.

 

 

Cookbook Version

 

Release Notes (What's New?)

Floorplan Manager for Web Dynpro ABAP - NetWeaver 7.4 SP8 (SAP_UI SP10)RN 7.4 SP8 (SAP_UI SP10)

FPM Developer's Guide SAP NetWeaver 7.03/7.31 SP7

RN 7.03/7.31 SP7

FPM Developer's Guide SAP NetWeaver 7.02   OUTDATED

 

FPM Developer's Guide SAP NetWeaver 7.01   OUTDATED

 

FPM Developer's Guide SAP NetWeaver 7.00/7.10  OUTDATED

Create a Tree GUIBB Popup with dynamic Columns

$
0
0

For a list of different Infotypes the selected infotype can be displayed as a popup. The popup must be dynamically adjusted at each call.

 

 

 

 

For this requirement you can use the Method GET_DEFAULT_CONFIG of the feeder class. But thismethod is calledonly onceper instance. With each newselectionofInftotypenthe columnsof the firstinfotypesare displayed.

Therefore, theID of the instancemust be changedat each call.


Method GET_DEFAULT_CONFIG of Tree GUIBB Popup


method if_fpm_guibb_tree~get_default_config.     data lo_mod_austap type ref to z_mod_austap.     data ls_lead_selection type z_mod_austap=>ty_austap_list.     data lo_struc_descr type ref to cl_abap_structdescr.     data ls_components like line of lo_struc_descr->components.     data l_pnnn type string.     data l_name_komp type name_komp.     try.         lo_mod_austap = z_mod_austap=>get_instance( ).         ls_lead_selection = lo_mod_austap->get_lead_selection( ).         l_pnnn = 'P' && ls_lead_selection-infty.         lo_struc_descr ?= cl_abap_structdescr=>describe_by_name( p_name = l_pnnn  ).         loop at lo_struc_descr->components into ls_components.           l_name_komp = ls_components-name.           "BEGDA muss vor ENDDA sein           if l_name_komp = 'ENDDA'.             io_layout_config->add_column( iv_name = 'BEGDA'                                                   iv_display_type = if_fpm_guibb_constants=>gc_display_type-text_view "'TV'
 *                                        iv_header = ls_components-name                                                                  ).             io_layout_config->add_column( iv_name = l_name_komp                                                  iv_display_type = if_fpm_guibb_constants=>gc_display_type-text_view "'TV'
 *                                        iv_header = ls_components-name                                                                 ).           elseif l_name_komp = 'BEGDA'.             "Keine Aktion           else.             io_layout_config->add_column( iv_name = l_name_komp                                               iv_display_type = if_fpm_guibb_constants=>gc_display_type-text_view "'TV'
 *                                        iv_header = ls_components-name                                                              ).           endif.         endloop.         io_layout_config->set_settings(
 *      EXPORTING
 *                                                         iv_visible_row_counts         =
 *                                                         iv_visible_column_counts      =
 *                                                         iv_sel_event_type             =
 *                                                         iv_selection_mode             =
 *                                                         iv_selection_change_behaviour =             iv_title                      = `Pernr ` && ls_lead_selection-pernr && ` Infotyp ` && ls_lead_selection-infty
 *                                                         iv_check_mandatory            =
 *                                                         iv_tree_width                 = '1000'
 *                                                         iv_initial_lead_selection     =
 *                                                         iv_fixed_columns              =
 *                                                         iv_display_empty_rows         =
 *                                                         iv_ctxt_menu_id               =
 *                                                         iv_suppress_selection_buttons =
 *                                                         iv_show_no_data_default_text  = ABAP_TRUE
 *                                                         iv_no_data_text               =                                                          iv_allow_personalization      = abap_true
 *                                                         iv_allow_creating_views       =
 *                                                         iv_allow_sorting              =
 *                                                         iv_height_mode_ats            =                                                              iv_fit_to_table_width         = abap_true
 *                                                         iv_row_height_ats             =
 *                                                         iv_export_to_excel            =
 *                                                         iv_sel_event_type_ats         =         ).       catch cx_root.         message 'X' type 'X'.     endtry.   endmethod.   

Method OVERRIDE_EVENT_OVP of Tree GUIBB Popup

 

Every time the popup is closed, the ID of the Insatz must be changed so that the Mehtod GET_DEFAULT_CONFIG is called again.

 

method if_fpm_ovp_conf_exit~override_event_ovp.     data lt_uibb type if_fpm_ovp=>ty_t_uibb.     data ls_uibb like line of lt_uibb.     data l_primary_attribute type fpm_element_id.     data lo_fpm type ref to if_fpm .     data lo_fpm_ovp type ref to if_fpm_ovp.     data l_event_id type fpm_event_id.     l_event_id = io_ovp->get_event( )->mv_event_id.     if l_event_id = if_fpm_constants=>gc_event-close_dialog. "FPM_CLOSE_DIALOG       lo_fpm = cl_fpm_factory=>get_instance( ).       lo_fpm_ovp ?= lo_fpm->get_service( iv_service_key = cl_fpm_service_manager=>gc_key_cnr_ovp ).       try.           lo_fpm_ovp->get_uibbs(             exporting               iv_content_area = 'DF_BEF_AFT'
 *    iv_section      =             importing               et_uibb         = lt_uibb           ).
 *  CATCH cx_fpm_floorplan.    "           loop at lt_uibb into ls_uibb.             lo_fpm_ovp->remove_uibb( ls_uibb-fpm_primary_attribute ).              ls_uibb-instance_id = ls_uibb-instance_id + 1.             lo_fpm_ovp->add_uibb(               exporting                 iv_content_area          = 'DF_BEF_AFT'
 *                iv_section               =                 is_uibb                  = ls_uibb
 *                iv_add_uibb_to_new_stack = ABAP_FALSE               importing                 ev_primary_attribute     = l_primary_attribute             ).
 *              CATCH cx_fpm_floorplan.    "           endloop.          catch cx_root.       endtry.     endif.   endmethod.  

FPM Developer's Guide SAP NetWeaver 7.03/7.31 SP7

Viewing all 91 articles
Browse latest View live


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