{"id":23647,"date":"2023-08-30T05:00:00","date_gmt":"2023-08-30T03:00:00","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=23647"},"modified":"2024-12-05T09:41:13","modified_gmt":"2024-12-05T08:41:13","slug":"rozszerzenia-standard-fiori-apps","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/rozszerzenia-standard-fiori-apps\/","title":{"rendered":"Rozszerzenia standard Fiori Apps"},"content":{"rendered":"\n<p>Aplikacje standardowe SAP Fiori to portfolio dost\u0119pnych aplikacji, w kt\u00f3rych na starcie otrzymujemy okre\u015blon\u0105 funkcjonalno\u015b\u0107. Bardzo cz\u0119sto s\u0105 w nich przygotowane fragmenty kodu lub opcje do aktywowania, umo\u017cliwiaj\u0105ce dostosowanie ich jeszcze bardziej pod potrzeby biznesowe. Te specjalne fragmenty to tzw. rozszerzenia (ang. enhancements), o kt\u00f3rych b\u0119dzie mowa w tym artykule.<\/p>\n\n\n\n<p>Kiedy otrzymujemy zadanie rozszerzenia funkcjonalno\u015bci standardowej aplikacji SAP Fiori, istnieje kilka aspekt\u00f3w, kt\u00f3re warto sprawdzi\u0107 przed przyst\u0105pieniem do pracy. Je\u015bli planujemy doda\u0107 nowe pole, istnieje mo\u017cliwo\u015b\u0107, \u017ce jest ono ju\u017c dost\u0119pne do dodania na poziomie serwisu, a informacja o tym mo\u017ce by\u0107 zawarta w dokumentacji. Spr\u00f3bujmy odrobin\u0119 usystematyzowa\u0107 miejsca, kt\u00f3re warto sprawdzi\u0107, aby mie\u0107 pewno\u015b\u0107, \u017ce nasz wyb\u00f3r jest optymalny.<\/p>\n\n\n\n<p>Dla przyk\u0142adu u\u017cyjemy standardowej aplikacji \u201eRevise Payment Proposals\u201d i spr\u00f3bujemy doda\u0107 nowe pole, takie jak <em>Item text<\/em> w oparciu o analiz\u0119 Rogera Sainsbury\u2019ego.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Rodzaje rozszerze\u0144<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Personalizacja<\/strong><\/h3>\n\n\n\n<p>Czasami zdarza si\u0119, \u017ce pole, kt\u00f3re chcemy doda\u0107, jest ju\u017c dost\u0119pne w opcjach personalizacyjnych (ustawieniach widoku). Wystarczy w\u00f3wczas pami\u0119ta\u0107 o sprawdzeniu tego w ustawieniach aplikacji.<\/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=\"Przycisk ustawienia aplikacji SAP Fiori  \" 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\">Ryc. 1 Przycisk ustawienia aplikacji SAP Fiori&nbsp;<\/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=\"Lista dost\u0119pnych p\u00f3l w ustawieniach\" 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\">Ryc. 2 Lista dost\u0119pnych p\u00f3l w ustawieniach<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Dostosowanie (ang. customizing)<\/strong><\/h3>\n\n\n\n<p>W niekt\u00f3rych aplikacjach Fiori dostosowanie mo\u017ce by\u0107 \u0142atwe poprzez u\u017cycie transakcji SPRO \u2013 pole w\u0142\u0105cz\/wy\u0142\u0105cz. Istnieje te\u017c mo\u017cliwo\u015b\u0107 przej\u015bcia do opcji SPRO w uproszczony spos\u00f3b. Aby odblokowa\u0107 mo\u017cliwo\u015b\u0107 korzystania z funkcji <em>ok_code<\/em> w aplikacji, nale\u017cy uruchomi\u0107 \u201eGUI Actions and Settings\u201d:<\/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=\"Dost\u0119pne opcje menu dla listy \u2018More\u2019\" 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\">Ryc. 3 Dost\u0119pne opcje menu dla listy &#8222;More&#8221;<\/figcaption><\/figure>\n\n\n\n<p>Nast\u0119pnie zaznaczamy opcj\u0119 \u201eShow OK Code Field\u201d:<\/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=\"Przycisk ustawienia aplikacji SAP Fiori\" 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\">Ryc. 4 Przycisk ustawienia aplikacji SAP Fiori<\/figcaption><\/figure>\n\n\n\n<p>W ten spos\u00f3b otrzymujemy dost\u0119p do SPRO bez konieczno\u015bci instalacji natywnego front-endu SAPGUI front-end oraz unikaj\u0105c ogranicze\u0144 zwi\u0105zanych z pobieraniem nowych plik\u00f3w i autoryzacj\u0105 na komputerach korporacyjnych.<\/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=\"Ekran transakcji SPRO\" 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\">Ryc. 5 Ekran transakcji SPRO<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Adaptacja typu run-time (RTA)<\/strong><\/h3>\n\n\n\n<p>RTA to funkcjonalno\u015b\u0107, kt\u00f3ra umo\u017cliwia przypisanie super u\u017cytkownika, zdolnego do dokonywania podstawowych zmian w aplikacji Fiori. Te zmiany zostan\u0105 zastosowane dla wszystkich u\u017cytkownik\u00f3w, w przeciwie\u0144stwie do personalizacji, kt\u00f3ra pozwala na dostosowanie zmiany tylko dla danego u\u017cytkownika.<\/p>\n\n\n\n<p>Aby skorzysta\u0107 z adaptacji typu run-time, u\u017cytkownik musi by\u0107 przypisany do roli <em>SAP_UI_FLEX_KEY_USER<\/em> w Gateway\u2019u na front-endzie. W\u00f3wczas opcja <em>Adapt UI<\/em> zostanie udost\u0119pniona w Launchpadzie Fiori. Niestety, na dzie\u0144 dzisiejszy ta opcja &nbsp;jest dost\u0119pna tylko w aplikacjach wykorzystuj\u0105cych kontrolki <em>SmartForms<\/em> oraz <em>ObjectPage<\/em>, na przyk\u0142ad w aplikacji \u201ePurchase Requisition Item Factsheet\u201d.<\/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=\"Przycisk ustawienia aplikacji SAP Fiori\" 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\">Ryc. 6 Przycisk ustawienia aplikacji SAP Fiori<\/figcaption><\/figure>\n\n\n\n<p>Na przedstawionym wy\u017cej przyk\u0142adzie, mo\u017cna u\u017cy\u0107 Trybu Adaptacji UI do wprowadzenia zmian bez u\u017cycia kodu.<\/p>\n\n\n\n<p>Je\u015bli \u017cadne z powy\u017cszych rozwi\u0105za\u0144 nie pozwala nam na dokonanie potrzebnych zmian w standardowej aplikacji Fiori, pozostaj\u0105 nam dwie bardziej rozbudowane metody \u2013 na front-endzie (SAP WEB IDE) lub na back-endzie (serwis ODATA).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Rozszerzenia Fiori za pomoc\u0105 SAP WEB IDE<\/strong><\/h2>\n\n\n\n<p>W pierwszej kolejno\u015bci warto sprawdzi\u0107 dokumentacj\u0119 standardowej aplikacji Fiori w poszukiwaniu tzw. \u201eextension poits\u201d lub \u201ehooks\u201d.<\/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\">Ryc. 7 Sekcja rozszerze\u0144 dokumentacji aplikacji \u201eRevise Payment Proposals\u201d<\/figcaption><\/figure>\n\n\n\n<p>Je\u015bli zdecydujemy si\u0119 na tak\u0105 zmian\u0119, mo\u017cemy j\u0105 wykona\u0107 na poziomie SAP WEB IDE, np. poprzez zamian\u0119 widoku.<\/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\">Ryc. 8 Widok opcji rozszerze\u0144 dla zast\u0105pienia oryginalnego widoku w SAP WEB IDE<\/figcaption><\/figure>\n\n\n\n<p>Gdy zdecydujemy si\u0119 zast\u0105pi\u0107 widok (na przyk\u0142ad &#8222;S3&#8221;), powstanie w\u00f3wczas nowy projekt z ko\u0144c\u00f3wk\u0105 \u201eExtension\u201d, kt\u00f3ry zawiera kopi\u0119 standardowego widoku.<\/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=\"Lista plik\u00f3w rozszerzonej wersji aplikacji\" 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\">Ryc. 9 Lista plik\u00f3w rozszerzonej wersji aplikacji<\/figcaption><\/figure>\n\n\n\n<p>W nowym projekcie, w pliku <em>manifest.json<\/em> znajdzie si\u0119 dodatkowy kod \u0142\u0105cz\u0105cy oryginaln\u0105 aplikacj\u0119 z nasz\u0105 now\u0105, rozszerzon\u0105.<\/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=\"Fragment kodu w pliku manifest.json w aplikacji rozszerzonej\" 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\">Ryc. 10 Fragment kodu w pliku manifest.json w aplikacji rozszerzonej<\/figcaption><\/figure>\n\n\n\n<p>Je\u015bli w przysz\u0142o\u015bci postanowimy usun\u0105\u0107 t\u0119 poprawk\u0119, wystarczy usun\u0105\u0107 dodatkowy kod, a aplikacja powr\u00f3ci do oryginalnego widoku.<\/p>\n\n\n\n<p>Za pomoc\u0105 WEB IDE mo\u017cemy r\u00f3wnie\u017c zmieni\u0107 t\u0142umaczenia tekst\u00f3w, na przyk\u0142ad dla nowo wprowadzonego pola. Podczas tworzenia projektu typu \u201eextension\u201d w Web IDE jest opcja \u201ei18n Resource Text Customization\u201d.<\/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=\"Widok opcji rozszerze\u0144 dla zast\u0105pienia pliku z t\u0142umaczeniami w SAP WEB IDE\" 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\">Ryc. 11 Widok opcji rozszerze\u0144 dla zast\u0105pienia pliku z t\u0142umaczeniami w SAP WEB IDE<\/figcaption><\/figure>\n\n\n\n<p>Gdy wybierzemy t\u0119 opcj\u0119, plik <em>i18n<\/em> oraz pliki ze standardowej wersji aplikacji zostan\u0105 skopiowane do aplikacji z rozszerzeniem:<\/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=\"Widok plik\u00f3w z tekstami t\u0142umacze\u0144 w aplikacji SAP WEB IDE\" 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\">Ryc. 12 Widok plik\u00f3w z tekstami t\u0142umacze\u0144 w aplikacji SAP WEB IDE<\/figcaption><\/figure>\n\n\n\n<p>W\u00f3wczas mo\u017cemy doda\u0107 dodatkowe pole dla wprowadzonej przez nas kolumny.<\/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=\"Fragment kodu w pliku i18n odpowiedzialny za t\u0142umaczenie tekstu nowej kolumny\" 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\">Ryc. 13 Fragment kodu w pliku <em>i18n<\/em> odpowiedzialny za t\u0142umaczenie tekstu nowej kolumny<\/figcaption><\/figure>\n\n\n\n<p>Po dokonaniu zmian, pami\u0119tajmy o wykonaniu deploy\u2019a (\u201edeploy as a new app\u201d). W ten spos\u00f3b rozszerzona aplikacja pojawi si\u0119 jako nowa aplikacja BSP:<\/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=\"Widok aplikacji BSP po zlokalizowaniu w systemie SAP\" 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\">Ryc. 14 Widok aplikacji BSP po zlokalizowaniu w systemie SAP<\/figcaption><\/figure>\n\n\n\n<p>Aby uruchomi\u0107 rozszerzon\u0105 aplikacj\u0119, konieczne jest r\u00f3wnie\u017c odpowiednie skonfigurowanie mapowania kafelka oraz elementu docelowego (Tile and Target Mapping) w katalogu Fiori.<\/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=\"Widok do konfiguracji kafelkow 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\">Ryc. 15 Widok do konfiguracji kafelk\u00f3w SAP Fiori Launchpad<\/figcaption><\/figure>\n\n\n\n<p>Maj\u0105c na uwadze, \u017ce w obiekcie semantycznym konieczne jest u\u017cycie odmiennej nazwy ni\u017c w przypadku aplikacji standardowej:<\/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\">Ryc. 16. Miejsce konfiguracji obiektu semantycznego rozszerzonej wersji aplikacji<\/figcaption><\/figure>\n\n\n\n<p>Podczas tworzenia mapowania docelowego (Target Mapping), adres URL powinien zawiera\u0107 nazw\u0119 nowej aplikacji BSP (mo\u017cna j\u0105 odnale\u017a\u0107 r\u00f3wnie\u017c za pomoc\u0105 transakcji SICF). Natomiast nazwa komponentu mo\u017ce by\u0107 odnaleziona w pliku <em>Component.js<\/em> projektu rozszerzonego:<\/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\">Ryc. 17 Fragment kodu z pliku component.js wskazuj\u0105cy nazw\u0119 rozszerzonej aplikacji<\/figcaption><\/figure>\n\n\n\n<p>Aby przeprowadzi\u0107 test, pami\u0119tajmy o uruchomieniu kafelka z now\u0105 rozszerzon\u0105 aplikacj\u0105.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Rozszerzenia standardowych us\u0142ug ODATA<\/strong><\/h2>\n\n\n\n<p>Zgodnie z metodologi\u0105 Sebastiana Gaera, dodawanie nowego pola w serwisie ODATA sk\u0142ada si\u0119 z trzech krok\u00f3w:<\/p>\n\n\n\n<ol class=\"wp-block-list\" style=\"list-style-type:1\">\n<li>Najpierw rozszerzamy odpowiedni\u0105 struktur\u0119 ABAP DDIC poprzez komend\u0119 APPEND STRUCTURE.<\/li>\n\n\n\n<li>Nast\u0119pnie rozszerzamy ODATA Entity w Gateway Model Providerze.<\/li>\n\n\n\n<li>Na ko\u0144cu wype\u0142niamy dane rozszerzonego pola w Gateway Data Providerze.<\/li>\n<\/ol>\n\n\n\n<p>W aplikacji \u201eRevise Payment Proposals\u201d istnieje mo\u017cliwo\u015b\u0107 dodawania \u201ecustom fields\u201d:<\/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\">Ryc. 18 Fragment dokumentacji aplikacji \u201eRevise Payment Proposals\u201d dotycz\u0105cy \u201ecustomer fields\u201d<\/figcaption><\/figure>\n\n\n\n<p>Najpierw tworzymy i aktywujemy w\u0142asne pole w s\u0142owniku \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\">Ryc. 19 Okienko wyboru \u201eData element\u201d w systemie SAP<\/figcaption><\/figure>\n\n\n\n<p>Pole to dodajemy do struktury ze standardowej aplikacji:<\/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\">Ryc. 20 Widok struktury ze wskazaniem na nowo dodane pole<\/figcaption><\/figure>\n\n\n\n<p>W drugim kroku, pakiet \u201eODATA_REVISE_PAYMENT_PROPOSAL\u201d zawiera zar\u00f3wno klas\u0119 Model Provider, jak i Data Provider dla danego serwisu ODATA.<\/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\">Ryc. 21 Widok dost\u0119pnych klas w aplikacji \u201eRevise Payment Proposal\u201d<\/figcaption><\/figure>\n\n\n\n<p>Dodajemy nowe pole dla enitity \u201ePaytProposalInvoice\u201d.<\/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=\"Widok dost\u0119pnych Entity Sets w aplikacji\" 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\">Ryc. 22 Widok dost\u0119pnych Entity Sets w aplikacji<\/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=\"Widok nowo dodanego property dla danego Entity Set \u201ePaytProposalInvoice\u201d\" 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\">Ryc. 23 Widok nowo dodanego property dla danego Entity Set \u201ePaytProposalInvoice\u201d<\/figcaption><\/figure>\n\n\n\n<p>Przegenerowujemy obiekty typu run-time poprzez klikni\u0119cie przycisku:<\/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\">Ryc. 24 Fragment Interfejsu transakcji SEGW ze wskazaniem na przycisk regeneruj\u0105cego serwis<\/figcaption><\/figure>\n\n\n\n<p>W rezultacie klasa MPC o nazwie CL_FAP_REVISE_PAYMENT_MPC dostaje kilka dodatkowych linii kodu:<\/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=\"Fragment kodu z metody \u201eDEFINE_PAYTPROPOSALINVOICE\u201d wskazuj\u0105cy nowo dodane 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\">Ryc. 25 Fragment kodu z metody \u201eDEFINE_PAYTPROPOSALINVOICE\u201d wskazuj\u0105cy nowo dodane property<\/figcaption><\/figure>\n\n\n\n<p>Nast\u0119pnie, aby w kroku trzecim wprowadzi\u0107 dane do nowego pola, musimy zlokalizowa\u0107 metod\u0119: <em>CL_FAP_REVISE_PAYMENT_DPC_EXT-&gt;PAYTPROPOSALINVO_GET_ENTITYSET<\/em>.<\/p>\n\n\n\n<p>Ta metoda jest ju\u017c zredefiniowana i na samym ko\u0144cu posiada rozszerzenie (enhancement), do kt\u00f3rego mo\u017cemy doda\u0107 kod pobieraj\u0105cy tekst z pola <em>BSEG-SGTXT<\/em> i przekazuj\u0105cy go do tabeli <em>et_entityset<\/em> (zawiera ona dane dla ca\u0142ego zbioru entity).<\/p>\n\n\n\n<p>Na sam koniec, pami\u0119tajmy tak\u017ce o dodaniu nowej kolumny w widoku na front-endzie, aby dane z nowego pola prawid\u0142owo si\u0119 wy\u015bwietla\u0142y:<\/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\">Ryc. 26 Fragment kodu z widoku wskazuj\u0105cy nowododan\u0105 kolumn\u0119 do tabeli z rozszerzonym polem<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/oferty-pracy\/all\/all\/sap\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"737\" height=\"170\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/12\/praca-m-11.jpg\" alt=\"oferty pracy\" class=\"wp-image-29763\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/12\/praca-m-11.jpg 737w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/12\/praca-m-11-300x69.jpg 300w\" sizes=\"(max-width: 737px) 100vw, 737px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Podsumowanie<\/strong><\/h2>\n\n\n\n<p>Serwis ODATA mo\u017ce by\u0107 modyfikowany r\u00f3wnie\u017c przy u\u017cyciu BAdI (Business add-ins), jednak te dodatki nie s\u0105 dost\u0119pne dla wszystkich standardowych aplikacji SAP Fiori. Widoki Fiori mog\u0105 by\u0107 r\u00f3wnie\u017c stworzone na poziomie back-endu za pomoc\u0105 \u2018CDS Views\u2019, a wtedy do rozszerze\u0144 aplikacji mo\u017cna u\u017cywa\u0107 adnotacji (annotations) po stronie back-endu i front-endu. O tym jednak opowiemy w oddzielnym artykule.<\/p>\n\n\n\n<p>Podsumowuj\u0105c, rozszerzanie standardowych aplikacji Fiori jest mo\u017cliwe na wiele r\u00f3\u017cnych sposob\u00f3w i zale\u017c\u0105 one do\u015b\u0107 mocno od opcji jakie zosta\u0142y nam udost\u0119pnione przez firm\u0119 SAP. W skrajnych przypadkach mo\u017cemy po prostu wykona\u0107 rozszerzenie ca\u0142ej aplikacji.<\/p>\n\n\n\n<p>***<\/p>\n\n\n\n<p>Je\u015bli interesuje Ci\u0119 tematyka SAP, zajrzyj koniecznie do <a href=\"https:\/\/sii.pl\/blog\/wyszukiwarka\/sap\/\" target=\"_blank\" aria-label=\"innych artyku\u0142\u00f3w naszych ekspert\u00f3w. (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">innych artyku\u0142\u00f3w naszych ekspert\u00f3w.<\/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;23647&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;6&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;11&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;5\\\/5 ( votes: 6)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Rozszerzenia standard Fiori Apps&quot;,&quot;width&quot;:&quot;139.5&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} ( {votes}: {count})&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: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 139.5px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 14.4px;\">\n            5\/5 ( votes: 6)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Aplikacje standardowe SAP Fiori to portfolio dost\u0119pnych aplikacji, w kt\u00f3rych na starcie otrzymujemy okre\u015blon\u0105 funkcjonalno\u015b\u0107. Bardzo cz\u0119sto s\u0105 w nich &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/rozszerzenia-standard-fiori-apps\/\">Continued<\/a><\/p>\n","protected":false},"author":555,"featured_media":23704,"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":[1316],"tags":[548,363,702],"class_list":["post-23647","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development-na-miekko","tag-sap","tag-aplikacja","tag-sap-fiori"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/08\/Rozszerzenia-standard-Fiori-Apps.jpg","category_names":["Development na mi\u0119kko"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/23647"}],"collection":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/users\/555"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=23647"}],"version-history":[{"count":2,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/23647\/revisions"}],"predecessor-version":[{"id":29765,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/23647\/revisions\/29765"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/23704"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=23647"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=23647"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=23647"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}