EI_Script_OD – szczegóły skryptu OData

 

Arkusz EI_Script_OD zawiera szczegóły skryptów wykorzystujących serwisy Open Data Protocol (w sktrócie OData, patrz https://www.odata.org/). Arkusz jest widoczny, tylko jeśli wybrany jest skrypt typu OData (patrz arkusz EI_Script_Name) i nie jest ukryta konfiguracja. Skrypt OData może odczytywać i zapisywać dane w SAP poprzez odwołania do serwisu sieciowego zgodnego z protokołem OData. SAP w wersji S4HANA udostępnia setki użytecznych serwisów OData (dla przykładu transakcje nowego interfejsu SAP Fiori, wykorzystują serwisy OData). Opórcz danych skryptu OData (kolumny F-J) arkusz EI_Script_OD zawiera dodatkowe dane sterujące wykonaniem skryptu.

Przygotowanie skryptu OData

Przygotowanie skryptu OData zaczyna się zazwyczaj od zapoznania się z właściwościami serwisu OData. W celu zebrania informacji o usłudze OData z systemu SAP, warto zapoznać się z jej możliwościami w transakcji testowej serwisów OData /n/IWFND/GW_CLIENT.

Kiedy serwis OData zostanie rozpoznany i parametry jego wywołania zostaną ustalone, można przejść do zdefiniowania skryptu OData w narzędziu EasyInput. Definiowanie skryptu OData można wykonać ręcznie w arkuszu EI_Script_OD, ale dużo łatwiej rozpocząć definicję wykorzystując automat, który uruchamia się przyciskiem menu wstążki „Dodaj serwis OData”.

 

EI_Script_OD – Przycisk wstążki: Znajdź serwis OData

Przycisk „Znajdź serwis ODATA” wywołuje okienko pomocy wskazujące jak można wyszukać i uruchomić usługę OData w systemie SAP.

 

EI_Script_OD – Przycisk wstążki: Dodaj serwis OData

Serwis OData systemu SAP lub dowolny serwis OData można dodać do EasyInput poprzez wybranie przycisku menu wstążki „Dodaj serwis OData”. Na wyskakującym okienku „Wybór serwisu OData” trzeba będzie podać najważniejsze dane usługi OData. Po zaakceptowaniu podanych danych klawiszem OK, EasyInput spróbuje połączyć się z wybraną usługą, wywołać ją testowo i na tej podstawie wygeneruje skrypt EasyInput OData. Wygenerowany skrypt może być dalej ręcznie dostosowywany w narzędziu EasyInput. W szczególności mogą być dodawane paramerty przekazywane do skryptu (WriteData w kolumnie L, dla części URL i części importowej skryptu IDATA, oraz ReadData dla części eksporotowej EDATA). Specjalny znacznik && jest wykorzystywany do przekazywania parametru w odpowiednie miejsce skryptu.

 

Przykład gotowego skryptu OData listującego dane MPK systemu:

Nieaktywne

Użycie parametru

Nazwa parametru

Nazwa pola

Typ danych

Wartość pola

Opis pola

Typ transferu

Kolumna odczytu/ zapisu


OD

CCR








TYPE

OD_SAP_V2








METHOD

GET








URI_PART0

&cprotocol&://&chost&:&cport&/








URI_PART1

sap/opu/odata/








URI_PART2

sap/FCOM_COSTCENTER_SRV/CostCenterSet?





AssignData

AA


URI_PARTX









FORMAT

$format=json







X

EDATA


BUKRS_TEXT

CHAR-25!--


Company Name




EDATA


Kokrs

CHAR-4!--


Controlling Area

ReadData

AB


EDATA


Kostl

CHAR-10!--


Cost Center

ReadData

AC


ERC

error

code







ERM

error

message







ERM

error-message

value







ERT

error

severity






 

Kolumna Użycie parametru (Param use) definiuje co oznacza dany wiersz skryptu OData:

Użycie parametru

Opis znaczenia parametru

OD

Oznacza początek skryptu OData

TYPE

Oznacza typ skryptu (OD_SAP_V2, OD_SAP_V4, OD_NOT_SAP)

METHOD

Metoda wywołania HTTP. GET dla odczytu danych, PUT, POST, PATCH, DELETE dla zmiany danych (możliwość wykorzystania metod zależy od implementacji serwisu OData).

PREGETQUERY

Parametr wykorzystywany tylko dla metod innych niż GET.

X jeśli przed wywołaniem metody innej niż GET, najpierw ma być wykonana metoda GET, by pobrać X-CSRF-Token umożliwiający poprawne wyłołanie metody innej niż GET. Dodatkowo EasyInput może odczytać wartość pola ETAG z wywołania GET i wstawić odpowiednią wartość w nagłówek wywołania If-Match dla metody innej niż GET (patrz dokumentacja SAP)

URI_PART0

Określa URL usługi - protokół, host i port, np.: https://services.odata.org:443

Zazwyczaj dla serwisów SAP dane te nie są podawane bezpośrednio, ale za pomocą znaczników specjalnych (&cprotocol&://&chost&:&cport&/ patrz opis poniżej), co ułatwia użycie tego samego skryptu EasyInput w różnych systemach SAP. Jeśli użyto znaczników specjalnych w URI_PART0, to przed rzeczywistym wywołaniem serwisu, zastąpione one zostaną właściwym protokołem (http(s), nazwą hosta, portem odczytanym z systemu SAP).

URI_PART1

Określa scieżkę do serwisu w ramach url. Np. dla serwisów OData SAP w wersji V2, scieżka domyślna to „sap/opu/odata/”.

URI_PART2

Określa usługę (łącznie z obszarem nazw) i zasób w ramach usługi, np:

sap/FCOM_COSTCENTER_SRV/CostCenterSet?

URI_PARTX

Określa ew. dodatkowe parametry usługi.

Uwaga! Można dodać więcej niż jedną linię z użyciem parametru URI_PARTX !

Uwaga! W momencie przetwarzania skryptu, system dokonuje połączenia ciągów z URI_PART0/PART1/PART2/PARTX, dlatego ciągi zawarte w tych wierszach muszą stanowić po złożeniu poprawny URI wywołania usługi (np. muszą kończyć się znakami  /,? &, etc.).  Możliwe jest użycie znacznika specjalnego && w URI_PART2 lub URI_PARTX, dzieki czemu można uczynić wywołanie bardziej elastycznym (np. przekazać parametry filtra do wywołania).

Uwaga! Dla metody GET, jeśli nie przewidziano przekazywania danych do skryptu (typ transferu WriteData), należy do jednego z wierszy URI przypisać typ transferu AssignData i podać kolumnę odczytu/zapisu. Wynika to z faktu, że skrypt EasyInput musi być inicjowany przez jakąś kolumnę danych na arkuszu danych. Dlatego przypisanie kolumny do skryptu poprzez AssignData i wprowadzenie dowolnej wartości w tę kolumnę (np. START), rozwiązuje ten problem.

FORMAT

Określa format w jakim zostanie wykonany serwis. Zalecanym jest $format=json. Wartością niezalecaną, ale w wyjątkowych przypadkach możliwą do użycia jest $format=xml. Dla otrzymania włąściwych rezultatów z formatem xml należy ustawić w konfiguracji na zakładce EI_Config, EI_C_OD_MATCHING_LEVEL Poziom dopasowania rezultatu na wartość 1.

IHEADER

Parametr wykorzystywany tylko dla metod innych niż GET.

Zazwyczaj ma wartość application/json;charset=utf-8 ale jeśli IDATA podany jest w postaci XML (nie rekomendowane) powinien mieć wartość application/xml;charset=utf-8

IDATA

Parametr wykorzystywany tylko dla metod innych niż GET.

Ciąg znaków w formacie JSON (zalecany) lub XML, który zostanie przekazany do serwisu. Zazwyczaj w skrypcie występuje wiele linii IDATA (zwiększa to czytelnośc skryptu), które przed wywołaniem zostaną połączone w jeden ciąg.

Podobnie jak w URI, w wierszach IDATA można korzystać ze znacznika specjalnego &&. Dodanie takiego znacznika do wiersza, umożliwia przypisanie typu transferu WriteData i kolumny odczytu.

EDATA

Lista parametrów, które może zwrócić serwis OData. Przypisanie do danego wiersza Typu Transferu ReadData pozwala na odczytanie zawartości danego parametru i wprowadzenie go na arkusz danych/ rezultatu do kolumny zdefiniowanej jako kolumna zapisu. Uwaga domyślnie wszystkie parametry EData są nieaktywne. W celu odczytu parametru należy skasować w skrypcie „X” deaktywujący dany wiersz, przypisać rodzaj transferu ReadData i kolumnę zapisu.

W kolumnach nazwa pola/ typ danych umieszcza się ciąg nazw wskazujący właściwą daną w rezultacie query w postaci JSON. Z ciągu tego wycięte są elementy „d” (początkowy) i „results” (oznaczający tabelę danych). Dzięki temu skrypt jest bardziej czytelny.

ERC, ERCD,

ERM, ERMD,

ERT, ERTD,

ERX, ERXD

Wiersze definiujące sposób odczytu danych o błędach ze zwracanego ciągu JSON/ XML lub w SAP także z ciągu umieszczanego w zwracanym nagłówku w sap-message. Wiersze te są wypełniane automatycznie, ale jeśli serwis zwraca informacje o błędzie w jakiś niestandardowy sposób, można poprawić te wpisy ręcznie. Trzecia litera użycia parametru oznacza, w tym przypadku, czy odczytywany jest kod komunikatu (C), tekst komunikatu(M), czy typ komunikatu (T). Specjalny znacznik X jest zarezerwowany dla odczytu parametrów V1, V2,V3,V4 komunikatów SAP z nagłówka z sap-message.

HTTPUSER

Parametr opcjonalny, wykorzystywany czasem dla serwisów ODATA nie SAP. Pozwala przekazać nazwę użytkownika do wywołania http. Parametr ten powinien być wykorzystywany łącznie z parametrem HTTPPASS.

HTTPPASS

Parametr opcjonalny, wykorzystywany czasem dla serwisów ODATA nie SAP. Pozwala przekazać hasło użytkownika do wywołania http. Parametr ten powinien być wykorzystywany łącznie z parametrem HTTPUSER.

 

 

Znaczniki specjalne (zamieniane w momencie wykonania skryptu):

Znacznik

Znaczenie

&&

Pozwala na przekazywanie dynamicznych parametrów do skryptu OData.

Oznacza w które miejsce w skrypcie przetransferowany zostanie element zdefiniowany przez komórkę w kolumnie J (wartość stała lub formuła) lub poprzez komórki z kolumn L(WriteData) i M(odwołanie do kolumny). Przy czym jeśli wprowadzono dane w kolumnach L(typ transferu) i M(kolumna odczytu/zapisu), wartość z komórki w kolumnie J(wartość pola) jest ignorowana!

&cprotocol&

Oznacza protokół http lub https dla połączenia z serwerem SAP Gateway. Protokół można podać na stałe lub za pomocą tego znacznika. Jeśli podany znacznik, wtedy system sprawdza dostępność połączenia szyfrowanego (https). Jeśli jest dostępne wybiera https, jeśli nie http.

&cserver&

Oznacza serwer Gateway SAP. Serwer można podać na stałe, lub może być podany za pomocą znacznika. W przypadku gdy jest podany za pomocą znacznika, serwer jest ustalany na podstawie informacji z systemu SAP podanych na zakładce EI_Logon (rekomendowana opcja).

&cport&

Oznacza port Gateway SAP. Port usługi można podobnie jak serwer usługi podać na stałe, lub może być podany za pomocą znacznika.

 

Uwaga! Jeśli chcemy, by dana część skryptu mogła być wykonywana wielokrotnie, zależnie od ilości wierszy danych (np. pozycje dokumentu), wtedy dla tych wierszy skryptu, w kolumnie poziom, wprowadzamy wartość 1 (patrz informacje o arkuszu skryptu). Jeśli na końcu bloku JSON, w części powtarzalnej, powinien być wstawiony przecinek, to należy go umieścić w skrypcie. EasyInput automatycznie usunie go z ostatniego powtórzenia części powtarzanej wielokrotnie, by zachować poprawność wyrażenia JSON.

 

EI_Script_OD – Przycisk wstążki: Uzupełnij kolumny odczytu/zapisu

Aby ułatwić przypisywanie wierszy skryptu do kolumn arkusza danych, możliwe jest wprowadzanie ręcznie w skrypcie tylko powiązania z arkuszem danych w kolumnie L (np. WriteData/ ReadData) i automatyczne uzupełnienie identyfikatorów kolumn w kolumnie M skryptu. Uruchomienie automatycznego przypisywania identyfikatorów kolumn danych („np. AA, AB, AC, …) uruchamia się przyciskiem „Uzupełnij kolumny odczytu/zapisu”. Później ręcznie można skorygować takie automatyczne przypisania.

 

EI_Script_OD – Przycisk wstążki: Utworzenie referencji kolumny danych ze skryptu w arkuszu danych

Po zdefiniowaniu skryptu i jego wstępnym sprawdzeniu za pomocą menu wstążki „Sprawdź skrypt”, należy utworzyć referencje kolumn odczytu/zapisu (L) z arkusza skryptu w arkuszu danych. Jest to czynność uruchamiana przyciskiem „Utwórz referencje w kolumnach arkusza danych” na wstążce EasyInput.