{"id":23712,"date":"2023-08-30T05:00:00","date_gmt":"2023-08-30T03:00:00","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=23712&#038;category=hard-development"},"modified":"2026-05-07T13:42:11","modified_gmt":"2026-05-07T11:42:11","slug":"standard-fiori-apps-enhancements","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/en\/standard-fiori-apps-enhancements\/","title":{"rendered":"Standard Fiori Apps enhancements"},"content":{"rendered":"\n<p>Standard SAP Fiori apps are a portfolio of applications where we receive a set of basic functionalities from the start. Very often, there are specific code fragments or configuring options that make customization possible in order to meet the business requirements. These places are called enhancements, and that is what this article is going to cover.<\/p>\n\n\n\n<p>When our requirement is to enhance the functionality of the standard SAP Fiori application, there are a couple of aspects that are worth examining before. If we need to add a new field, it is possible that it is already possible that the option to add it at the ODATA level already exists and is in the documentation. Let\u2019s try to systemize the places worth examining to ensure that the approach we have chosen is the most optimal. As an example, we will use the \u201cRevise Payment Proposals\u201d application and attempt to add a new field, \u201citem text\u201d, based on Roger Sainsbury\u2019s analysis.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Enhancement types<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Personalization<\/strong><\/h3>\n\n\n\n<p>Sometimes, it is possible that the new field we are about to add is already available in the personalization options (view setting). It is enough to remember to verify it in the application\u2019s settings.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-1.jpg\"><img decoding=\"async\" width=\"921\" height=\"634\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-1.jpg\" alt=\"Settings button of the SAP Fiori app\" class=\"wp-image-23648\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-1.jpg 921w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-1-300x207.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-1-768x529.jpg 768w\" sizes=\"(max-width: 921px) 100vw, 921px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 1 Settings button of the SAP Fiori app<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-2.jpg\"><img decoding=\"async\" width=\"1024\" height=\"449\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-2-1024x449.jpg\" alt=\"List of available fields to show in the settings\" class=\"wp-image-23650\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-2-1024x449.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-2-300x132.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-2-768x337.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-2-370x162.jpg 370w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-2.jpg 1449w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 2 List of available fields to show in the settings<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Customization<\/strong><\/h3>\n\n\n\n<p>Some Fiori apps are easy to customize in SPRO (enabling\/disabling fields) but how to enter the SPRO screen when we are in the Fiori Launchpad? There is a simple way to navigate there. To enter the \u2018ok_code\u2019 in the Fiori Launchpad app, it is enough to go to \u2018GUI Actions and Settings\u2019.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-3.jpg\"><img decoding=\"async\" width=\"1024\" height=\"440\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-3-1024x440.jpg\" alt=\"Options available from the \u201cmore\u201d tab\" class=\"wp-image-23652\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-3-1024x440.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-3-300x129.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-3-768x330.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-3-1536x660.jpg 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-3.jpg 1580w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 3 Options available from the \u201cmore\u201d tab<\/figcaption><\/figure>\n\n\n\n<p>From there, we can enable the \u201cshow OK Code Field\u201d option.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-4.jpg\"><img decoding=\"async\" width=\"1024\" height=\"328\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-4-1024x328.jpg\" alt=\"Show OK Code selection field\" class=\"wp-image-23654\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-4-1024x328.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-4-300x96.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-4-768x246.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-4.jpg 1363w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 4 Show OK Code selection field<\/figcaption><\/figure>\n\n\n\n<p>This is how we can access SPRO without installing native SAPGUI frontend, without downloading new files, and without being limited by authorizations according to the corporation rules.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-5.jpg\"><img decoding=\"async\" width=\"1024\" height=\"622\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-5-1024x622.jpg\" alt=\"SPRO selection screen\" class=\"wp-image-23656\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-5-1024x622.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-5-300x182.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-5-768x466.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-5.jpg 1211w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig 5. SPRO selection screen<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong><strong>Run-time adaption<\/strong> (RTA)<\/strong><\/h3>\n\n\n\n<p>RT adaptation is a functionality that enables the assignment of a super-user who can make basic changes to the Fiori app. These changes will apply to all users, unlike personalization where only one user is able to see the changes. To use RTA, the user must be assigned to the \u2018SAP_UI_FLEX_KEY_USER\u2019 role at the frontend Gateway. <\/p>\n\n\n\n<p>At the same time, the \u2018Adapt UI\u201d option will become available in the Fiori Launchpad. Unfortunately, this option is currently only available in apps that use \u2018SmartForms\u2019 and \u2018ObjectPage\u2019 controls, such as the \u2018Purchase Requisition Item Factsheet\u2019.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-6.jpg\"><img decoding=\"async\" width=\"519\" height=\"710\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-6.jpg\" alt=\"RTA options available for the SAP Fiori app\" class=\"wp-image-23658\" style=\"width:325px;height:444px\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-6.jpg 519w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-6-219x300.jpg 219w\" sizes=\"(max-width: 519px) 100vw, 519px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 6 RTA options available for the SAP Fiori app<\/figcaption><\/figure>\n\n\n\n<p>In the example above, we can use the Adapt IU mode to add or remove new fields without looking into the code.<\/p>\n\n\n\n<p>If none of the aforementioned solutions enable the necessary changes in the standard Fiori app, we still have one of the two more advanced methods \u2013 SAP WEB IDE for the front-end changes and ODATA service for the back-end changes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Fiori Enhancements using SAP WEB IDE<\/strong><\/h2>\n\n\n\n<p>To begin with, we should examine the documentation of the standard Fiori to find \u2018extension points\u2019 or \u2018hooks\u2019.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-7.jpg\"><img decoding=\"async\" width=\"1024\" height=\"529\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-7-1024x529.jpg\" alt=\"Sekcja rozszerze\u0144 dokumentacji aplikacji \u201eRevise Payment Proposals\u201d\" class=\"wp-image-23660\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-7-1024x529.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-7-300x155.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-7-768x396.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-7.jpg 1476w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 7 The extensibility section of the \u2018Revise Payment Proposals\u2019 application\u2019s documentation<\/figcaption><\/figure>\n\n\n\n<p>If we decide to implement such changes, we can carry them out at the SAP WEB IDE level through view replacement.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-8.jpg\"><img decoding=\"async\" width=\"1024\" height=\"476\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-8-1024x476.jpg\" alt=\"Widok opcji rozszerze\u0144 dla zast\u0105pienia oryginalnego widoku w SAP WEB IDE\" class=\"wp-image-23662\" style=\"width:840px;height:390px\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-8-1024x476.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-8-300x139.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-8-768x357.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-8.jpg 1511w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 8 Extension selection screen for replacing the original view in SAP WEB IDE<\/figcaption><\/figure>\n\n\n\n<p>If we decide to replace the original view (for instance \u2018S3\u2019), it will create a new project with an \u2018Extension\u2019 ending, containing the copy of the standard view.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-9.jpg\"><img decoding=\"async\" width=\"588\" height=\"638\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-9.jpg\" alt=\"List of file of the extension version of the app\" class=\"wp-image-23664\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-9.jpg 588w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-9-276x300.jpg 276w\" sizes=\"(max-width: 588px) 100vw, 588px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 9 List of files of the extension version of the app<\/figcaption><\/figure>\n\n\n\n<p>In the new project, within the \u2018manifest.json\u2019 file, a new fragment of code will appear, linking the old version of the app with the new version.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-10.jpg\"><img decoding=\"async\" width=\"1024\" height=\"395\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-10-1024x395.jpg\" alt=\"Code fragment inside the \u2018manifest.json\u2019 file in the extended app\" class=\"wp-image-23667\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-10-1024x395.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-10-300x116.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-10-768x297.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-10.jpg 1507w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 10 Code fragment inside the \u2018manifest.json\u2019 file in the extended app<\/figcaption><\/figure>\n\n\n\n<p>If we decide to delete this enhancement in the future, all we need to do is delete this code fragment and the app will revert to its original state.<\/p>\n\n\n\n<p>With the help of SAP WEB IDE we can also modify the translations of texts, including the newly created field. During the extension selection, there is an \u2018i18n Resource Text Customization\u2019 option.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-11.jpg\"><img decoding=\"async\" width=\"1024\" height=\"479\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-11-1024x479.jpg\" alt=\"Extension selection screen for making changes in the \u2018i18n\u2019 file\" class=\"wp-image-23669\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-11-1024x479.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-11-300x140.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-11-768x359.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-11.jpg 1348w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 11 Extension selection screen for making changes in the \u2018i18n\u2019 file<\/figcaption><\/figure>\n\n\n\n<p>If we choose this option, the \u2018i18n\u2019 file from the standard version of the app will be copied to the app with the extension:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-12.jpg\"><img decoding=\"async\" width=\"522\" height=\"680\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-12.jpg\" alt=\"A list of files with text translations within the SAP WEB IDE app\" class=\"wp-image-23671\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-12.jpg 522w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-12-230x300.jpg 230w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-12-170x220.jpg 170w\" sizes=\"(max-width: 522px) 100vw, 522px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 12 A list of files with text translations within the SAP WEB IDE app<\/figcaption><\/figure>\n\n\n\n<p>In this file, we can add additional field for the newly added column.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-13.jpg\"><img decoding=\"async\" width=\"906\" height=\"206\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-13.jpg\" alt=\"Code fragment from \u2018i18n\u2019 file responsible for the text translation of newly added field\" class=\"wp-image-23673\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-13.jpg 906w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-13-300x68.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-13-768x175.jpg 768w\" sizes=\"(max-width: 906px) 100vw, 906px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 13 Code fragment from \u2018i18n\u2019 file responsible for the text translation of newly added field<\/figcaption><\/figure>\n\n\n\n<p>After making those changes, remember to make a demployment (\u2018deploy as new app\u2019). This will ensure that the modified application will be displayed as a new BSP application.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-14.jpg\"><img decoding=\"async\" width=\"1024\" height=\"419\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-14-1024x419.jpg\" alt=\"BSP application view after locating it in the SAP system\" class=\"wp-image-23675\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-14-1024x419.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-14-300x123.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-14-768x314.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-14-1536x628.jpg 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-14.jpg 1575w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 14 BSP application view after locating it in the SAP system<\/figcaption><\/figure>\n\n\n\n<p>To run the enhanced application, we also have to configure the tile and target mapping in the Fiori catalogue.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/?attachment_id=23677\"><img decoding=\"async\" width=\"1024\" height=\"618\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-15-1024x618.jpg\" alt=\"A screen showing tile configuration in SAP Fiori Launchpad\" class=\"wp-image-23677\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-15-1024x618.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-15-300x181.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-15-768x464.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-15.jpg 1216w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 15 A screen showing tile configuration in SAP Fiori Launchpad<\/figcaption><\/figure>\n\n\n\n<p>We should also remember that the name in the semantic object field must be different from the standard app:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-16.jpg\"><img decoding=\"async\" width=\"1024\" height=\"508\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-16-1024x508.jpg\" alt=\"Miejce konfiguracji obiektu semantycznego rozszerzonej wersji aplikacji\" class=\"wp-image-23679\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-16-1024x508.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-16-300x149.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-16-768x381.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-16.jpg 1379w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 16 The place of semantic object\u2019s configuration in the enhanced version of the app<\/figcaption><\/figure>\n\n\n\n<p>For the target mapping, the URL address contains the name of the new BSP application (which can also be found using the SICF transaction), and the component name can be found in the \u2018Component.js\u2019 file of the enhanced project:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-17.jpg\"><img decoding=\"async\" width=\"1024\" height=\"437\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-17-1024x437.jpg\" alt=\"Fragment kodu z pliku component.js wskazuj\u0105cy nazw\u0119 rozszerzonej aplikacji\" class=\"wp-image-23681\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-17-1024x437.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-17-300x128.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-17-768x328.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-17.jpg 1480w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 17 Code fragment from the \u2018Component.js\u2019 file pointing to the name of the enhanced application<\/figcaption><\/figure>\n\n\n\n<p>To test the enhanced application, we should naturally remember about to launch the proper tile with the new app (not the original).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Enhancing standard ODATA services<\/strong><\/h2>\n\n\n\n<p>According to Sebastian Gaer\u2019s methodology, adding a new field in the ODATA service consists of three steps:<\/p>\n\n\n\n<ol style=\"list-style-type:1\" class=\"wp-block-list\">\n<li>First, we extend the appropriate ABAP Data Dictionary (DDIC) structure using the command APPEND STRUCTURE.<\/li>\n\n\n\n<li>Secondly, we extend the ODATA entity in the Gateway Model Provider.<\/li>\n\n\n\n<li>Finally, we populate the data of the newly added field in the Gateway Data Provider.<\/li>\n<\/ol>\n\n\n\n<p>In the \u2018Revise Payment Proposals\u2019 application, there is an option to add custom fields:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-18.jpg\"><img decoding=\"async\" width=\"1024\" height=\"407\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-18-1024x407.jpg\" alt=\"Fragment dokumentacji aplikacji \u201eRevise Payment Proposals\u201d dotycz\u0105cy \u201ecustomer fields\u201d\" class=\"wp-image-23683\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-18-1024x407.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-18-300x119.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-18-768x305.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-18.jpg 1491w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 18 \u2018Revise Payment Proposals\u2019 app\u2019s documentation fragment describing customer fields<\/figcaption><\/figure>\n\n\n\n<p>First we create and activate the new field in the ABAP dictionary \u2013 ZZSGTXT.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"1024\" height=\"124\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-19.jpg\" alt=\"Okienko wyboru \u201eData element\u201d w systemie SAP\" class=\"wp-image-23685\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-19.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-19-300x36.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-19-768x93.jpg 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Fig. 19 Selection screen of data element in the SAP system<\/figcaption><\/figure>\n\n\n\n<p>Then, we add the new field to the standard application\u2019s structure:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-20.jpg\"><img decoding=\"async\" width=\"1024\" height=\"577\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-20-1024x577.jpg\" alt=\"Widok struktury ze wskazaniem na nowo dodane pole\" class=\"wp-image-23687\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-20-1024x577.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-20-300x169.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-20-768x433.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-20-555x312.jpg 555w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-20.jpg 1262w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 20 View of the structure pointing to the newly added field<\/figcaption><\/figure>\n\n\n\n<p>In the second step, the package \u2018ODATA_REVISE_PAYMENT_PROPOSAL\u2019 contains both the Model Provider class and the Data Provider class for the specified ODATA service.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-21.jpg\"><img decoding=\"async\" width=\"1024\" height=\"313\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-21-1024x313.jpg\" alt=\"Widok dost\u0119pnych klas w aplikacji \u201eRevise Payment Proposal\u201d\" class=\"wp-image-23689\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-21-1024x313.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-21-300x92.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-21-768x235.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-21.jpg 1425w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 21 Screen of the available classes in the \u2018Revise Payment Proposal\u2019 app<\/figcaption><\/figure>\n\n\n\n<p>In the next step, we add a new field for the \u2018PaytProposalInvoice\u2019 entity.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-22.jpg\"><img decoding=\"async\" width=\"570\" height=\"742\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-22.jpg\" alt=\"Screen of the available entity sets in the app\" class=\"wp-image-23692\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-22.jpg 570w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-22-230x300.jpg 230w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-22-170x220.jpg 170w\" sizes=\"(max-width: 570px) 100vw, 570px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 22 Screen of the available entity sets in the app<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"85\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-23-1024x85.jpg\" alt=\"Screen of the newly added property for the given Entity Set \u2018PaytProposalInvoice\u2019\" class=\"wp-image-23694\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-23-1024x85.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-23-300x25.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-23-768x63.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-23.jpg 1502w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Fig. 23 Screen of the newly added property for the given Entity Set \u2018PaytProposalInvoice\u2019<\/figcaption><\/figure>\n\n\n\n<p>Re-generate the runtime objects by clicking the following button:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-24.jpg\"><img decoding=\"async\" width=\"1024\" height=\"267\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-24-1024x267.jpg\" alt=\"Fragment Interfejsu transakcji SEGW ze wskazaniem na przycisk regeneruj\u0105cego serwis\" class=\"wp-image-23696\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-24-1024x267.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-24-300x78.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-24-768x200.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-24.jpg 1306w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 24 SEGW button for regenerating the ODATA service<\/figcaption><\/figure>\n\n\n\n<p>As a result, a few new lines of code appear in the MPC class named CL_FAP_REVISE_PAYMENT.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-25.jpg\"><img decoding=\"async\" width=\"1024\" height=\"440\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-25-1024x440.jpg\" alt=\"Fig. 25 Code fragment from the method \u2018DEFINE_PAYTPROSOALINVOICE\u2019 displaying new property\" class=\"wp-image-23698\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-25-1024x440.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-25-300x129.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-25-768x330.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-25.jpg 1488w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 25 Code fragment from the method \u2018DEFINE_PAYTPROSOALINVOICE\u2019 displaying new property<\/figcaption><\/figure>\n\n\n\n<p>Then, if we want to populate the new field with data, we need to locate the method: CL_FAP_REVISE_PAYMENT_DPC_EXT-&gt;PAYTPROPOSALINVO_GET_ENTITYSET.<\/p>\n\n\n\n<p>This method is already redefined and has an enhancement at the end, where we can add the code to retrieve data from the field BSEG-SGTXT and pass it to \u2018et_entityset\u2019 table (which holds the data for the entire entity set).<\/p>\n\n\n\n<p>Finally, we should also remember to add a new column in the front-end view so that the data from newly created field displays correctly.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-26.jpg\"><img decoding=\"async\" width=\"1024\" height=\"314\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-26-1024x314.jpg\" alt=\"Fragment kodu z widoku wskazuj\u0105cy nowododan\u0105 kolumn\u0119 do tabeli z rozszerzonym polem\" class=\"wp-image-23701\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-26-1024x314.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-26-300x92.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-26-768x236.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Ryc.-26.jpg 1456w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 26 Code fragment from the view presenting newly added column to the table with enhanced field<\/figcaption><\/figure>\n\n\n<div class=\"nsw-o-blogersii-banner\">\n            <picture>\n            <source srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/04\/Blog-SAP-Desktop_.jpg\" media=\"(min-width: 992px)\" >\n            <source srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/04\/Blog-SAP-Mob_.jpg\" media=\"(min-width: 300px)\" >            <img decoding=\"async\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/04\/Blog-SAP-Desktop_.jpg\" alt=\"\"  class=\"\"  >\n        <\/picture>\n        <div class=\"cnt\">\n                    <div class=\"nsw-m-title-block -h3 -invert  -has-title-margin-bottom-0 -has-title-font-weight-bold\">\n                                <h2 class=\"nsw-m-title-block__title\">Sii x SAP<\/h2>\n                <\/div>\n                            <p class=\"has-nsw-p-4-font-size has-invert-color\">\n                As an SAP Silver Partner, we have many years of experience in implementing ERP solutions in companies of various scales and process complexities.\n            <\/p>\n                            <a  href=\"https:\/\/sii.pl\/en\/what-we-offer\/enterprise-platforms\/sap\/\" class=\"nsw-a-button -ghost -banner-button\"   >\n        <span>SAP offering<\/span>\n    <\/a>\n            <\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Summary<\/strong><\/h2>\n\n\n\n<p>The ODATA service can also be enhanced with BAdI (Business add-ins). However, these add-ins are&nbsp;not available for all of the standard SAP FIORI applications. Fiori views can also be created at the back-end level with help of \u2018CDS Views\u2019. Modifying them involves using SAP annotations on both the front and back-end levels, but this will be discussed in more detail in the next article.<\/p>\n\n\n\n<p>In summary, there are numerous ways to enhance standard Fiori apps and they are limited by the options which were given by the SAP company. In the worst-case scenario, it is possible to enhance the entire application and rewrite the pieces that need improvement.<\/p>\n\n\n\n<p>***<\/p>\n\n\n\n<p>If you are interested in SAP topics, also take a look at <a href=\"https:\/\/sii.pl\/blog\/en\/search\/\" target=\"_blank\" aria-label=\"other articles by our experts (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">other articles by our experts<\/a>. <\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;23712&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;4&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;4&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;2&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;4\\\/5&quot;,&quot;size&quot;:&quot;30&quot;,&quot;title&quot;:&quot;Standard Fiori Apps enhancements&quot;,&quot;width&quot;:&quot;127&quot;,&quot;_legend&quot;:&quot;{score}\\\/5&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 127px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 24px;\">\n            4\/5    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Standard SAP Fiori apps are a portfolio of applications where we receive a set of basic functionalities from the start. &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/en\/standard-fiori-apps-enhancements\/\">Continued<\/a><\/p>\n","protected":false},"author":555,"featured_media":23705,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1319],"tags":[1775,1776,1683,1499],"class_list":["post-23712","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-soft-development","tag-aplikacja-en","tag-sap-fiori-en","tag-applications","tag-sap-en"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Rozszerzenia-standard-Fiori-Apps.jpg","category_names":["Soft development"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/posts\/23712"}],"collection":[{"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/users\/555"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/comments?post=23712"}],"version-history":[{"count":3,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/posts\/23712\/revisions"}],"predecessor-version":[{"id":33810,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/posts\/23712\/revisions\/33810"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/media\/23705"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/media?parent=23712"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/categories?post=23712"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/tags?post=23712"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}