Hirdetés
 

Webszolgáltatások V. Rész: Webszolgáltatások kliens oldani felhasználása

PDF
Nyomtatás
A következõ oldalokon keresztül egy SOAP webszolgáltatás meghívása látható ABAP programkörnyezetben.A 6.40-es WAS (Web Application Server) vagy a Netweaver 2004s segítségével egy úgynevezett Proxy osztályt kell definiálni, mely a Dictionary-ban egy hagyományos ABAP osztályként jelenik meg. Ez a Proxy osztály teremti meg a hidat az ABAP program és a külsõ webszolgáltatás között. A programkörnyezetbõl nézve úgy viselkedik, mint egy SAP osztály a külsõ internet felõl az ITS egy webes interfészt jelenít meg.

1. WS meghívása és felhasználása ABAP környezetben


1. ábra: Új kliens proxy létrehozása

A Proxy osztály létrehozásának a lépései:
Az SE80-as tranzakcióban az Edit Objectre kattintva kiválaszthatjuk a létrehozni kívánt objektum típusát.

Az Enterprise Services fülre kattintva válasszuk ki a Client Proxy menüpontot, majd az alsó menüsorban az Új létrehozás gombra kattintva megkapjuk a következõ dialógusablakot:

 


2. ábra: WSDL kiválasztása

Itt lehet meghatározni a webszolgáltatást leíró WSDL file helyét. Ha a leíró file egy UDDI Registry-ben, illetve a XI repository-ban van, akkor további ablakokon keresztül navigálhatunk az osztály készítéséhez. Lehetõségünk van a lokális gépen elmentett leíró file használatára, illetve az interneten közzétett nyilvános WSDL-t is választhatjuk.
Jelen esetben maradjunk meg az URL/HTTP lehetõségnél.

 


3. ábra: WSDL kiválasztása URL-rõl

 

http://student.ohecampus.com/projects/group95/stud17/assignment7/validateEmail.asmx?WSDL (2006.12.10)
A kiválasztott példa egy olyan webszolgáltatás, ahol egy tetszõlegesen beírt e-mail címrõl a szolgáltatás visszaküld egy hitelesítést, hogy az létezik-e vagy sem.
Ha itt a program egy HTTP error (return code 400, message "ICM_HTTP_CONNECTION_FAILED") hibaüzenettel tér vissza, akkor azt jelenti, hogy a hálózatban nem sikerült a kapcsolatot megteremteni. Ennek a kezelését a fejezet végén mutatom be.


4. ábra: A package és a prefix meghatározása

A következõ ablak a fejlesztési csomagot kéri tõlünk, melyet akkor kell megadni, hogy ha egy projektben dolgozunk, melynek külön Package van. Mivel most csak a kapcsolatot szeretnénk prezentálni, ezért $TMP–be mentem el, hogy ne kerüljön bele semmilyen transzportba. A prefix-nél, érdemes Z betûvel kezdõdõ kulcsszavat beírni, mert az SAP a Z-vel kezdõdõ névtereket ajánlja a vevõk felé. Az összes többi SAP-pal kezdõdõ prefix a hagyományos fejlesztésekhez tartozik.

 


5. ábra: A generált proxy osztály beállításai

A program létrehozott egy ZWSCO_VALIDATE_EMAIL_SERVICE_S nevû osztályt, mely a CL_PROXY_BASIS –bõl származik.
A Class Builder tranzakcióban láthatjuk az elkészült objektum paramétereit, az elsõ tab-fülön az osztályra vonatkozó általános beállítások láthatóak, mint például az osztály neve, szülõobjektuma, leírása, láthatósága illetve egyéb adatok a készítõjérõl.

 


6. ábra: A generált proxy osztály metódusai

A Methods fülre kattintva láthatjuk az osztályhoz tartozó metódusokat. Jelen esetben a konstruktoron és az email hitelesítõ eljáráson kívül más nem található.


7. ábra: A generált proxy osztály kimenõ paramétereinek beállításai

A program a WSDL információkat felhasználva automatikusan létrehoz egy bemenõ és egy kimenõ adattípust, melyek az import és export paramétereket írják le.
Ha a baloldali menüsorban kiválasszuk a Local Objectet és azon belül a TMP objektumokat, akkor az Enterprise Services között megtalálhatjuk a ZWSVALIDATE_EMAIL_SOAP_IN és ZWSVALIDATE_EMAIL_SOAP_OUT típusokat. A tab-fülek között böngészve megtekinthetjük az összes generált Proxy osztályt, illetve a hozzájuk tartozó ki- és bemenõ paraméterek struktúráját.


8. ábra: A generált proxy bejövõ paraméterének a struktúrája

2. Logikai port létrehozása

A létrehozott proxy osztályt sok esetben több rendszer (teszt rendszer, fejlesztõi rendszer stb.. ) kapcsolódik. A fölösleges példányosítások elkerülése végett az SAP egy bizonyos logikai portot készített, mely konfigurálása esetén az azonos osztályt, más-más porton tudjuk elérni, így multifelhasználhatóvá tesszük azt.
Így adjunk meg egy nevet a logikai portnak, majd állítsuk be alapértelmezettnek a legalsó checkbox kijelölésével.
A logikai portot a LPCONFIG tranzakcióban lehet szerkeszteni.

 


9. ábra: Logikai port adminisztrációja

Ezzel elkészítettük a Poxy osztályt, melyet tesztelhetünk akár az F8 billentyû lenyomása után. A program kéri a bemenõ paramétereket, majd a futtatás gomb után elküldi az adatokat, a kiválasztott webszolgáltatásnak, és a mûvelet végén visszatér az eredménnyel.

A következõ cél, hogy a webrõl nyert adatokat, egy ABAP belsõ táblába, vagy változóba tudjuk elhelyezni, hogy a késõbbiekben tudjunk vele dolgozni. Ezért a programunkban a következõ 3 legfontosabb lépést kell implementálni:
1. referenciaváltozók beállítása az elkészült Proxy osztályra.
2. az osztály példányosítása
3. a szükséges metódusok meghívása

3. Proxy beállítása

A (return code 400, message "ICM_HTTP_CONNECTION_FAILED") hibakód akkor lép fel, ha a hálózat tûzfal mögött van, és a programnak nem sikerül kapcsolódni a megadott WSDL file-hoz. Ebben az esetben az SICF tranzakciót kell segítségül hívni, melyben a következõ képernyõ lefuttatása után a rendszerben éppen futó szolgáltatások listáját kaphatjuk meg.

 


10. ábra: SIFC tranzakció

 


11. ábra: A proxy beállítása 1

A Client->Proxy Setting menüpont alatt találhatóak az éppen aktuális Proxy beállítások.

 


12. ábra: A proxy beállítása 2

A következõ globális beállításokra van szükség: A képen látható elsõ két checkbox-ot aktiválni kell. Illetve a középsõ részben megadhatjuk azokat a webcímeket, amelyekre szeretnénk hogy a proxy beállítások meg legyenek szûrve.

 


13. ábra: A proxy beállítása 3

A következõ tab-fülön a proxy-nak a host-nevét és portját kell megadni, alapesetben ez megegyezik a böngészõnkben beállított értékekkel, de a leggyakrabban használt port az a 80-as, így én a 8080-as portot adtam meg. Ha a proxy-hogy csak bejelentkezéssel lehet hozzáférni, akkor a középsõ szekcióban megadhatjuk a felhasználónevet és a jelszót is.

Ha bármilyen más hibát tapasztalunk, vagy még mindig fennáll az elõzõ jelenség, akkor az SMICM tranzakció segítségével megtekinthetjük az ICM monitorban a keletkezett hiba log-jait. A kezdõképernyõn a 4. ikonra kattintva kilistázhatjuk az összes log-ot, mely lista legvégén található az utoljára történt kivétel.

Remélem, hogy az itt leírt információk, hasznos segítséget nyújtanak a webszolgáltatások felhasználásához.

Bartha Levente - A szerző az SAP Hungary Kft.-nél mint CRM tanácsadó több éve foglalkozik SAP-val, főbb szakterületei Enterprise Portal, CRM Sales, E-selling, PCUI, CRM2007 UI.
Manapság többnyire külföldi projekteken dolgozik, illetve itthon SAP közösséget szervez.

További cikkek a szerzőtől


Nincs hozzászólása.
A téma megvitatása a fórumon. (0 hozzászólás)