1. Introduction
SAP standard Fiori apps are used as important tools to support business processes using S/4HANA, and many apps are available that use the implementation technology of the Fiori Elements framework. However, to fully address the company’s specific business requirements and specific user needs, it may be necessary to customize the standard app.
Several techniques are offered for Fiori app customization, including metadata extension and UI adaptation. However, if the object to be extended does not support metadata extension, or there may be business requirements that cannot be met by UI adaptation changes. In such cases, a more flexible UI extension method is the Adaptation Project (Developer Adaptation). With Adaptation Project, you can extend standard SAP Fiori elements applications without modification. This means that new application variants can be created and customized to meet unique requirements without modifying the original application.
Adaptation Project: how to change the mandatory input filter in SAP standard Fiori AppAdaptation Project: how to change mandatory input filter in SAP standard Fiori App>In this blog, we will create an Adaptation Project using SAP Business Application Studio to create an Adaptation Project for the requirements that filter field (Plant) defined as mandatory in the SAP Standard Fiori app (F0842A: Manage Purchase Orders). We’ll walk you through the specific steps to add Annotation to customize your standard app.
2. Implementation method
1. Access SAP Business Application Studio and open the dev space of SAP Fiori.
2. Open Folder to access the Projects folder (/home/user/projects/).
3. Open New Project from Template from file and select SAPUI5 Adaptation Project.
4. In System and Application Selection, enter the following, and then click Next to proceed with the settings.
System: Destination to S/4HANA for the extended application
Application: Extended apps (for this blog, Manage Purchase Orders)
5. Enter the following information in Project Attributes:
Project Name: Any project name
Application Title: Any app title
Namespace: Auto-generated based on the project name you enter (can be changed if necessary).
Project Folder Path:P auto-populates the path to the rojects folder (you can change it if needed).
SAPUI5 Version: Auto-populates the latest SAPUI5 version (here, you can’t change it. If you want to change to the SAPUI5 version installed on S/4HANA, you will need to change the ui5.yaml file after the project is generated. For more information, see SAP KBA:3095848 – How to change SAPUI5 version if problems occur for Adaptation Project in BAS.
Add Deployment Configuration: Yes
6. After entering the following information in the Deployment Configuration, click the Finish button to generate the project.
Destination: Auto-populates the Destination selected in System and Application Selection (you can change it if necessary).
Select How You Want to Enter the Package: Choose either Enter Manually / Choose from Existing to select the package for deployment.
Package: Select the package for deployment (screenshot shows a local package as an example).
7. Right-click on the generated project to generate an annotation file from Add Local Annotation File (also available from the Add Local Annotation File button in Application Information).
8. In the Add Local Annotation File, enter the following information:
Target OData Service: mainService (Autofill)
Annotation XML: Create local annotation file from template (if creating a new one) / Select annotation file from workspace (When referencing an existing annotation file)
9. A new annotation file will be created under webapp/changes/annotations in the project folder, so it will be opened.
10. Add the following annotation implementation to the annotation file (details of the implementation are described in the next section):
<edmx:Edmx xmlns:edmx=”http://docs.oasis-open.org/odata/ns/edmx” Version=”4.0″>
<edmx:Reference Uri=”https://sap.github.io/odata-vocabularies/vocabularies/Common.xml”>
<edmx:Include Namespace=”com.sap.vocabularies.Common.v1″ Alias=”Common”/>
</edmx:Reference>
<edmx:Reference Uri=”https://sap.github.io/odata-vocabularies/vocabularies/UI.xml”>
<edmx:Include Namespace=”com.sap.vocabularies.UI.v1″ Alias=”UI”/>
</edmx:Reference>
<edmx:Reference Uri=”https://sap.github.io/odata-vocabularies/vocabularies/Communication.xml”>
<edmx:Include Namespace=”com.sap.vocabularies.Communication.v1″ Alias=”Communication”/>
</edmx:Reference>
<edmx:Reference Uri=”/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV/$metadata”>
<edmx:Include Namespace=”MM_PUR_PO_MAINT_V2_SRV”/>
</edmx:Reference>
<edmx:Reference Uri=”/sap/opu/odata/iwfnd/catalogservice;v=2/Vocabularies(TechnicalName=’%2FIWBEP%2FVOC_CAPABILITIES’,Version=’0001′,SAP__Origin=”)/$value”>
<edmx:Include Namespace=”Org.OData.Capabilities.V1″ Alias=”Capabilities”/>
</edmx:Reference>
<edmx:DataServices>
<Schema xmlns=”http://docs.oasis-open.org/odata/ns/edm” Namespace=”local_1760320506713″>
<Annotations Target=”MM_PUR_PO_MAINT_V2_SRV.MM_PUR_PO_MAINT_V2_SRV_Entities/C_PurchaseOrderTP”>
<Annotation Term=”Capabilities.FilterRestrictions”>
<Record>
<PropertyValue Property=”RequiresFilter” Bool=”true”/>
<PropertyValue Property=”RequiredProperties”>
<Collection>
<PropertyPath>Plant</PropertyPath>
</Collection>
</PropertyValue>
</Record>
</Annotation>
</Annotations>
</Schema>
</edmx:DataServices>
</edmx:Edmx>
11. Add definitions for your app to reference the app’s additional annotations in the manifest.appdescr_variant file.
{
“fileName”: “manifest”,
“layer”: “CUSTOMER_BASE”,
“fileType”: “appdescr_variant”,
“reference”: “ui.ssuite.s2p.mm.pur.po.manage.st.s1”,
“id”: “customer.zapp.f0842a”,
“namespace”: “apps/ui.ssuite.s2p.mm.pur.po.manage.st.s1/appVariants/customer.zapp.f0842a/”,
“version”: “0.1.0”,
“content”: [
{
“changeType”: “appdescr_ui5_addNewModelEnhanceWith”,
“content”: {
“modelId”: “i18n”
},
“texts”: {
“i18n”: “i18n/i18n.properties”
}
},
{
“changeType”: “appdescr_ui5_addNewModelEnhanceWith”,
“content”: {
“modelId”: “@i18n”
},
“texts”: {
“i18n”: “i18n/i18n.properties”
}
},
{
“changeType”: “appdescr_ui5_addNewModelEnhanceWith”,
“content”: {
“modelId”: “i18n|sap.suite.ui.generic.template.ListReport|C_PurchaseOrderTP”
},
“texts”: {
“i18n”: “i18n/ListReport/C_PurchaseOrderTP/i18n.properties”
}
},
{
“changeType”: “appdescr_ui5_addNewModelEnhanceWith”,
“content”: {
“modelId”: “i18n|sap.suite.ui.generic.template.ObjectPage|C_PurchaseOrderTP”
},
“texts”: {
“i18n”: “i18n/ObjectPage/C_PurchaseOrderTP/i18n.properties”
}
},
{
“changeType”: “appdescr_ui5_addNewModelEnhanceWith”,
“content”: {
“modelId”: “i18n|sap.suite.ui.generic.template.ObjectPage|C_PurchaseOrderItemTP”
},
“texts”: {
“i18n”: “i18n/ObjectPage/C_PurchaseOrderItemTP/i18n.properties”
}
},
{
“changeType”: “appdescr_ui5_addNewModelEnhanceWith”,
“content”: {
“modelId”: “i18n|sap.suite.ui.generic.template.ObjectPage|C_PurchaseOrderLimitItemTP”
},
“texts”: {
“i18n”: “i18n/ObjectPage/C_PurchaseOrderLimitItemTP/i18n.properties”
}
},
{
“changeType”: “appdescr_ui5_setMinUI5Version”,
“content”: {
“minUI5Version”: “1.114.9”
}
},
{
“changeType”: “appdescr_app_setTitle”,
“content”: {},
“texts”: {
“i18n”: “i18n/i18n.properties”
}
},
{
“changeType”: “appdescr_app_addAnnotationsToOData”,
“content”: {
“dataSourceId”: “mainService”,
“annotations”: [ “customer.myAnno” ],
“annotationsInsertPosition”: “END”,
“dataSource”: {
“customer.myAnno”: {
“uri”: “changes/annotations/annotation_1760320506713.xml”,
“type”: “ODataAnnotation”
}
}
}
}
]
}
12. Right-click on the webapp > preview the app from the Preview Application (also from the Preview Application button in the Application Information).
13. Verify that the plant field is a required field.
14. Deploy the app from Deploy Application by right-clicking on the webapp (also from the Deploy button in Application Information).
15. Deployed apps (app variants) can be used by end users by defining Semantic objects, semantic actions, SAPUI5 Components, tiles, etc. in the Fiori technical catalog and referencing them from the business catalog and business roles.
Semantic Object: Any semantic Object
Action: Any semantic action
SAPUI5 Component ID: Namespace when generating a project in Step.5
3. Explanation of implementation details
1. Local Annotation file(annotation_xxx.xml)
A local annotation file is a file that implements annotated extensions to the OData service used by standard Fiori apps. The description in the file is based on the syntax of OData, and there are the following restrictions (some excerpts).
edmx:EdmxIt is the root element, and between <edmx:Edmx> ~ </edmx:Edmx>, it writes the syntax. The definition of <edmx:Edmx> must include a description of Version and <edmx:DataServices> element.edmx:ReferenceSpecifies an external Common Schema Definition Language (CSDL) document that is referenced in the annotation file. The child element edmx:Reference must contain a description of the Uri (the referenced URI) and at least one edmx:Include element.edmx:IncludeSpecifies the schema under the CSDL document to be referenced. Namespace. You can also specify Alias.edmx:DataservicesAn element that describes the properties of the Annotation, etc., and must contain a single Schema element. Write annotations in the Schema element.AnnotationsSpecify the target attribute that contains the EntitySet name of the OData service you want to extend. It must contain at least one Annotation element.
According to these syntax, we have implemented that the filter field of the plant must be entered.
Identifying Targets for Expansion
The implementation of this blog requires the following Target information:Target:MM_PUR_PO_MAINT_V2_SRV.MM_PUR_PO_MAINT_V2_SRV_Entities/C_PurchaseOrderTPOData Service Name: MM_PUR_PO_MAINT_V2_SRVEntityContainer Name: MM_PUR_PO_MAINT_V2_SRV_EntitiesEntitySet Name: C_PurchaseOrderTP (*Not EntityType Name)PropertyPath:PlantOData Service Name: SAP Fiori Apps Reference Library(https://fioriappslibrary.hana.ondemand.com/sap/fix/externalViewer/#) to search for the Fiori app you want to expand. The OData used in the Fiori app is listed in the OData Service under “Configuration” in the “IMPLEMENTATION INFORMATION” tab of the app’s page.
4. EntityContainer Name
Check the metadata of the OData service using the app (https://<IP Adress>:<Port Number>/sap/opu/odata/sap/ MM_PUR_PO_MAINT_V2_SRV/$metadata)。
You can find the EntityContainer name by searching for EntityContainer.
5. EntitySet name
When you start the Fiori app “Manage Purchase Orders”, if you check the Preview/Response of the request to manifest.appdescr in the browser’s developer tools, the entity set used for the List Report is “C_ PurchaseOrderTP”.
6. PropertyPath
You can identify the item name (PropertyPath) by checking the definition of the target entity set in the metadata of the target OData service.
Setting Extension Target and Annotation Change Properties manifest.json load the metadata of the OData service “MM_PUR_PO_MAINT_V2_SRV” used for “Purchase Order Management” and set the CDS View with the field to be extended by annotation to Target.The implementation uses FilterRestrictions to change the properties “RequiresFilter” and “RequiredProperties”, so that the FilterRestrictions are included in “Org.OData.Capabilities.V1”. vocabulary is referenced by the specified alias.
2. manifest.appdescr_variant.json
manifest.appdescr_variant.json is a file that describes the objects available in the original app, and many settings refer to the manifest information of the standard app. If you want to add a local annotation file, set the following properties:
“dataSourceId”: A property that specifies the OData service of interest, in this scenario it is “mainService”.
“annotations”: Specify the name of the annotation for the OData data source “mainService” that you specified. The name must start with “customer” (for example, “customer.myAnno”).
“annotationsInsertPosition”: “END”. If not, they may be disabled by the server user and have no effect at all.
“dataSource”: “Specify the annotation name that starts with “customer”. If you specify a local annotation file created with “uri” and add “type” to OData, it will be “ODataAnnotation”.
4. Summary
In this article, we have shown you how to create an Adaptation Project in SAP Business Application Studio and add Local Annotation to make filter fields mandatory. In addition to making filters mandatory, the Adaptation Project allows you to extend your annotation implementation, extend your controller, and add custom XML fragments. For more information about the Adaptation Project, please refer to the documentation in the References section.
References
SAP Help: Extending an SAP Fiori Application for an SAP S/4HANA or SAP S/4HANA Cloud Private Edition
SAP Blog: Extending SAP-delivered SAP Fiori elements apps using adaptation projects to create SAP S/4HANA app variants
SAP KBA: https://me.sap.com/notes/3285957
1. IntroductionSAP standard Fiori apps are used as important tools to support business processes using S/4HANA, and many apps are available that use the implementation technology of the Fiori Elements framework. However, to fully address the company’s specific business requirements and specific user needs, it may be necessary to customize the standard app.Several techniques are offered for Fiori app customization, including metadata extension and UI adaptation. However, if the object to be extended does not support metadata extension, or there may be business requirements that cannot be met by UI adaptation changes. In such cases, a more flexible UI extension method is the Adaptation Project (Developer Adaptation). With Adaptation Project, you can extend standard SAP Fiori elements applications without modification. This means that new application variants can be created and customized to meet unique requirements without modifying the original application.Adaptation Project: how to change the mandatory input filter in SAP standard Fiori AppAdaptation Project: how to change mandatory input filter in SAP standard Fiori App>In this blog, we will create an Adaptation Project using SAP Business Application Studio to create an Adaptation Project for the requirements that filter field (Plant) defined as mandatory in the SAP Standard Fiori app (F0842A: Manage Purchase Orders). We’ll walk you through the specific steps to add Annotation to customize your standard app. 2. Implementation method1. Access SAP Business Application Studio and open the dev space of SAP Fiori. 2. Open Folder to access the Projects folder (/home/user/projects/). 3. Open New Project from Template from file and select SAPUI5 Adaptation Project. 4. In System and Application Selection, enter the following, and then click Next to proceed with the settings.System: Destination to S/4HANA for the extended applicationApplication: Extended apps (for this blog, Manage Purchase Orders) 5. Enter the following information in Project Attributes:Project Name: Any project nameApplication Title: Any app titleNamespace: Auto-generated based on the project name you enter (can be changed if necessary).Project Folder Path:P auto-populates the path to the rojects folder (you can change it if needed).SAPUI5 Version: Auto-populates the latest SAPUI5 version (here, you can’t change it. If you want to change to the SAPUI5 version installed on S/4HANA, you will need to change the ui5.yaml file after the project is generated. For more information, see SAP KBA:3095848 – How to change SAPUI5 version if problems occur for Adaptation Project in BAS.Add Deployment Configuration: Yes 6. After entering the following information in the Deployment Configuration, click the Finish button to generate the project.Destination: Auto-populates the Destination selected in System and Application Selection (you can change it if necessary).Select How You Want to Enter the Package: Choose either Enter Manually / Choose from Existing to select the package for deployment.Package: Select the package for deployment (screenshot shows a local package as an example). 7. Right-click on the generated project to generate an annotation file from Add Local Annotation File (also available from the Add Local Annotation File button in Application Information). 8. In the Add Local Annotation File, enter the following information:Target OData Service: mainService (Autofill)Annotation XML: Create local annotation file from template (if creating a new one) / Select annotation file from workspace (When referencing an existing annotation file) 9. A new annotation file will be created under webapp/changes/annotations in the project folder, so it will be opened. 10. Add the following annotation implementation to the annotation file (details of the implementation are described in the next section):<edmx:Edmx xmlns:edmx=”http://docs.oasis-open.org/odata/ns/edmx” Version=”4.0″>
<edmx:Reference Uri=”https://sap.github.io/odata-vocabularies/vocabularies/Common.xml”>
<edmx:Include Namespace=”com.sap.vocabularies.Common.v1″ Alias=”Common”/>
</edmx:Reference>
<edmx:Reference Uri=”https://sap.github.io/odata-vocabularies/vocabularies/UI.xml”>
<edmx:Include Namespace=”com.sap.vocabularies.UI.v1″ Alias=”UI”/>
</edmx:Reference>
<edmx:Reference Uri=”https://sap.github.io/odata-vocabularies/vocabularies/Communication.xml”>
<edmx:Include Namespace=”com.sap.vocabularies.Communication.v1″ Alias=”Communication”/>
</edmx:Reference>
<edmx:Reference Uri=”/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV/$metadata”>
<edmx:Include Namespace=”MM_PUR_PO_MAINT_V2_SRV”/>
</edmx:Reference>
<edmx:Reference Uri=”/sap/opu/odata/iwfnd/catalogservice;v=2/Vocabularies(TechnicalName=’%2FIWBEP%2FVOC_CAPABILITIES’,Version=’0001′,SAP__Origin=”)/$value”>
<edmx:Include Namespace=”Org.OData.Capabilities.V1″ Alias=”Capabilities”/>
</edmx:Reference>
<edmx:DataServices>
<Schema xmlns=”http://docs.oasis-open.org/odata/ns/edm” Namespace=”local_1760320506713″>
<Annotations Target=”MM_PUR_PO_MAINT_V2_SRV.MM_PUR_PO_MAINT_V2_SRV_Entities/C_PurchaseOrderTP”>
<Annotation Term=”Capabilities.FilterRestrictions”>
<Record>
<PropertyValue Property=”RequiresFilter” Bool=”true”/>
<PropertyValue Property=”RequiredProperties”>
<Collection>
<PropertyPath>Plant</PropertyPath>
</Collection>
</PropertyValue>
</Record>
</Annotation>
</Annotations>
</Schema>
</edmx:DataServices>
</edmx:Edmx> 11. Add definitions for your app to reference the app’s additional annotations in the manifest.appdescr_variant file. {
“fileName”: “manifest”,
“layer”: “CUSTOMER_BASE”,
“fileType”: “appdescr_variant”,
“reference”: “ui.ssuite.s2p.mm.pur.po.manage.st.s1”,
“id”: “customer.zapp.f0842a”,
“namespace”: “apps/ui.ssuite.s2p.mm.pur.po.manage.st.s1/appVariants/customer.zapp.f0842a/”,
“version”: “0.1.0”,
“content”: [
{
“changeType”: “appdescr_ui5_addNewModelEnhanceWith”,
“content”: {
“modelId”: “i18n”
},
“texts”: {
“i18n”: “i18n/i18n.properties”
}
},
{
“changeType”: “appdescr_ui5_addNewModelEnhanceWith”,
“content”: {
“modelId”: “@i18n”
},
“texts”: {
“i18n”: “i18n/i18n.properties”
}
},
{
“changeType”: “appdescr_ui5_addNewModelEnhanceWith”,
“content”: {
“modelId”: “i18n|sap.suite.ui.generic.template.ListReport|C_PurchaseOrderTP”
},
“texts”: {
“i18n”: “i18n/ListReport/C_PurchaseOrderTP/i18n.properties”
}
},
{
“changeType”: “appdescr_ui5_addNewModelEnhanceWith”,
“content”: {
“modelId”: “i18n|sap.suite.ui.generic.template.ObjectPage|C_PurchaseOrderTP”
},
“texts”: {
“i18n”: “i18n/ObjectPage/C_PurchaseOrderTP/i18n.properties”
}
},
{
“changeType”: “appdescr_ui5_addNewModelEnhanceWith”,
“content”: {
“modelId”: “i18n|sap.suite.ui.generic.template.ObjectPage|C_PurchaseOrderItemTP”
},
“texts”: {
“i18n”: “i18n/ObjectPage/C_PurchaseOrderItemTP/i18n.properties”
}
},
{
“changeType”: “appdescr_ui5_addNewModelEnhanceWith”,
“content”: {
“modelId”: “i18n|sap.suite.ui.generic.template.ObjectPage|C_PurchaseOrderLimitItemTP”
},
“texts”: {
“i18n”: “i18n/ObjectPage/C_PurchaseOrderLimitItemTP/i18n.properties”
}
},
{
“changeType”: “appdescr_ui5_setMinUI5Version”,
“content”: {
“minUI5Version”: “1.114.9”
}
},
{
“changeType”: “appdescr_app_setTitle”,
“content”: {},
“texts”: {
“i18n”: “i18n/i18n.properties”
}
},
{
“changeType”: “appdescr_app_addAnnotationsToOData”,
“content”: {
“dataSourceId”: “mainService”,
“annotations”: [ “customer.myAnno” ],
“annotationsInsertPosition”: “END”,
“dataSource”: {
“customer.myAnno”: {
“uri”: “changes/annotations/annotation_1760320506713.xml”,
“type”: “ODataAnnotation”
}
}
}
}
]
} 12. Right-click on the webapp > preview the app from the Preview Application (also from the Preview Application button in the Application Information). 13. Verify that the plant field is a required field. 14. Deploy the app from Deploy Application by right-clicking on the webapp (also from the Deploy button in Application Information). 15. Deployed apps (app variants) can be used by end users by defining Semantic objects, semantic actions, SAPUI5 Components, tiles, etc. in the Fiori technical catalog and referencing them from the business catalog and business roles.Semantic Object: Any semantic ObjectAction: Any semantic actionSAPUI5 Component ID: Namespace when generating a project in Step.5 3. Explanation of implementation details1. Local Annotation file(annotation_xxx.xml)A local annotation file is a file that implements annotated extensions to the OData service used by standard Fiori apps. The description in the file is based on the syntax of OData, and there are the following restrictions (some excerpts).edmx:EdmxIt is the root element, and between <edmx:Edmx> ~ </edmx:Edmx>, it writes the syntax. The definition of <edmx:Edmx> must include a description of Version and <edmx:DataServices> element.edmx:ReferenceSpecifies an external Common Schema Definition Language (CSDL) document that is referenced in the annotation file. The child element edmx:Reference must contain a description of the Uri (the referenced URI) and at least one edmx:Include element.edmx:IncludeSpecifies the schema under the CSDL document to be referenced. Namespace. You can also specify Alias.edmx:DataservicesAn element that describes the properties of the Annotation, etc., and must contain a single Schema element. Write annotations in the Schema element.AnnotationsSpecify the target attribute that contains the EntitySet name of the OData service you want to extend. It must contain at least one Annotation element.According to these syntax, we have implemented that the filter field of the plant must be entered.Identifying Targets for ExpansionThe implementation of this blog requires the following Target information:Target:MM_PUR_PO_MAINT_V2_SRV.MM_PUR_PO_MAINT_V2_SRV_Entities/C_PurchaseOrderTPOData Service Name: MM_PUR_PO_MAINT_V2_SRVEntityContainer Name: MM_PUR_PO_MAINT_V2_SRV_EntitiesEntitySet Name: C_PurchaseOrderTP (*Not EntityType Name)PropertyPath:PlantOData Service Name: SAP Fiori Apps Reference Library(https://fioriappslibrary.hana.ondemand.com/sap/fix/externalViewer/#) to search for the Fiori app you want to expand. The OData used in the Fiori app is listed in the OData Service under “Configuration” in the “IMPLEMENTATION INFORMATION” tab of the app’s page.4. EntityContainer NameCheck the metadata of the OData service using the app (https://<IP Adress>:<Port Number>/sap/opu/odata/sap/ MM_PUR_PO_MAINT_V2_SRV/$metadata)。You can find the EntityContainer name by searching for EntityContainer. 5. EntitySet nameWhen you start the Fiori app “Manage Purchase Orders”, if you check the Preview/Response of the request to manifest.appdescr in the browser’s developer tools, the entity set used for the List Report is “C_ PurchaseOrderTP”.6. PropertyPathYou can identify the item name (PropertyPath) by checking the definition of the target entity set in the metadata of the target OData service. Setting Extension Target and Annotation Change Properties manifest.json load the metadata of the OData service “MM_PUR_PO_MAINT_V2_SRV” used for “Purchase Order Management” and set the CDS View with the field to be extended by annotation to Target.The implementation uses FilterRestrictions to change the properties “RequiresFilter” and “RequiredProperties”, so that the FilterRestrictions are included in “Org.OData.Capabilities.V1″. vocabulary is referenced by the specified alias. 2. manifest.appdescr_variant.jsonmanifest.appdescr_variant.json is a file that describes the objects available in the original app, and many settings refer to the manifest information of the standard app. If you want to add a local annotation file, set the following properties:”dataSourceId”: A property that specifies the OData service of interest, in this scenario it is “mainService”.”annotations”: Specify the name of the annotation for the OData data source “mainService” that you specified. The name must start with “customer” (for example, “customer.myAnno”).”annotationsInsertPosition”: “END”. If not, they may be disabled by the server user and have no effect at all.”dataSource”: “Specify the annotation name that starts with “customer”. If you specify a local annotation file created with “uri” and add “type” to OData, it will be “ODataAnnotation”. 4. SummaryIn this article, we have shown you how to create an Adaptation Project in SAP Business Application Studio and add Local Annotation to make filter fields mandatory. In addition to making filters mandatory, the Adaptation Project allows you to extend your annotation implementation, extend your controller, and add custom XML fragments. For more information about the Adaptation Project, please refer to the documentation in the References section. ReferencesSAP Help: Extending an SAP Fiori Application for an SAP S/4HANA or SAP S/4HANA Cloud Private EditionSAP Blog: Extending SAP-delivered SAP Fiori elements apps using adaptation projects to create SAP S/4HANA app variantsSAP KBA: https://me.sap.com/notes/3285957 Read More Technology Blog Posts by SAP articles
#SAP
#SAPTechnologyblog