Body zdarma Java týden
Využij podzimních slev a získej od nás až 40 % bodů zdarma! Více zde
Pouze tento týden sleva až 80 % na Java e-learning!

Lekce 6 - Transformace mezi InfoObjekty v SAP

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

V minulé lekci, Data Store Object (DSO) v SAP, jsme se věnovali Data Store Objektům (DSO). Dnes se podíváme na transformace a k čemu v systému SAP vlastně jsou? Až doposud jsme si vysvětlovali InfoObjekty, PSA, DSO, čili jednotlivé vrstvy datového skladu. Dále jsme si v kapitole o nahrávání dat do PSA vysvětlili, že PSA je KAM data nahráváme a InfoPacket potom JAK to děláme. Dnes si vysvětlíme pojem transformace, který udává PŘES co data nahráváme, viz obrázek dále v lekci. Pomocí transformací můžeme data při nahrávání rovnou filtrovat, pozměňovat, aktualizovat, doplňovat.

Příklad

Data jsou z jedné vrstvy přenesena do další datové vrstvy, tzn., víme KAM, víme JAK (pomocí DTP, bude blíže vysvětleno v následující kapitole, ale prakticky účel je totožný s InfoPackage jako je u PSA), a poslední neznámou je PŘES CO? Ano, to je právě transformace. Transformace tedy umožňuje přenášet data z jedné vrstvy do druhé.

Transformace v SAP

Možnosti jsou nejčastěji:

  • Z PSA do DSO
  • Z DSO do InfoCube
  • Z InfoCube do InfoCube
  • Z PSA do DSO a pak do InfoCube (ale zde již budou transformace dvě!)

Jak již víme z minula, tak PSA či DSO se skládá z elementárních InfoObjektů, které jasně definují jeho typ. Při vytváření transformace je možné každý tento jeden InfoObjekt v jedné datové sadě pozměnit, doplnit, upravit apod.

Založení transformace 1:1 (PSA - DSO)

Tato transformace je nejzákladnější typ, všechna data ze zdroje se 1:1 přenesou do cíle, beze změny. Vybereme cílový objekt a přes pravé tlačítko Create Transformation… založíme novou transformaci:

Transformace v SAP

Jelikož jsme vybrali vlastně cíl, tak teď je čas vybrat zdroj, tzn. odkud se data přes transformaci do cíle budou přenášet. Nejběžnějšími zdroji jsou:

  • DataSource (PSA)
  • InfoCube (jiná datová kostka)
  • Multiprovider (UNION Infocube, bude vysvětleno později v kurzu)
  • DSO (již známe z minulé lekce)
  • Ostatní objekty (viz obrázek)
Transformace v SAP

Po vybrání zdroje a potvrzení se modelování přepne do následující obrazovky. Pokud jsou objekty v cíli a zdroji shodné, dojde k automatickému přiřazení. 1:1 přiřazení (na obrázku =) znamená, že mezi jednotlivými datovými objekty nedojde k žádné změně.

Transformace 1:1 v SAP

Pokud jsme s modelováním hotoví, tak objekt musí být ještě aktivován.

Založení pokročilejší transformace (PSA - DSO)

Transformace je od slova transformovat (měnit). Přiřazení dat 1:1 je sice hezké, ale pokud je potřeba něco doplnit, změnit, zaměnit, přiřadit konstantu, tak toto BW systém pomocí transformací také umožňuje. Po rozkliknutí (2x) se zobrazí nové okno, kde lze upravit jeden element (jedno pole) z datové sady. Takto lze nastavit / měnit / vytvářet každé pole a to dokonce ani ve zdroji nemusí existovat. V cíli ovšem takto během transformace vznikne (~ABAP rutina).

Kromě Direct Assignment, který označuje transformaci 1:1:

Transformace 1:1 v SAP
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Máme k výběru máme několik možností, které si zde postupně popíšeme.

No Transformation (bez transformace)

Data ze zdroje nebudou přenesena do cíle vůbec

Constant (konstanta)

Zapíše se vždy stejná konstanta, např. 5, či "KA":

Transformace – Konstanta v SAP

Formula (vzoreček)

Provede transformaci pomocí nějakého vzorečku. Pokud je např. vstupní pole BARVA číslo, vrací vzorec "OK". Pokud není, tak "NOK". Nebo je např. možné z data transformovat kal. týden apod.

Transformace – Vzorec v SAP
Transformace – Vzorec

Vzorec je možné rovnou i otestovat, zda dělá to, co očekáváme. Pomocí francouzského klíče zavoláme checker a otestujeme, zda dle vstupu dostaneme správný výstup. Otestujeme tedy, jestli při čísle bude výsledek "OK". Do vstupního pole zadáme 500 a pomocí ikony hodin s fajfkou otestujeme vzorec. V Result: vidíme, že vzorec funguje správně, protože výstup je "OK".

Transformace – Vzorec v SAP

Read Master Data

Informace je možné vyčíst z kmenových dat, např. nějaký atribut (příkladem máme infoobjekt auto a jeho atributy / vlastnosti, což jsou barva, výbava, motorizace apod.)

Routine (programování)

Pokud žádná z možností výše nepomohla vyřešit transformační požadavek, je možné pomocí ABAP rutiny (to je programování v SAP :) ) napsat zcela vlastní logiku.

Transformace – Rutina v SAP

V novém okně vybereme ABAP routine a již proskočíme do definice vlastní logiky v ABAP editoru:

Transformace – Rutina v SAP

Editor nás rovnou nasměroval do transformační metody pro danou charakteristiku, v našem případě ZMP_PRIS.

Co vidíme

Projdeme si tedy, co vidíme:

  • METHOD compute_ZMP_PRIS – toto je automaticky založená metoda. Zde naprogramujeme vlastní transformační logiku. Metody mívají importní a exportní parametry. Ke vstupním datům se dostaneme pomocí SOURCE_FIELDS-ID_PRI, kde ID-PRI je pole z předchozí vrstvy. Jak vidíme, systém převzal i datový typ z minulé datové vrstvy TYPE C LENGTH 000006. Jedná se o datový typ CHAR o délce 6 znaků.
Transformace – Rutina v SAP

Dále od řádku 108 (pozn.: u jiných tranformací se číslo může lišit, záleží na počtu proměných, polí v tansformaci apod.) již můžeme vepsat vlastní kód. Vrácení transformované hodnoty se provádí pomocí připraveného klíčového slova RESULT =.

Příklad

Pro pochopení máme jednoduchý příklad. Máme charakteristiku Z_NR_VER, kde v master datech máme uloženou konstantu pro výpočet. Chceme každé číslo, které přijde jako vstup ID_PRI, vynásobit touto konstantou a vrátit přepočítaný výsledek. Přidáme tento kousek kódu:

DATA lt_rkchvers TYPE /bic/pz_nr_ver.

  SELECT SINGLE *
      FROM /bic/pz_nr_ver
        INTO lt_rkchvers.

  result = SOURCE_FIELDS-ID_PRI * lt_rkchvers-/bic/rkchvers.

Rutina po vložení kódu:

Transformace – Rutina v SAP

Cože jsme to vlastně naprogramovali? Pojďme si vysvětlit jednotlivé řádky:

DATA lt_rkchvers TYPE /bic/pz_nr_ver.

DATA je definice nové proměnné s názvem lt_rkchvers, která je datového typu /bic/pz_nr_ver. V SAPu jako takovém je všechno na konci uložené v tabulce a to platí i u infoobjektů. Do tabulek kmenových dat lze přistupovat napřímo přes /BIC/Pxxxxx, kde xxxxx je technický název infoobjektu. Naše nová proměnná bude mít strukturu jako infoobjekt Z_NR_VER. Viz obrázek níže, v Infoobjektu v záložce MasterData si obsah kmenových dat můžeme pomocí tabulky zobrazit. Stejně to platí pomocí ABAP příkazů. Data se dají z/ do tabulky zapisovat i číst. Infoobjekt Z_NR_VER obsahuje pouze jeden atribut RKCHVER, jenž je naše konstanta pro výpočet. V samotných kmenových datech je založený pouze jeden záznam (510).

Transformace – Rutina v SAP

Dále tu máme SELECT SINGLE *, které slouží pro načtení jednoho záznamu z databázové tabulky, kde se vyberou všechny sloupce pomocí * v příkazu SELECT. Z jaké tabulky se určí pomocí klíčového slova FROM. Tabulka je v tomto případě /bic/pz_nr_ver. Data se ještě musí někam uložit, proto jsme si nejprve vytvořili novou proměnnou lt_rkchvers toho samého typu, jako je zdrojová tabulka, aby to bylo celé typově konzistentní:

SELECT SINGLE *
        FROM /bic/pz_nr_ver
          INTO lt_rkchvers.

Nakonec následuje vrácení výsledku:

result = SOURCE_FIELDS-ID_PRI * lt_rkchvers-/bic/rkchvers.

Ke vstupním datům se přistupuje pomocí klíčového slova SOURCE_FIELDS-xxxx, kde xxxx je název pole. Tím, že jsme v transformaci propojili obě pole, došlo k automatickému přiřazení a vygenerování proměnné SOURCE_FIELDS-ID_PRI. Z minulého kroku jsme do proměnné lt_rkchvers načetli onu konstantu. Tímto máme zdrojovou informaci a konstantu, takže * zajistí vynásobení. Aby se hodnota poté uložila do datového cíle (charakteristiky), je pomocí klíčového slova result předána zpět.

Toto byl velice jednoduchý příklad rutiny u jedné charakteristiky. Prakticky každá charakteristika může mít vlastní rutinu a to jsou Infokostky i o 150 charakteristikách a několika desítkách ukazatelů.

Můžeme opět zkontrolovat, zda rutina dělá co má, to již známe o několik řádek výše. Po zadání hodnoty 10 systém vypočte vrácenou hodnotu 5100, vše funguje jak má.

Check v SAP

Tímto jsme si vysvětlili účel transformace, jaké jsou možnosti, a příště se podíváme na Transformace mezi InfoObjekty - Pokračování.


 

 

Článek pro vás napsal Migi
Avatar
Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!
Autor se věnuje SAPu (BW), IT má jako koníček od malička a od nedávna ho IT začalo živit a bavit ještě víc :-)
Předchozí článek
Data Store Object (DSO) v SAP
Všechny články v sekci
SAP
Miniatura
Následující článek
Transformace mezi InfoObjekty - Pokračování
Aktivity (5)

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!