Cílem komponenty je zajistit napojení na SAPGUI (klientské rozhraní) a umožnit z IS Golem doplnit položky do určitého formuláře, resp. provést uživatelsky definované akce.
Basic idea
Golem -> Tahiti -> SAPGUI
Golem will send data to the Tahiti together with information about form for data filling.
Tahiti have to:
- establish link to the SAPGUI (run it if neccessery)
- find free and usable connection or create one
- fill in data
Napojeni Tahiti<->SAP
Přímé ovládání SAP klienta je netriviální (způsobů organizace formulářů, resp. požadovaných akcí je mnoho druhů). Jako řešení se jeví možnost použití speciálního makra pro každé jednotlivé propojení (datový přenos). SAP klient přímo obsahuje podporu pro záznam činností uživatele - ty jsou uloženy jako makro. Při využití tohoto mechanismu napojení znamená:
- nahrání ukázkového makra
- zobecnění nahraného makra a jeho úprava do propojovacího
- definice hodnot, které se mají do vybraných položek vložit
Datový formát propojení (Golem<->Tahiti)
Data do Tahiti jsou přenášena formou ActionObject, tento mechanizmus je již dnes využíván pro přenos dat pro zobrazování URL, Damis.
ActionObject Tahiti.SAPLink.Transaction
type |
Tahiti.SAPLink.Transaction |
význam |
Objekt umožňuje přenesení dat do SAP klienta |
Attributy:
Id |
Identifikátor objektu (nepovinný atribut) |
Data |
XML soubor s daty a požadavky na přenos |
Script |
skript popisující přenos |
ActionObject Tahiti.SAPLink.Error
type |
Tahiti.SAPLink.Error |
význam |
Objekt umožňuje přenesení informace o chybě SAP klienta |
Attributy:
Id |
Identifikátor objektu (nepovinný atribut) |
Description |
Popis chyby |
ActionObject Tahiti.SAPLink.Cancel
type |
Tahiti.SAPLink.Cancel |
význam |
Objekt umožňuje přenesení informace o storno - uživatelem |
Attributy:
Id |
Identifikátor objektu (nepovinný atribut) |
ActionObject Tahiti.SAPLink.Success
type |
Tahiti.SAPLink.Success |
význam |
Objekt umožňuje přenesení informace o úspěšném zpracování objektu |
Attributy:
Id |
Identifikátor objektu (nepovinný atribut) |
Další atributy jsou závislé na definici pole Results.
Formát dat (atribut Data)
Položka |
Povinnost |
Vysvětlení |
Requirements |
A |
Požadavky na klienta pro připojení |
ConnectionString |
N |
Řetězec popisující připojení k serveru, může být použit pro aktivaci klienta pokud neběží |
System |
A |
Identifikace systému ke kterému je požadováno připojení |
N |
Číslo systému |
|
Client |
N |
Identifikace přihlášeného klienta |
UI |
N |
Způsob připojení k UI, obsahuje 0..n UseTransaction |
UseTransaction |
N |
Transakce jez je mozno znovu pouzit, * - libovolná transakce |
Transaction |
A |
Jméno transakce, kam mají být data doplněna |
OnError |
N |
Definuje, zda při chybě má být odeslána notifikace na server - 0|1 |
OnCancel |
N |
Definuje, zda při stornování uživatelem má být odeslána notifikace na server - 0|1 |
OnSuccess |
N |
Definuje, zda při úspěšném zpracování bude odeslána notifikace na server - 0|1 |
Variables |
N |
Hodnoty, které mají být přeneseny do SAP |
Variable |
N |
Kombinace proměnná, hodnota |
Results |
N |
Výsledky, které mají být přeneseny zpět na server |
Result |
N |
Id položky ve formuláři a název pod kterým má být hodnota přenesena |
<?xml version="1.0"?> <TahitiSapLink> <Requirements> <ConnectionString>CONNECTION_STRING</ConnectionString> <System>ID3</System> <Client>210</Client> <UI> <UseTransaction name="TRANSACTION_NAME/*"/> </UI> <OnSuccess>0</OnSuccess> <OnCancel>0</OnCancel> <OnError>0</OnError> </Requirements> <Transaction name="TRANSACTION_NAME"> <Variables> <Variable name="" value=""/> </Variables> </Transaction> </TahitiSapLink>
Ukázka (data pro napojení BP)
<?xml version="1.0"?> <TahitiSapLink> <Requirements> <ConnectionString>/H/sms-ph.ph.koop.cz/H/192.168.101.148/H/sap-iaq.corpnet.at/S/3284</ConnectionString> <System>IAQ</System> <UI> <UseTransaction name="SESSION_MANAGER"/> </UI> <OnSuccess>1</OnSuccess> <OnCancel>1</OnCancel> <OnError>1</OnError> </Requirements> <Transaction name="BP"> <Variables> <Variable name="id" value="89473"/> </Variables> <Results> <Result id="wnd[0]/usr/txt/WSV/BP_GOLE_DIALOG-BPEXT" name="sap-id"/> </Results> </Transaction> </TahitiSapLink>
Příklady
První příklad: sap1.taobj
- zahájí pouze novou transakci BP
Druhý příklad: sap2.taobj
- navíc oproti sap1 vyhledá v rámci transakce BP určitého partnera
- obsahuje skript, který vyhledá konkrétního BP
- identifikátor požadovaného BP je uložen jako proměnná id
proměnné definované v .xml je možno do skriptu vložit pomocí objektu variables: variables.GetVariable("id"), vrátí hodnotu proměnné id
Vytvoření organizace: create_organization.taobj
- vytvoří organizaci
- vyplní ICO
Vytvoření osoby: create_person.taobj
- vytvoří novou osobu
- vyplní RČ
Nalezení partnera: find_partner.taobj
- nalezení partnera podle id
Nalezení osoby: find_person.taobj
- nalezení osoby podle id