Extensibility information for SAP Fiori app.
You can display or hide standard fields in the list view (S2 view), extend controls or change or replace the standard content. You can, for example, change the default attributes displayed (opportunity title) for items in the opportunities list.
You can add new customer fields and controls to the detailed view (S3 view) of opportunities or change or replace the standard content.
You can add new fields in the creation view (S5 view).
You can change the default buttons and actions in the footer toolbar or add customer-specific buttons and actions to this toolbar.
To extend the list view, the following extensibility entities are available on the different layers. You have to extend each of these entities according to your specific business needs:
UI |
Back End/ABAP |
|||
---|---|---|---|---|
View |
Extension Point |
Design Time: Gateway Entity |
Design Time: Extension Include |
Run Time: Superclass and Method to Be Redefined |
S2.view.xml |
opportunityItemExtension |
Opportunity |
CRMT_ODATA_OPPT_HEADER_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
opportunityItemAttributeExtension |
Opportunity |
CRMT_ODATA_OPPT_HEADER_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT | |
opportunityItemStatusExtension |
Opportunity |
CRMT_ODATA_OPPT_HEADER_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
To extend the detailed view, the following extensibility entities are available on the different layers. You have to extend each of these entities according to your specific business needs:
UI |
Back End/ABAP |
|||
---|---|---|---|---|
View |
Extension Point |
Design Time: Gateway Entity |
Design Time: Extension Include |
Run Time: Superclass and Method to Be Redefined |
S3.view.xml |
opportunityHeaderExtension |
Opportunity |
CRMT_ODATA_OPPT_HEADER_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT
|
S3.view.xml |
opportunityHeaderAttributeTopExtension |
Opportunity |
CRMT_ODATA_OPPT_HEADER_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S3.view.xml |
opportunityHeaderAttributeBottomExtension |
Opportunity |
CRMT_ODATA_OPPT_HEADER_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S3.view.xml |
opportunityIcnTabBarLeftExtension |
Opportunity |
CRMT_ODATA_OPPT_HEADER_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S3.view.xml |
opportunityTabBarItemFirstExtension |
Customer-specific entity |
Customer-specific structure |
CL_CRM_OPPORTUNITY_DPC_EXT |
S3.view.xml | opportunityInfoTabContentTopExtension |
Opportunity |
CRMT_ODATA_OPPT_HEADER_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S3.view.xml |
opportunityInfoTabContentBottomExtension |
Opportunity |
CRMT_ODATA_OPPT_HEADER_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S3.view.xml |
salesAreaInfoTabContentTopExtension |
Opportunity |
CRMT_ODATA_OPPT_HEADER_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S3.view.xml |
salesAreaInfoTabContentBottomExtension |
Opportunity |
CRMT_ODATA_OPPT_HEADER_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S3.view.xml |
opportunityProductTabContentExtension |
OpportunityProduct |
CRMT_ODATA_OPPT_PRODUCT_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S3.view.xml |
opportunityProductTabContentExtension |
OpportunityProduct |
CRMT_ODATA_OPPT_PRODUCT_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S3.view.xml |
opportunityProductTabColoumExtension |
OpportunityProduct |
CRMT_ODATA_OPPT_PRODUCT_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S3.view.xml |
opportunityProductTabCellsExtension |
OpportunityProduct |
CRMT_ODATA_OPPT_PRODUCT_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S3.view.xml |
opportunitysalesTabContentExtension |
OpportunitySalesTeam |
CRMT_ODATA_OPPT_SALESTEAM_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S3.view.xml |
opportunitysalesTabColumnExtension |
OpportunitySalesTeam |
CRMT_ODATA_OPPT_SALESTEAM_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S3.view.xml |
opportunitySalesTabCellsExtension |
OpportunitySalesTeam |
CRMT_ODATA_OPPT_SALESTEAM_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S3.view.xml |
opportunityCompetitorTabContentExtension |
OpportunityCompetitor |
CRMT_ODATA_OPPT_COMPTITOR_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S3.view.xml |
competitorListContentExtension |
OpportunityCompetitor |
CRMT_ODATA_OPPT_COMPTITOR_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S3.view.xml |
opportunityDocHistContentExtension |
DocumentHistory |
CRMT_ODATA_OPPT_DOC_HIST_INCL |
CRMT_ODATA_OPPT_DOC_HISTORY |
S3.view.xml |
opportunityDocHistTabColoumStartExtension |
DocumentHistory |
CRMT_ODATA_OPPT_DOC_HIST_INCL |
CRMT_ODATA_OPPT_DOC_HISTORY |
S3.view.xml |
opportunityDocHistTabColoumEndExtension |
DocumentHistory |
CRMT_ODATA_OPPT_DOC_HIST_INCL |
CRMT_ODATA_OPPT_DOC_HISTORY |
S3.view.xml |
opportunityDocHistTabCellsStartExtension |
DocumentHistory |
CRMT_ODATA_OPPT_DOC_HIST_INCL |
CRMT_ODATA_OPPT_DOC_HISTORY |
S3.view.xml |
opportunityDocHistTabCellsEndExtension |
DocumentHistory |
CRMT_ODATA_OPPT_DOC_HIST_INCL |
CRMT_ODATA_OPPT_DOC_HISTORY |
S3.view.xml |
opportunityTabBarItemLastExtension |
Opportunity |
CRMT_ODATA_OPPT_HEADER_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S3.view.xml |
opportunityIcnTabBarRightExtension |
Opportunity |
CRMT_ODATA_OPPT_HEADER_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
To extend the edit view, the following extensibility entities are available on the different layers. You have to extend each of these entities according to your specific business needs:
UI |
Back End/ABAP |
|||
---|---|---|---|---|
View |
Extension Point |
Design Time: Gateway Entity |
Design Time: Extension Include |
Run Time: Superclass and Method to Be Redefined |
S4.view.xml |
opportunityEditContentTopExtension |
Opportunity |
CRMT_ODATA_OPPT_HEADER_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT
|
S4.view.xml |
opportunityEditContentBottomExtension |
Opportunity |
CRMT_ODATA_OPPT_HEADER_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S4.view.xml |
opportunityEditProductTabColoumExtension |
OpportunityProduct | CRMT_ODATA_OPPT_PRODUCT_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S4.view.xml |
opportunityEditProductTabColoumendExtension |
OpportunityProduct |
CRMT_ODATA_OPPT_PRODUCT_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S4.view.xml |
opportunityEditProductTabCellsExtension |
OpportunityProduct |
CRMT_ODATA_OPPT_PRODUCT_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S4.view.xml |
opportunityEditProductTabCellsEndExtension |
OpportunityProduct |
CRMT_ODATA_OPPT_PRODUCT_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
To extend the creation view, the following extensibility entities are available on the different layers. You have to extend each of these entities according to your specific business needs:
UI |
Back End/ABAP |
|||
---|---|---|---|---|
View |
Extension Point |
Design Time: Gateway Entity |
Design Time: Extension Include |
Run Time: Superclass and Method to Be Redefined |
S5.view.xml |
opportunityCreateContentTopExtension |
Opportunity |
CRMT_ODATA_OPPT_HEADER_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S5.view.xml |
salesAreaCreateContentTopExtension | Opportunity | CRMT_ODATA_OPPT_HEADER_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S5.view.xml | salesAreaCreateContentBottomExtension | Opportunity | CRMT_ODATA_OPPT_HEADER_INCL | CL_CRM_OPPORTUNITY_DPC_EXT |
S5.view.xml |
opportunityCreateContentBottomExtension |
Opportunity |
CRMT_ODATA_OPPT_HEADER_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S5.view.xml |
opportunityProductTabColoumExtension |
OpportunityProduct |
CRMT_ODATA_OPPT_PRODUCT_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S5.view.xml |
opportunityProductTabColoumendExtension |
OpportunityProduct |
CRMT_ODATA_OPPT_PRODUCT_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S5.view.xml |
opportunityProductTabCellsExtension |
OpportunityProduct |
CRMT_ODATA_OPPT_PRODUCT_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S5.view.xml |
opportunityProductTabCellsEndExtension |
OpportunityProduct |
CRMT_ODATA_OPPT_PRODUCT_INCL |
CL_CRM_OPPORTUNITY_DPC_EXT |
S5.view.xml |
opportunityPartnerTabColoumExtension |
OpportunitySalesTeam |
CRMT_ODATA_OPPT_SALESTEAM_INCL |
CRMT_ODATA_OPPT_SALES_TEAM |
S5.view.xml |
opportunityPartnerTabColoumendExtension |
OpportunitySalesTeam |
CRMT_ODATA_OPPT_SALESTEAM_INCL |
CRMT_ODATA_OPPT_SALES_TEAM |
S5.view.xml |
opportunityPartnerTabCellsExtension |
OpportunitySalesTeam |
CRMT_ODATA_OPPT_SALESTEAM_INCL |
CRMT_ODATA_OPPT_SALES_TEAM |
S5.view.xml |
opportunityPartnerTabCellsEndExtension |
OpportunitySalesTeam |
CRMT_ODATA_OPPT_SALESTEAM_INCL |
CRMT_ODATA_OPPT_SALES_TEAM |
To extend the footer toolbar, the following extensibility entities are available on the different layers. You have to extend each of these entities according to your specific business needs:
UI |
Back End/ABAP |
|||
---|---|---|---|---|
View |
Extension Point |
Design Time: Gateway Entity |
Design Time: Extension Include |
Run Time: Superclass and Method to Be Redefined |
S2.view.xml |
Extensibility of hooks delivered with the standard system — see section UI Controller Hooks |
|||
S3.view.xml |
Extensibility of hooks delivered with the standard system — see section UI Controller Hooks |
|||
S4.view.xml |
Extensibility of hooks delivered with the standard system — see section UI Controller Hooks |
|||
S5.view.xml |
Extensibility of hooks delivered with the standard system — see section UI Controller Hooks |
Business Add-Ins (BAdIs)
The following Business Add-Ins are available for extensibility purposes:
CRM_OPPORTUNITY_ODATA_DB in enhancement spot CRM_OPPORTUNITY_ODATA_ENH.
You can use this BAdI to define your own logic for reading, creating, or changing opportunities. This is necessary if, for example, you want to add your own fields, or use different processing logic for existing fields.
You can find the BAdI in Customizing for SAP CRM under
Extension Includes
In addition to the extension includes described above, the following extension includes are available:
DDIC |
Extension Include |
Use |
---|---|---|
CRMT_ODATA_OPPT_CURRENCY |
CRMT_ODATA_OPPT_CURRENCY_INCL |
Allows you to extend the Currency entity for opportunities |
CRMT_ODATA_OPPT_ATTACHMENT |
CRMT_ODATA_OPPT_ATTACHMNT_INCL |
Allows you to extend the Attachment entity for opportunities |
CRMT_ODATA_OPPT_CHANGEDOC |
CRMT_ODATA_OPPT_CHANGEDOC_INCL |
Allows you to extend the Change Document entity for opportunities |
CRMT_ODATA_OPPT_NOTES |
CRMT_ODATA_OPPT_NOTES_INCL |
Allows you to extend the Note entity for opportunities |
CRMT_ODATA_OPPT_STATUS |
CRMT_ODATA_OPPT_STATUS_INCL |
Allows you to extend the Status entity for opportunities |
CRMT_ODATA_OPPT_PRIORITY |
CRMT_ODATA_OPPT_PRIORITY_INCL |
Allows you to extend the Priority entity for opportunities |
CRMT_ODATA_OPPT_PROCESS_TYPE |
CRMT_ODATA_OPPT_PROC_TYPE_INCL |
Allows you to extend the Process Type entity for opportunities |
CRMT_OPPT_ODATA_PRODUCT |
CRMT_ODATA_OPPT_PRODMASTR_INCL |
Allows you to extend the Product entity for opportunities |
CRMT_ODATA_OPPT_SALES_STAGE |
CRMT_ODATA_OPPT_SALESTAGE_INCL |
Allows you to extend the Sales Stage entity for opportunities |
CRMT_ODATA_OPPT_USER_STATUS |
CRMT_ODATA_OPPT_USER_STAT_INCL |
Allows you to extend the User Status entity for opportunities |
For more information about extension includes, see the extensibility documentation for the respective SAP NetWeaver release on your front-end server at http://help.sap.com/fiori_implementation .
Extension Points
For <business case>, for example, the following extension points are available:
View |
Extension Point |
Use |
---|---|---|
<DDIC> |
<Extension point> |
|
If there are additional fields available in the OData service, you can display these fields on the UI. For more information, see the extensibility documentation for the respective SAP NetWeaver release on your front-end server at http://help.sap.com/fiori_implementation .
UI Controller Hooks
To plug in and execute custom code, the following hooks are available in the controller code:
Controller |
Hook |
Use |
---|---|---|
S2.controller.js |
extHookGetHeaderFooterOptions |
Allows you to extend the footer toolbar functions in the list
view.
Example Allows you to extend the sorting of
the list using the attribute
oSortOptions
|
S3.controller.js |
extHookHideAccountImage |
Allows you to hide or show all the business partner images |
S3.controller.js |
extHookHandleOpen |
Allows you to extend the Follow Up pushbutton. |
S3.controller.js |
extHookSelectedTab |
Allows you to extend the newly added custom tabs. |
S3.controller.js |
extHookSkipTab |
Allows you to decide if the standard delivered code has to be executed when a tab is selected |
S3.controller.js |
extHookGetAdditonalCustomizing |
Allows you to fetch additional customizing values from the backend during the launch of the application. You can use the controller hook extHookHandleBatchResponses to handle the responses. |
S3.controller.js |
extHookGetDataForDetailScreen |
Allows you to fetch additional data and bind it in the detail screen. |
S3.controller.js |
extHookHandleBatchResponses |
Allows you to handle the response of additional customizing fetch during launch of the application. |
S4.controller.js |
extHookBindAdditionalFields |
Allows you to set values for additional fields that can be modified in the edit screen, from the detail screen. You can access the data of the detail page by calling the getDetailController function. |
S4.controller.js |
extHookCheckDeltaAndFrameRequests |
Allows you to send additional update requests to the backend with the delivered updates which are on the header, status, employee responsible, and the product basket. |
S4.controller.js |
extHookAddCustomHeaderFields |
Allows you to add additional fields that are part of the opportunity header. |
S4.controller.js |
extHookAddCustomColumnsForProductDelete |
Allows you to add new columns during deletion of products from the product basket. |
S4.controller.js |
extHookCheckDeltaOnProductEntry |
Allows you to check fields that have changed in the product entry. |
S4.controller.js |
extHookAddCustomColumnsForProductModify |
Allows you to add new columns while modifying products in the product basket. |
S4.controller.js |
extHookAddCustomColumnsForProductCreate |
Allows you to add new columns while creating products in the product basket. |
S4.controller.js |
extHookHandleResponsesForCustomUpdates |
Allows you to use this for custom handling of the responses for the custom updates. The oResponses argument contains the responses for all the requests that are framed. The specific response can be identified by using the changeSetMapping number as an index in the oResponses array. |
S4.controller.js |
extHookValidateAdditionalFields |
Allows you to implement custom validations to validate additional fields. |
S4.controller.js |
extHookExtendProductEntry |
Allows you to add extra fields to the product entry. |
S5.controller.js |
extHookCustomLogicForAttachRouteMatch |
Allows you to use custom logic for newly added extension points. |
S5.controller.js |
extHookOnSave |
Allows you to validate the extended data before saving. |
S5.controller.js |
extHookEnableSaveBtn |
Allows you to decide if the Save pushbutton is to be enabled for the fields that you have added to the new opportunity page |
S5.controller.js |
extHookExtendProductEntry |
Allows you to extend pushObject. This enables modification of the product entry that is being updated. |
S5.controller.js |
extHookExtendSalesItemEntry |
Allows you to extend pushObject. This enables modification of the sales item entry that is being updated. |
S5.controller.js |
extHookSaveOentry |
Allows you to extend oEntry. New Attributes can be defined in addition to the existing oEntry attributes. |
S5.controller.js |
extHookExtendProductEntryOnAdd |
Allows you to add extra fields to the product entry for the product basket. |
If there are additional UI controller hooks available in the controller code, you can add own code. For more information, see the extensibility documentation for the respective SAP NetWeaver release on your front-end server at http://help.sap.com/fiori_implementation .
Display of UI Controls
As an example, the following UI controls can be hidden from the app UI:
View |
Control ID |
Use |
---|---|---|
<View> |
<Control ID> |
|
For more information about hiding UI controls, see the extensibility documentation for the respective SAP NetWeaver release on your front-end server at http://help.sap.com/fiori_implementation .
For a general description of the extensibility options and procedures of SAP Fiori apps, see http://help.sap.com/fiori_implementation .