FBI-Technical Spec and Cook Book: Creating A Simple Application
FBI-Technical Spec and Cook Book: Creating A Simple Application
2. Select the relevant package using the menu on the left of the screen.
3. In the Object Name area, right-click Web Dynpro Create Web Dynpro
Application.
4. Enter an application name in the dialog box and save. Note: BOFU is the
namespace used here.
5. On the Create Web Dynpro Application screen that appears, enter field values as
given below:
7. Right-click any of the application names in the Object Name area and select
Create/Change Configuration.
8. On the resulting screen, enter the name of the newly created application in the
Application Name field. In the Configuration ID field, enter the required value,
select Create, and save the configuration.
10. On the resulting screen, click Create, and save the configuration.
11. You next create a Form UIBB and configure it. Start by clicking Add UIBB and
selecting Add Form Component.
12. In the attributes displayed at the bottom of the screen, the Component and View
fields are filled in by default. In the Configuration Name field, enter the required
configuration and save.
You can now prepare the layout of your GUIBB by adding groups and fields within the
groups:
Note:
See FBI view to know how to show fields from multiple nodes in your header GUIBB.
Adding Wires
Wires are used to communicate current runtime data content between GUIBBs. A wire
connects an outport of the source UIBB with the inport of the target UIBB.
The wire data consists of the (target) UIBB, a source UIBB, the outport of the source
UIBB and a connector class that handles the data derivation in between.
Click Add Wire on the right hand side of the floorplan configuration screen. Maintain
wire attributes as shown below:
You can also select values from attached search helps. All search helps show options
valid for your context.
Note:
The AppCC component configuration specifies parameters defining the application
behavior. The most important parameter/setting is the name of the application controller
class:
In most of the examples in this document, we will be using FBI application controller
/BOFU/CL_FBI_CONTROLLER_NEW.
To know more about AppCC component configuration, click here…
You can now prepare the layout of your GUIBB by adding toolbar buttons and columns:
Note: Please see FBI view to know how to show fields from multiple nodes in your
header GUIBB.
Adding Wire
As mentioned in an earlier section, wires derive the dependency relations between
GUIBBs. In this case, the wire implements a master-detail pattern consisting of a header
form and a list of items.
Click Add Wire button on the right hand side of the floorplan configuration screen.
Maintain wire attributes as follows:
Note: Having known the metadata information from the source and target GUIBB, the
connector is capable of proposing valid values for SRC_NODE_ASSOC (association
from source node) parameter.
Also add a wire from the list GUIBB to the details form GUIBB. This wire is required to
communicate the lead selected key from the list to the details form. Specify the port type
as Lead Selection LS.
You can also specify a wire plug, which determines GUIBB to be wired from outside.
The tabbed UIBB can then be placed or reused across applications.
Defining Actions
a) BOPF Actions
BOPF actions can be configured on your UI. These can also be added on the GUIBB
toolbar using Configure Toolbar in case of LIST GUIBB or Configure Button Row in
case of FORM GUIBB.
All actions of BO nodes (action name with suffix in case of related views) can be added
on the GUIBB toolbar.
Apart from the GUIBB toolbar, actions can also be added to the application toolbar. To
do so, click Add Toolbar Element in your floor plan and give the action name in FPM
EVENT ID (mandatory). Apart from this, you can also give additional attributes such as
Label, Visibility, and so on. You also need to add an event parameter
FBI_RAISED_BY_TOOLBAR with parameter value as X.
Figure 11: Specifying action parameters
b) Non-BOPF Actions
Prerequisite: Either an FBI view with at least one non-BOPF action defined, or a non-
BOPF action defined in the exit class with the implementation of method
/BOFU/IF_FBI_VIEW_EXITINTF_DEF~ADAPT_ACTIONS.
Apart from standard BOPF actions, you can also define UI-relevant actions (navigation,
dialogs) by defining an action in FBI view or in the exit class with the implementation of
method /BOFU/IF_FBI_VIEW_EXITINTF_DEF~ADAPT_ACTIONS.
The screen below shows how a UI action can be defined using an FBI view.
Role
Instance
Application Alias
For dialog-based actions, you can use the Dialog Window ID.
Figure 12: FBI View to define UI actions
Procedure:
1. Create a configuration for WD component FPM_FORM_UIBB, for example,
ZDD_CREATE_FOLDER_ATTF.
2. Specify feeder class /BOFU/CL_FBI_GUIBB_ACTPRM_FDR.
4. You can now prepare the layout using Add Groups and Configure Groups.
Dialogs
Now let us take the example of adding a dialog window for the action parameters in your
OVP application.
5. Similarly, multiple actions with dialogs can be configured using the above steps.
You can now prepare the layout of your GUIBB by adding toolbar buttons and columns:
2. /BOFU/CL_FBI_GUIBB_FORM
3. /BOFU/CL_FBI_GUIBB_LIST
4. /BOFU/CL_FBI_GUIBB_TREE
5. /BOFU/CL_FBI_GUIBB_BOOTSTRAP
6. /BOFU/CL_FBI_GUIBB_ALTKEY_FDR
7. /BOFU/CL_FBI_GUIBB_ACTPRM_FDR
8. /BOFU/CL_FBI_GUIBB_REF_MODE
9. /BOFU/CL_FBI_GUIBB_ATF_DOCU
10. /BOFU/CL_FBI_SUIBB_FEEDER
11. /BOFU/CL_FBI_ADV_SUIBB_FEEDER
12. /BOFU/CL_FBI_GUIBB_DIA_TRIGGER
BO Abstraction Layer
1. /BOFU/CL_FBI_FACTORY
2. /BOFU/IF_FBI_VIEW_CONF
3. /BOFU/CL_FBI_VIEW_CONF
4. /BOFU/IF_FBI_VIEW
5. /BOFU/CL_FBI_VIEW_NEW
6. /BOFU/IF_FBI_VIEW_INSTANCE_NEW
7. /BOFU/CL_FBI_VIEW_INSTANCE_NEW
Controller
1. /BOFU/IF_FBI_CONTROLLER
2. /BOFU/CL_FBI_CONTROLLER_BASE
3. /BOFU/IF_FBI_CONTROLLER_NEW
4. /BOFU/CL_FBI_CONTROLLER_NEW
2. /BOFU/CL_FBI_CONNECTOR
3. /BOFU/IF_FBI_ENTITY_COLLECTION
4. /BOFU/CL_FBI_ENTITY_COLLECTION
Message Management
1. /BOFU/IF_FBI_MESSAGE_BUFFER
2. /BOFU/CL_FBI_MESSAGE_BUFFER
3. /BOFU/IF_FBI_MESSAGE_MANAGER
4. /BOFU/CL_FBI_MESSAGE_MANAGER
Property Buffer
Property buffer buffers the BOPF field properties in the FBI layer. It enables FBI to read
properties from the BOPF only when needed, that is, only when the properties become dirty or
invalidated. When the application requests the property, properties are read from the property
buffer. This eliminates the need to read the properties every time from BOPF by way of service
manager calls, and thus improves the performance significantly. For example, when the data is
read from BOPF by way of service manager calls and if the properties haven’t changed,
properties are still read from the property buffer and not from BOPF.
FBI property buffer relies on Property Change Notifications from BOPF. Properties in the
property buffer are invalidated (set dirty) based upon the property change notifications received
from BOPF.
Note:
Properties can be changed or set in the BOPF by way of:
Node Categories
BRF+ based Field Control Framework. In this case, determination should be triggered
before retrieval of the property node. This will ensure that the properties are read at
the correct time.
Since the property buffer relies on Property Change notifications, whenever a property is
changed or set in the BOPF, a NOTIFY PROPERTY CHANGE should be called.
1. /BOFU/IF_FBI_PROPERTY_BUFFER
This interface serves as a standard interface for all property buffer implementations in FBI.
Since FBI supports the flexibility of replacing the standard property buffer for custom use cases,
the custom class (developed by the application developer) should implement this interface.
Methods of the interface:
INITIALIZE: Property buffer can be initialized by implementing this method. For example,
getting the instance of the application controller.
GET_PROPERTY: Properties can be supplied to the calling object by implementing this
method.
POST_SYNCUP_PROPERTY: After the sync up cycle, application controller passing the
BOPF change notifications and the property buffer can be updated accordingly by
implementing this method.
REFRESH_PROPERTY_BUFFER: On certain events (READ ONLY, REFRESH or SAVE), the
property buffer needs to be refreshed. It can be refreshed by implementing this
method.
2. /BOFU/CL_FBI_PROPERTY_BUFFER
This is a standard property buffer class delivered by FBI. It buffer s the property, and depending
upon the state of property (dirty or not), it either reads the property from the property buffer or
from BOPF. Methods of this class are:
/BOFU/IF_ABSTRACT_FACTORY~CREATE_INSTANCE: It creates an instance of property
buffer. There is one instance of property buffer per BO. This method is triggered in the
method /BOFU/IF_FBI_CONTROLLER_NEW~GET_PROPERTY_BUFFER of the controller
class /BOFU/CL_FBI_CONTROLLER_NEW.
/BOFU/IF_ABSTRACT_FACTORY~SET_CLASS_NAME: It sets the class name of the property
buffer. Since FBI provides the flexibility to plug in custom property class, this method can be
used to set the custom property buffer class.
/BOFU/IF_FBI_PROPERTY_BUFFER~INITIALIZE: Property buffer is initialized using this
method. It gets the instance of the controller.
/BOFU/IF_FBI_PROPERTY_BUFFER~GET_PROPERTY: Properties are supplied to the calling
object using this method. Depending upon the state of the property (dirty or valid), it either
reads the property from the property buffer or from BOPF. It returns the property in
different flat structures, based upon the property type.
/BOFU/IF_FBI_PROPERTY_BUFFER~POST_SYNCUP_PROPERTY: The controller triggers this
method whenever it receives change notifications. In this method, based upon the change
notifications, properties are invalidated (set dirty) in the property buffer.
/BOFU/IF_FBI_PROPERTY_BUFFER~REFRESH_PROPERTY_BUFFER: On events like READ
ONLY, REFRESH, or SAVE, controller calls this method and properties are refreshed.
READ_PROPERTY: For the dirty properties, properties are re-read from BOPF using this
method. Also BOPF properties are mapped into FBI property buffer structure.
BUILD_PROPERTY_BUFFER: Property buffer is created for a given BO key and node key in
this method.
Key Providers
1. /BOFU/CL_FBI_KEYPROVIDER_BASE
2. /BOFU/CL_FBI_PRSEL_KEYPROVIDER
3. /BOFU/CL_FBI_URL_KEYPROVIDER
UX Layer
UX layer handles UI-specific functions such as dialogs and navigation in the FBI layer.
1. /BOFU/IF_FBI_UX
This interface serves as a standard interface for all UX layer implementations in FBI. Since FBI
supports the flexibility of replacing the standard UX layer for custom use cases, the custom class
(developed by the application developer) should implement this interface. Methods of the
interface:
OPEN_DIALOG_BOX: As the name suggests, the implementation of this method opens a
dialog box whenever the trigger is raised by the application.
NAVIGATE: As the name suggests, the implementation of this method handles navigation
whenever the trigger is raised by the application.
2. /BOFU/CL_FBI_UX
This is the standard UX layer class delivered by FBI. It supports UX functions such as dialogs
(opening a dialog box) and navigation. It implements two interfaces, namely, /BOFU/IF_FBI_UX
and /BOFU/IF_ABSTRACT_SINGLETON. Methods of this class are:
/BOFU/IF_ABSTRACT_SINGLETON~GET_INSTANCE: Gets the instance
/BOFU/IF_ABSTRACT_SINGLETON~SET_CLASS_NAME: It sets the class name of the UX layer.
Since FBI provides the flexibility to plug in custom UX layer class, this method can be used to
set the custom UX layer class.
/BOFU/IF_ABSTRACT_SINGLETON~CLEANUP: It cleans up (or clears) the instance.
CONSTRUCTOR: It gets the instance of the FPM.
/BOFU/IF_FBI_UX~OPEN_DIALOG_BOX: Whenever an application triggers to open a dialog
box, the call is directed to this method, which renders the call to FPM with appropriate
event data.
/BOFU/IF_FBI_UX~NAVIGATE: Whenever an application triggers to open a new application
(navigate to other application), the call is directed to this method, which renders the call to
FPM with appropriate business and application parameters.
UI Helper
1. /BOFU/IF_FBI_UI_HELPER
2. /BOFU/IF_FBI_UI_HLPR_ACTION
3. /BOFU/IF_FBI_UI_HLPR_DATA
4. /BOFU/IF_FBI_UI_HLPR_MESSAGE
5. /BOFU/IF_FBI_UI_HLPR_MODIFY
6. /BOFU/IF_FBI_UI_HLPR_PROPERTY
7. /BOFU/CL_FBI_VWI_WITH_HELPER
2. /BOFU/CL_FBI_IDR_PROVIDER_NEW
3. /BOFU/CL_FBI_GUIBB_OVS
4. /BOFU/CL_FBI_OVS_CODEL
5. /BOFU/CL_FBI_OVS_QUERY
Extending FBI
1. /BOFU/IF_FBI_VIEW_EXIT_INTF
2. /BOFU/IF_FBI_VIEW_EXITINTF_DEF
3. /BOFU/IF_FBI_VIEW_EXITINTF_RUN
Miscellaneous
1. /BOFU/WDC_FBI_CONTROLLER
2. /BOFU/WDC_FBI_PDF_VIEW