{"id":9687,"date":"2020-09-17T17:20:37","date_gmt":"2020-09-17T15:20:37","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=9687"},"modified":"2023-01-20T11:48:34","modified_gmt":"2023-01-20T10:48:34","slug":"metody-oraz-najlepsze-praktyki-integracji-sap-z-systemami-zewnetrznymi","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/metody-oraz-najlepsze-praktyki-integracji-sap-z-systemami-zewnetrznymi\/","title":{"rendered":"Metody oraz najlepsze praktyki integracji SAP z systemami zewn\u0119trznymi"},"content":{"rendered":"\n<p>Na co dzie\u0144 zdarza si\u0119, \u017ce potrzebujemy \u0142\u0105czy\u0107 rozwi\u0105zania SAPowe z odr\u0119bnymi systemami informatycznymi. W wi\u0119kszo\u015bci przypadk\u00f3w polega to albo na eksportowaniu, albo importowaniu jaki\u015b danych. W obydw\u00f3ch przypadkach potrzebujemy pewnych mechanizm\u00f3w i technologii, kt\u00f3re umo\u017cliwi\u0105 nam takie dzia\u0142anie.&nbsp;Wynika to tak\u017ce z faktu, \u017ce takie systemy s\u0105 z za\u0142o\u017cenia hermetyczne i nie zapewniaj\u0105 bezpo\u015bredniego dost\u0119pu do sieci internetowej, aby w ten spos\u00f3b dodatkowo chroni\u0107 dane klient\u00f3w oraz firmy. W poni\u017cszym artykule postaram si\u0119 Wam przybli\u017cy\u0107 najbardziej popularne rozwi\u0105zania, s\u0142u\u017c\u0105ce w\u0142a\u015bnie do integrowania si\u0119 z zewn\u0119trznymi systemami z poziomu SAPa.<\/p>\n\n\n\n<p>Do najpopularniejszych rozwi\u0105za\u0144 nale\u017cy na pewno zaliczy\u0107:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><em>Mechanizm wysy\u0142ania plik\u00f3w przez<\/em><em>&nbsp;modu\u0142 RFC<\/em><\/li><li><em>Mechanizm BAPI<\/em><\/li><li><em>Mechanizm modu\u0142\u00f3w PI\/PO<\/em><\/li><li><em>Mechanizm REST API<\/em><\/li><li><em>Mechanizm SOAP<\/em><em>&nbsp;Webservice<\/em><\/li><\/ul>\n\n\n\n<p>Ka\u017cde z nich zostanie w kr\u00f3tkiej formie opisane w dalszej cz\u0119\u015bci postu, aby og\u00f3lnie przybli\u017cy\u0107 Tobie, drogi czytelniku, jakie warianty s\u0105 mo\u017cliwe do zastosowania podczas prac integracyjnych.<\/p>\n\n\n\n<p>Na samym pocz\u0105tku musimy, tak\u017ce pami\u0119ta\u0107 na jakiej wersji SAP b\u0119dziemy dokonywali takiego po\u0142\u0105czenia. Czy b\u0119dzie to SAP Business One, SAP B1 on HANA, SAP ECC, ECC on HANA, S\/4 HANA itd.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/sap-300x300-1.png\"><img decoding=\"async\" width=\"300\" height=\"300\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/sap-300x300-1.png\" alt=\"sap 300x300 - Metody oraz najlepsze praktyki integracji SAP z systemami zewn\u0119trznymi\" class=\"wp-image-18615\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/sap-300x300-1.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/sap-300x300-1-150x150.png 150w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Ka\u017cde z rozwi\u0105za\u0144 przewiduje swoje podej\u015bcie do poruszanego tematu. Niekt\u00f3re mog\u0105 by\u0107 wykorzystywane zamiennie na r\u00f3\u017cnych wersjach jak np. modu\u0142y RFC albo oDATA na systemie S\/4 HANA, jednak nale\u017cy pami\u0119ta\u0107 aby dane rozwi\u0105zania dobiera\u0107 zgodnie z zastosowaniem.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Mechanizm wysy\u0142ania plik\u00f3w przez modu\u0142y RFC<\/h3>\n\n\n\n<p>Jest to pierwsza i jedna z prostszych oraz bardzo podstawowych metod przesy\u0142ania danych na zewn\u0119trzne dyski, sk\u0105d integrowane systemy pobieraj\u0105 dane w postaci plik\u00f3w w formatach np. CSV, XML, itd. Do tego celu s\u0105 nam potrzebne takie mechanizmy jak np. modu\u0142 RFC uruchamiaj\u0105cy polecenie systemowe zapisane w transakcji SM69.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Jak RFC wygl\u0105da w SAP?<\/li><\/ul>\n\n\n\n<p><strong>Przyk\u0142adowy modu\u0142 RFC:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/modul-rfc-1.jpg\"><img decoding=\"async\" width=\"470\" height=\"242\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/modul-rfc-1.jpg\" alt=\"modul rfc - Metody oraz najlepsze praktyki integracji SAP z systemami zewn\u0119trznymi\" class=\"wp-image-18623\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/modul-rfc-1.jpg 470w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/modul-rfc-1-300x154.jpg 300w\" sizes=\"(max-width: 470px) 100vw, 470px\" \/><\/a><\/figure><\/div>\n\n\n\n<p><strong>Przyk\u0142adowe u\u017cycie modu\u0142u RFC:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/przykladowe-uzycie-rfc-1.jpg\"><img decoding=\"async\" width=\"425\" height=\"341\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/przykladowe-uzycie-rfc-1.jpg\" alt=\"przykladowe uzycie rfc - Metody oraz najlepsze praktyki integracji SAP z systemami zewn\u0119trznymi\" class=\"wp-image-18633\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/przykladowe-uzycie-rfc-1.jpg 425w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/przykladowe-uzycie-rfc-1-300x241.jpg 300w\" sizes=\"(max-width: 425px) 100vw, 425px\" \/><\/a><\/figure><\/div>\n\n\n\n<p><strong>Grafika prezentuj\u0105ca, kt\u00f3re polecenie z transakcji SM69 zosta\u0142o wywo\u0142ane przez modu\u0142 RFC:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/zewnetrzne-polecenie-systemu-operacyjnego-1.jpg\"><img decoding=\"async\" width=\"501\" height=\"318\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/zewnetrzne-polecenie-systemu-operacyjnego-1.jpg\" alt=\"zewnetrzne polecenie systemu operacyjnego - Metody oraz najlepsze praktyki integracji SAP z systemami zewn\u0119trznymi\" class=\"wp-image-18643\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/zewnetrzne-polecenie-systemu-operacyjnego-1.jpg 501w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/zewnetrzne-polecenie-systemu-operacyjnego-1-300x190.jpg 300w\" sizes=\"(max-width: 501px) 100vw, 501px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Polecenie musi by\u0107 zrozumia\u0142e przez system operacyjny, na jakim jest zainstalowana instancja SAP. Dodatkowo potrzebujemy adres IP serwera na kt\u00f3ry b\u0119dziemy wysy\u0142ali pliki oraz, je\u017celi jest to wymagane, nazw\u0119 u\u017cytkownika oraz has\u0142o lub czasami jeszcze klucz identyfikacyjny dla uwierzytelnienia swojego dost\u0119pu do danego dysku sieciowego.<\/p>\n\n\n\n<p>Dzi\u0119ki takiemu mechanizmowi mo\u017cemy bez wi\u0119kszych problem\u00f3w wysy\u0142a\u0107 pliki na zewn\u0119trzne no\u015bniki danych. W przypadku systemu operacyjnego Linux, mo\u017cemy tego dokona\u0107 np. za pomoc\u0105 takich polece\u0144 systemowych jak:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>FTP<\/li><li>SFTP<\/li><li>CURL<\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Og\u00f3lne zasady dzia\u0142ania modu\u0142\u00f3w RFC<\/h4>\n\n\n\n<p><strong>Co to jest RFC?<\/strong><\/p>\n\n\n\n<p>RFC (ang. Remote Function Call) to protok\u00f3\u0142 SAP do obs\u0142ugi komunikacji mi\u0119dzy systemami w celu uproszczenia powi\u0105zanego programowania. Jest to proces wywo\u0142ywania modu\u0142u funkcyjnego, kt\u00f3ry znajduje si\u0119 na innej maszynie ni\u017c program wywo\u0142uj\u0105cy. RFC mog\u0105 by\u0107 u\u017cywane do wywo\u0142ywania innego programu na tej samej maszynie, ale zwykle jest u\u017cywane, gdy \u201e wywo\u0142uj\u0105ce \u201d i \u201e wywo\u0142ywane\u201d modu\u0142y\/programy funkcyjne, dzia\u0142aj\u0105 na osobnych maszynach.<\/p>\n\n\n\n<p>Graficzna prezentacja przep\u0142ywu danych:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/przeplyw-danych-1.jpg\"><img decoding=\"async\" width=\"671\" height=\"196\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/przeplyw-danych-1.jpg\" alt=\"przeplyw danych - Metody oraz najlepsze praktyki integracji SAP z systemami zewn\u0119trznymi\" class=\"wp-image-18629\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/przeplyw-danych-1.jpg 671w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/przeplyw-danych-1-300x88.jpg 300w\" sizes=\"(max-width: 671px) 100vw, 671px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>W systemach SAP, interfejsy RFC s\u0142u\u017c\u0105 do zestawiania po\u0142\u0105cze\u0144 RFC mi\u0119dzy r\u00f3\u017cnymi systemami SAP, a tak\u017ce mi\u0119dzy systemem SAP a systemem zewn\u0119trznym (innym ni\u017c SAP).<\/p>\n\n\n\n<p>RFC sk\u0142ada si\u0119 z dw\u00f3ch interfejs\u00f3w:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Interfejs wywo\u0142uj\u0105cy dla program\u00f3w ABAP<\/li><li>Interfejs wywo\u0142uj\u0105cy dla program\u00f3w innych ni\u017c SAP.<\/li><\/ul>\n\n\n\n<p>Ka\u017cdy program napisany w j\u0119zyku ABAP mo\u017ce korzysta\u0107 z modu\u0142\u00f3w RFC, po przez u\u017cywanie komendy&nbsp;<strong>CALL FUNCTION\u2026DESTINATION<\/strong>.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Istotne wiadomo\u015bci na temat modu\u0142\u00f3w RFC:<\/strong><ul><li>SAP u\u017cywa protoko\u0142u CPIC (Common Programming Interface for Communication) do przesy\u0142ania danych mi\u0119dzy systemami. Jest to protok\u00f3\u0142 specyficzny dla SAP. Zdalne wywo\u0142anie funkcji (RFC) to interfejs komunikacyjny oparty na CPI-C, ale z wi\u0119ksz\u0105 liczb\u0105 funkcji i \u0142atwiejszy w u\u017cyciu dla programist\u00f3w aplikacji.<\/li><li>Funkcje biblioteki RFC obs\u0142uguj\u0105 j\u0119zyk programowania C i Visual Basic (na platformach Windows).<\/li><li>Po\u0142\u0105czenia RFC mog\u0105 by\u0107 zawsze u\u017cywane w ca\u0142ym systemie, co oznacza, \u017ce po\u0142\u0105czenie RFC zdefiniowane w kliencie 000 mo\u017ce by\u0107 r\u00f3wnie\u017c u\u017cywane z klienta 100 (bez \u017cadnej r\u00f3\u017cnicy).<\/li><li>Jedyn\u0105 r\u00f3\u017cnic\u0105 mi\u0119dzy zdalnym wywo\u0142aniem modu\u0142u funkcji na inny serwer a wywo\u0142aniem lokalnym jest specjalny parametr (miejsce docelowe), kt\u00f3ry okre\u015bla serwer docelowy, na kt\u00f3rym ma by\u0107 wykonywany program.<\/li><\/ul><\/li><li><strong>Zalety modu\u0142\u00f3w RFC:<\/strong><ul><li>S\u0105 w stanie przekonwertowa\u0107 dane na format zrozumia\u0142y dla systemu zdalnego (docelowego).<\/li><li>Potrafi\u0105 wywo\u0142ywa\u0107 okre\u015blone procedury, kt\u00f3re s\u0105 niezb\u0119dne do rozpocz\u0119cia komunikacji ze zdalnym systemem.<\/li><li>Obs\u0142uguj\u0105 b\u0142\u0119dy, kt\u00f3re mog\u0105 wyst\u0105pi\u0107 w procesie komunikacji.<\/li><li>Pomagaj\u0105, tak\u017ce w zmniejszeniu wysi\u0142ku na opracowywanie modu\u0142\u00f3w oraz metod w zdalnych systemach.<\/li><\/ul><\/li><\/ul>\n\n\n\n<p><strong>Wyr\u00f3\u017cniamy par\u0119 rodzaj\u00f3w modu\u0142\u00f3w RFC:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/typy-rfc-1.jpg\"><img decoding=\"async\" width=\"346\" height=\"340\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/typy-rfc-1.jpg\" alt=\"typy rfc - Metody oraz najlepsze praktyki integracji SAP z systemami zewn\u0119trznymi\" class=\"wp-image-18639\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/typy-rfc-1.jpg 346w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/typy-rfc-1-300x295.jpg 300w\" sizes=\"(max-width: 346px) 100vw, 346px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Powy\u017csze modu\u0142y zostan\u0105 opisane w kolejnej cz\u0119\u015bci, po\u015bwi\u0119conej modu\u0142om RFC. ^_^<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Mechanizm BAPI<\/h3>\n\n\n\n<p>BAPI \u2013 Interfejs Programistyczny Aplikacji Biznesowych (ang. Business Application Programming Interface). Podstawow\u0105 koncepcj\u0105 interfejs\u00f3w BAPI jest orientacja obiektowa. Interfejsy BAPI umo\u017cliwiaj\u0105 dost\u0119p do obiekt\u00f3w biznesowych w systemie SAP przez systemy zewn\u0119trzne. Obiekty biznesowe reprezentuj\u0105 rzeczywiste obiekty, takie jak zam\u00f3wienia, klienci lub artyku\u0142y. Dost\u0119p do instancji jest mo\u017cliwy wy\u0142\u0105cznie przy u\u017cyciu metod udost\u0119pnianych przez obiekt biznesowy. Technicznie metoda jest wywo\u0142ywana na podstawie interfejs\u00f3w RFC. Instancja, do kt\u00f3rej nawi\u0105zywane s\u0105 po\u0142\u0105czenia, jest okre\u015blana przez pola kluczowe (numer klienta itd.).<\/p>\n\n\n\n<p><strong>Graficzna prezentacja przep\u0142ywu danych:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/przeplyw-danych-bapi-1.jpg\"><img decoding=\"async\" width=\"683\" height=\"227\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/przeplyw-danych-bapi-1.jpg\" alt=\"przeplyw danych bapi - Metody oraz najlepsze praktyki integracji SAP z systemami zewn\u0119trznymi\" class=\"wp-image-18631\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/przeplyw-danych-bapi-1.jpg 683w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/przeplyw-danych-bapi-1-300x100.jpg 300w\" sizes=\"(max-width: 683px) 100vw, 683px\" \/><\/a><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">3. Mechanizmy modu\u0142\u00f3w PI\/PO<\/h3>\n\n\n\n<p>Na samym pocz\u0105tku nale\u017cy przypomnie\u0107 sobie czym s\u0105 te dwa produkty, dostarczane przez firm\u0119 SAP:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong><em>SAP Process Integration<\/em><\/strong>&nbsp;\u2013 jest to \u201epo\u015brednik\u201d integracji, kt\u00f3ry tradycyjnie korzysta z obu stos\u00f3w ABAP i Java, aby umo\u017cliwi\u0107 integracj\u0119 opart\u0105 na wiadomo\u015bciach mi\u0119dzy systemami informatycznymi przy u\u017cyciu wielu adapter\u00f3w do pobierania komunikat\u00f3w do, i z tych system\u00f3w. Jest tak\u017ce mo\u017cliwe wdro\u017cenie PI w taki spos\u00f3b, aby po prostu dzia\u0142a\u0142o na stosie Java, ale je\u015bli to robisz, mo\u017cesz r\u00f3wnie dobrze aktywowa\u0107 dodatkowe komponenty PO.<\/li><li><strong><em>SAP Process Orchestration<\/em><\/strong>&nbsp;\u2013 jest to po\u0142\u0105czenie SAP Process Integration (jak wy\u017cej), SAP Business Process Management (u\u017cywane do tworzenia przep\u0142yw\u00f3w pracy mi\u0119dzy lud\u017ami i systemami), SAP Business Rules Management (u\u017cywane do w\u0142\u0105czania definiowanej przez u\u017cytkownika logiki biznesowej wymaganej w dowolnym procesie biznesowym,<br>wy\u0142\u0105czania\/w\u0142\u0105czania limit\u00f3w). Zawiera r\u00f3wnie\u017c wiele pomocnych komponent\u00f3w technicznych, takich jak Composite Application Framework (do tworzenia trwa\u0142o\u015bci danych), Enterprise Content Management (u\u017cywany do zarz\u0105dzania dokumentami) i lekk\u0105 wersj\u0119 funkcji SAP Portal (u\u017cywanej do dost\u0119pu do tre\u015bci w oparciu o role). Wszystkie z wymienionych element\u00f3w dzia\u0142aj\u0105 na stosie SAP Java.<\/li><\/ul>\n\n\n\n<p>M\u00f3wi\u0105c najpro\u015bciej,&nbsp;<strong><em>SAP Process Orchestration<\/em><\/strong>&nbsp;obejmuje wszystkie narz\u0119dzia potrzebne do tworzenia logiki biznesowej, aplikacji i integracji wymaganych do wype\u0142nienia wszelkich luk mi\u0119dzy systemami IT &lt;-&gt; lokaln\u0105 platform\u0119 rozszerze\u0144. Daje on te\u017c pe\u0142n\u0105 mo\u017cliwo\u015b\u0107 do integracji z baz\u0105 HANA oraz z rozwi\u0105zaniami chmurowymi oferowanymi ju\u017c od paru lat przez firm\u0119 SAP.<\/p>\n\n\n\n<p>Nale\u017cy tak\u017ce pami\u0119ta\u0107 o tym, \u017ce modu\u0142 PI nie jest ju\u017c wspierany w formie nowych rozszerze\u0144, jego rol\u0119 przej\u0105\u0142 modu\u0142 PO i to on jest polecany przez firm\u0119 SAP.<\/p>\n\n\n\n<p>Przyk\u0142adowa grafika, prezentuj\u0105ca spos\u00f3b dzia\u0142ania modu\u0142u PO w procesie integracji z zewn\u0119trznym systemem, kt\u00f3ry ma inn\u0105 form\u0119 komunikacji ni\u017c dane rozwi\u0105zanie w systemie SAP.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/modulpo-1.jpg\"><img decoding=\"async\" width=\"682\" height=\"192\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/modulpo-1.jpg\" alt=\"modulpo - Metody oraz najlepsze praktyki integracji SAP z systemami zewn\u0119trznymi\" class=\"wp-image-18621\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/modulpo-1.jpg 682w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/modulpo-1-300x84.jpg 300w\" sizes=\"(max-width: 682px) 100vw, 682px\" \/><\/a><\/figure><\/div>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">4. Mechanizmy REST API<\/h3>\n\n\n\n<p>REST API (ang. Representational state transfer), transfer stanu reprezentuj\u0105cego, to zbi\u00f3r zasad tworzenia architektury oprogramowania dla system\u00f3w rozproszonych. Opisywany standard definiuje sze\u015b\u0107 podstawowych regu\u0142:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Architektura Klient-Server<\/li><li>Bezstanowo\u015b\u0107<\/li><li>Zdolno\u015b\u0107 zapami\u0119tywania\/buforowania zasob\u00f3w<\/li><li>System warstwowy<\/li><li>Kod na \u017c\u0105danie<\/li><li>Jednolity interfejs<\/li><\/ol>\n\n\n\n<p>W rozwi\u0105zaniach systemu SAP mamy do czynienia z takim terminem jak&nbsp;<strong><em>OData<\/em><\/strong>. Czym w\u0142a\u015bciwie jest wspomniana fraza? W og\u00f3lnym rozumieniu, OData s\u0142u\u017cy do definiowania najlepszych rozwi\u0105za\u0144, kt\u00f3re s\u0105 wymagane do tworzenia i u\u017cywania interfejs\u00f3w API RESTful. Pomaga w wyszukiwaniu zmian, definiowaniu funkcji dla procedur wielokrotnego u\u017cytku i wysy\u0142aniu paczek \u017c\u0105da\u0144 itp.<\/p>\n\n\n\n<p>OData to protok\u00f3\u0142 do przesy\u0142ania zaprojektowany przez Microsoft ju\u017c w roku 2007 i od tego czasu stale rozwijany. Najnowsza wersja oData 4.0 zosta\u0142a wydana w roku 2014.<\/p>\n\n\n\n<p><strong>Cykl \u017cycia us\u0142ugi OData:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/cykl-zycia-odata-1.jpg\"><img decoding=\"async\" width=\"336\" height=\"306\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/cykl-zycia-odata-1.jpg\" alt=\"cykl zycia odata - Metody oraz najlepsze praktyki integracji SAP z systemami zewn\u0119trznymi\" class=\"wp-image-18619\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/cykl-zycia-odata-1.jpg 336w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/cykl-zycia-odata-1-300x273.jpg 300w\" sizes=\"(max-width: 336px) 100vw, 336px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Od kilku lat SAP Gateway ma funkcjonalno\u015b\u0107 dostarczania funkcji ABAP i interfejs\u00f3w RFC w postaci REST API. REST ma pewne zalety w stosunku do SOAP, ale ma podobn\u0105 technologi\u0119, poniewa\u017c jest r\u00f3wnie\u017c wywo\u0142aniem funkcji za po\u015brednictwem protoko\u0142u HTTP. W por\u00f3wnaniu z SOAP, REST jest \u0142atwy do wywo\u0142ania z r\u00f3\u017cnych platform, przesy\u0142a czyste dane czytelne dla cz\u0142owieka w formacie JSON lub XML, jest szybszy i oszcz\u0119dza zasoby. W podstawowej idei REST dost\u0119p do obiektu uzyskuje si\u0119 za po\u015brednictwem REST, a nie jego metod. Stan obiektu mo\u017cna zmieni\u0107 za pomoc\u0105 dost\u0119pu REST. Zmiana jest spowodowana przekazanymi parametrami. Cz\u0119stym zastosowaniem jest po\u0142\u0105czenie SAP PI przez interfejs REST.<\/p>\n\n\n\n<p><strong>Cztery podstawowe metody HTTP wykorzystywane w rozwi\u0105zaniach REST API:<\/strong><\/p>\n\n\n\n<p><strong>GET<\/strong>&nbsp;\u2013 s\u0142u\u017cy do pobierania danych. Tutaj wystarczy poda\u0107 odpowiedni endpoint, ewentualnie zmodyfikowa\u0107 nag\u0142\u00f3wki(headers) zapytania.<\/p>\n\n\n\n<p><strong>POST<\/strong>&nbsp;\u2013 s\u0142u\u017cy tworzeniu i przes\u0142aniu nowych danych. W tym przypadku konieczne jest ju\u017c stworzenie cia\u0142a(body), w kt\u00f3rym przeka\u017cemy dane do naszego REST API.<\/p>\n\n\n\n<p><strong>PUT<\/strong>&nbsp;\u2013 r\u00f3wnie\u017c s\u0142u\u017cy przesy\u0142aniu danych, lecz najcz\u0119\u015bciej w celu aktualizacji tych danych. Tutaj r\u00f3wnie\u017c wymagane jest przes\u0142anie danych w ciele.<\/p>\n\n\n\n<p><strong>DELETE<\/strong>&nbsp;\u2013 metoda s\u0142u\u017c\u0105ca do usuwania danych. W tym momencie chc\u0119 wspomnie\u0107 o technice tak zwanego soft-delete. M\u00f3wi\u0105c skr\u00f3tem polega to na tym, \u017ce kasuj\u0105c dane za pomoc\u0105 API tak naprawd\u0119 tylko dodajemy do encji informacj\u0119 o tym, \u017ce zosta\u0142a ona usuni\u0119ta. W rezultacie dane pozostaj\u0105 nadal w bazie, lecz nie s\u0105 one dost\u0119pne z poziomu API. Mechanizm ten nale\u017cy ju\u017c zaimplementowa\u0107 w samym API i nie ma on nic wsp\u00f3lnego z HTTP.<\/p>\n\n\n\n<p><strong>Graficzna prezentacja przep\u0142ywu danych:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/soap-rest-1.jpg\"><img decoding=\"async\" width=\"656\" height=\"174\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/soap-rest-1.jpg\" alt=\"soap rest - Metody oraz najlepsze praktyki integracji SAP z systemami zewn\u0119trznymi\" class=\"wp-image-18637\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/soap-rest-1.jpg 656w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/soap-rest-1-300x80.jpg 300w\" sizes=\"(max-width: 656px) 100vw, 656px\" \/><\/a><\/figure><\/div>\n\n\n\n<p><strong>Przyk\u0142adowe zapytanie GET dla REST API:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/zapytanie-get-dla-rest-1.jpg\"><img decoding=\"async\" width=\"796\" height=\"196\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/zapytanie-get-dla-rest-1.jpg\" alt=\"zapytanie get dla rest - Metody oraz najlepsze praktyki integracji SAP z systemami zewn\u0119trznymi\" class=\"wp-image-18645\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/zapytanie-get-dla-rest-1.jpg 796w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/zapytanie-get-dla-rest-1-300x74.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/zapytanie-get-dla-rest-1-768x189.jpg 768w\" sizes=\"(max-width: 796px) 100vw, 796px\" \/><\/a><\/figure><\/div>\n\n\n\n<p><strong>Przyk\u0142adowa odpowied\u017a dla powy\u017cszego zapytania:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/odpowiedz-get-rest-1.jpg\"><img decoding=\"async\" width=\"791\" height=\"242\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/odpowiedz-get-rest-1.jpg\" alt=\"odpowied\u017a get rest - Metody oraz najlepsze praktyki integracji SAP z systemami zewn\u0119trznymi\" class=\"wp-image-18625\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/odpowiedz-get-rest-1.jpg 791w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/odpowiedz-get-rest-1-300x92.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/odpowiedz-get-rest-1-768x235.jpg 768w\" sizes=\"(max-width: 791px) 100vw, 791px\" \/><\/a><\/figure><\/div>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">5. Mechanizmy SOAP Webservice<\/h3>\n\n\n\n<p>SOAP (ang. Simple Object Access Protocol), jest to protok\u00f3\u0142 komunikacyjny, kt\u00f3ry korzysta z formatu XML do kodowania \u017c\u0105da\u0144 oraz zazwyczaj protok\u00f3\u0142 HTTP do ich transportowania w sieci.<\/p>\n\n\n\n<p>Struktura SOAP sk\u0142ada si\u0119 z podstawowego znacznika&nbsp;<em>&lt;envelope&gt;<\/em>, kt\u00f3ry zawiera obowi\u0105zkowy znacznik&nbsp;<em>&lt;body&gt;&nbsp;<\/em>oraz opcjonalny znacznik&nbsp;<em>&lt;header&gt;<\/em>. Wszystkie g\u0142\u00f3wne dane wiadomo\u015bci s\u0105 zawarte w cz\u0119\u015bci&nbsp;<em>&lt;body&gt;<\/em>, natomiast cz\u0119\u015b\u0107 nag\u0142\u00f3wka mo\u017ce opcjonalnie zawiera\u0107 informacje, potrzebne w specyficznych przypadkach.<\/p>\n\n\n\n<p>Aby korzysta\u0107 w SAP z protoko\u0142u SOAP, nale\u017cy posiada\u0107 plik WSDL (ang. Web Services Description Language), oparty o j\u0119zyk XML. S\u0142u\u017cy do opisu punkt\u00f3w dost\u0119pu do us\u0142ug sieciowych z jakich chcemy skorzysta\u0107 wykorzystuj\u0105ce dane po\u0142\u0105czenia z zewn\u0119trznymi systemami. Taki plik musimy zaczyta\u0107 do SAP, aby na jego podstawie zosta\u0142a zbudowana struktura zapytania SOAP.<\/p>\n\n\n\n<p><strong>Graficzna prezentacja budowy SOAP:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/budowa-soap-300x175-1.jpg\"><img decoding=\"async\" width=\"300\" height=\"175\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/budowa-soap-300x175-1.jpg\" alt=\"budowa soap 300x175 - Metody oraz najlepsze praktyki integracji SAP z systemami zewn\u0119trznymi\" class=\"wp-image-18617\"\/><\/a><\/figure><\/div>\n\n\n\n<p><strong>\u00a0Przyk\u0142adowy dokument WSDL:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/wsdl-1.jpg\"><img decoding=\"async\" width=\"594\" height=\"253\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/wsdl-1.jpg\" alt=\"wsdl - Metody oraz najlepsze praktyki integracji SAP z systemami zewn\u0119trznymi\" class=\"wp-image-18641\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/wsdl-1.jpg 594w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/wsdl-1-300x128.jpg 300w\" sizes=\"(max-width: 594px) 100vw, 594px\" \/><\/a><\/figure><\/div>\n\n\n\n<p><strong>Przyk\u0142adowa odpowied\u017a SOAP:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/odpowiedz-soap-1.jpg\"><img decoding=\"async\" width=\"743\" height=\"524\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/odpowiedz-soap-1.jpg\" alt=\"odpowiedz soap - Metody oraz najlepsze praktyki integracji SAP z systemami zewn\u0119trznymi\" class=\"wp-image-18627\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/odpowiedz-soap-1.jpg 743w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/odpowiedz-soap-1-300x212.jpg 300w\" sizes=\"(max-width: 743px) 100vw, 743px\" \/><\/a><\/figure><\/div>\n\n\n\n<p><strong>Graficzna prezentacja przep\u0142ywu danych:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/soap-1.jpg\"><img decoding=\"async\" width=\"654\" height=\"210\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/soap-1.jpg\" alt=\"soap - Metody oraz najlepsze praktyki integracji SAP z systemami zewn\u0119trznymi\" class=\"wp-image-18635\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/soap-1.jpg 654w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/soap-1-300x96.jpg 300w\" sizes=\"(max-width: 654px) 100vw, 654px\" \/><\/a><\/figure><\/div>\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;9687&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;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: 4)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Metody oraz najlepsze praktyki integracji SAP z systemami zewn\u0119trznymi&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: 4)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Na co dzie\u0144 zdarza si\u0119, \u017ce potrzebujemy \u0142\u0105czy\u0107 rozwi\u0105zania SAPowe z odr\u0119bnymi systemami informatycznymi. W wi\u0119kszo\u015bci przypadk\u00f3w polega to albo &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/metody-oraz-najlepsze-praktyki-integracji-sap-z-systemami-zewnetrznymi\/\">Continued<\/a><\/p>\n","protected":false},"author":258,"featured_media":9734,"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,956],"class_list":["post-9687","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development-na-miekko","tag-sap","tag-rest-api"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/09\/sap-09-2020.jpg","category_names":["Development na mi\u0119kko"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/9687"}],"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\/258"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=9687"}],"version-history":[{"count":3,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/9687\/revisions"}],"predecessor-version":[{"id":18648,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/9687\/revisions\/18648"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/9734"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=9687"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=9687"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=9687"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}