Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

6. diel - Transformácie medzi InfoObjekty v SAP

V minulej lekcii, Dáta Store Object (DSO) v SAP , sme sa venovali Data Store objektom (DSO). Dnes sa pozrieme na transformácie a na čo v systéme SAP vlastne sú? Až doteraz sme si vysvetľovali InfoObjekty, PSA, DSO, čiže jednotlivé vrstvy dátového skladu. Ďalej sme si v kapitole o nahrávaní dát do PSA vysvetlili, že PSA je KAM dáta nahrávame a InfoPacket potom AKO to robíme. Dnes si vysvetlíme pojem transformácie, ktorý udáva CEZ čo dáta nahrávame, pozri obrázok ďalej v lekcii. Pomocou transformácií môžeme dáta pri nahrávaní rovno filtrovať, pozmeňovať, aktualizovať, dopĺňať.

Príklad

Dáta sú z jednej vrstvy prenesená do ďalšej dátovej vrstvy, tzn., Vieme KAM, vieme AKO (pomocou DTP, bude bližšie vysvetlené v nasledujúcej kapitole, ale prakticky účel je totožný s InfoPackage ako je u PSA), a posledná neznámou je CEZ CO? Áno, to je práve transformácia. Transformácia teda umožňuje prenášať dáta z jednej vrstvy do druhej.

Transformácia v SAP - Sap

Možnosti sú najčastejšie:

  • Z PSA do DSO
  • Z DSO do InfoCube
  • Z InfoCube do InfoCube
  • Z PSA do DSO a potom do InfoCube (ale tu už budú transformácia dve!)

Ako už vieme z minula, tak PSA či DSO sa skladá z elementárnych InfoObjektů, ktoré jasne definujú jeho typ. Pri vytváraní transformácie je možné každý tento jeden InfoObjekt v jednej dátovej sade pozmeniť, doplniť, upraviť pod.

Založenia transformácie 1: 1 (PSA - DSO)

Táto transformácia je najzákladnejšie typ, všetky dáta zo zdroja sa 1: 1 prenesú do cieľa, bez zmeny. Vyberieme cieľový objekt a cez pravé tlačidlo Create Transformation… založíme novú transformáciu:

Transformácia v SAP - Sap

Keďže sme vybrali vlastne cieľ, tak teraz je čas vybrať zdroj, tzn. odkiaľ sa dáta cez transformáciu do cieľa budú prenášať. Najbežnejšími zdrojmi sú:

  • DataSource (PSA)
  • InfoCube (iná dátová kocka)
  • Multiprovider (UNION Infocube, bude vysvetlené neskôr v kurze)
  • DSO (už poznáme z minulej lekcie)
  • Ostatné objekty (pozri obrázok)
Transformácia v SAP - Sap

Po vybraní zdroje a potvrdení sa modelovanie prepne do nasledujúcej obrazovky. Ak sú objekty v cieli a zdrojmi zhodné, dôjde k automatickému priradenie. 1: 1 priradenie (na obrázku =) znamená, že medzi jednotlivými dátovými objektmi nedôjde k žiadnej zmene.

Transformácia 1: 1 v SAP - Sap

Ak sme s modelovaním hotoví, tak objekt musí byť ešte aktivovaný.

Založenie pokročilejšie transformácie (PSA - DSO)

Transformácia je od slova transformovať (meniť). Priradenie dát 1: 1 je síce pekné, ale ak je potreba niečo doplniť, zmeniť, zameniť, priradiť konštantu, tak toto BW systém pomocou transformáciou tiež umožňuje. Po rozkliknutí (2x) sa zobrazí nové okno, kde možno upraviť jeden element (jedno pole) z dátovej sady. Takto možno nastaviť / meniť / vytvárať každé pole a to dokonca ani v zdroji nemusí existovať. V cieli však takto počas transformácie vznikne (~ ABAP rutina).

Okrem Direct Assignment, ktorý označuje transformáciu 1: 1:

Transformácia 1: 1 v SAP - Sap

Máme na výber máme niekoľko možností, ktoré si tu postupne popíšeme.

No Transformation (bez transformácie)

Dáta zo zdroja nebudú prenesená do cieľa vôbec

Constant (konštanta)

Zapíše sa vždy rovnaká konštanta, napr. 5, či "KA":

Transformácia – Konštanta v SAP - Sap

Formula (vzorček)

Vykoná transformáciu pomocou nejakého vzorca. Ak je napr. Vstupné pole BARVA číslo, vracia vzorec "OK". Ak nie je, tak "NOK". Alebo je napr. Možné z dátumu transformovať kal. týždeň pod.

Transformácia – Vzorec v SAP - Sap
Transformácia – Vzorec - Sap

Vzorec je možné rovno aj otestovať, či robí to, čo očakávame. Pomocou francúzskeho kľúča zavoláme checker a otestujeme, či podľa vstupu dostaneme správny výstup. Otestujeme teda, či pri čísle bude výsledok "OK". Do vstupného poľa zadáme 500 a pomocou ikony hodín s fajkou otestujeme vzorec. V Result: vidíme, že vzorec funguje správne, pretože výstup je "OK".

Transformácia – Vzorec v SAP - Sap

Read Master Data

Informácia je možné vyčítať z kmeňových dát, napr. Nejaký atribút (príkladom máme infoobjekt auto a jeho atribúty / vlastnosti, čo sú farba, výbava, motorizácia a pod.)

Routine (programovanie)

Ak žiadna z možností vyššie nepomohla vyriešiť transformačný požiadavka, je možné pomocou ABAP rutiny (to je programovanie v SAP :) ) Napísať úplne vlastné logiku.

Transformácia – Rutina v SAP - Sap

V novom okne vyberieme ABAP routine a už proskočíme do definície vlastnej logiky v ABAP editore:

Transformácia – Rutina v SAP - Sap

Editor nás rovno nasmeroval do transformačnej metódy pre danú charakteristiku, v našom prípade ZMP_PRIS.

Čo vidíme

Prejdeme si teda, čo vidíme:

  • METHOD compute_ZMP_PRIS - toto je automaticky založená metóda. Tu naprogramujeme vlastné transformačný logiku. Metódy mávajú importné a exportné parametre. Ku vstupným dátam sa dostaneme pomocou SOURCE_FIELDS-ID_PRI, kde ID-PRI je pole z predchádzajúcej vrstvy. Ako vidíme, systém prevzal i dátový typ z minulej dátovej vrstvy TYPE C LENGTH 000006. Ide o dátový typ CHAR s dĺžkou 6 znakov.
Transformácia – Rutina v SAP - Sap

Ďalej od riadku 108 (pozn .: u iných hash výpočtu sa číslo môže líšiť, záleží od počtu premenných, polí v tansformaci pod.) Už môžeme vpísať vlastný kód. Vrátenie transformovanej hodnoty sa vykonáva pomocou pripraveného kľúčového slova RESULT =.

Príklad

Pre pochopenie máme jednoduchý príklad. Máme charakteristiku Z_NR_VER, kde v master dátach máme uloženú konštantu pre výpočet. Chceme každé číslo, ktoré príde ako vstup ID_PRI, vynásobiť touto konštantou a vrátiť prepočítaný výsledok. Pridáme tento kúsok 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:

Transformácia – Rutina v SAP - Sap

Čože sme to vlastne naprogramovali? Poďme si vysvetliť jednotlivé riadky:

DATA lt_rkchvers TYPE /bic/pz_nr_ver.

DATA je definícia novej premennej s názvom lt_rkchvers, ktorá je dátového typu /bic/pz_nr_ver. V SAPu ako takom je všetko na konci uložené v tabuľke a to platí aj u infoobjektů. Do tabuliek kmeňových dát možno pristupovať napriamo cez /BIC/Pxxxxx, kde xxxxx je technický názov infoobjektu. Naša nová premenná bude mať štruktúru ako infoobjekt Z_NR_VER. Viď obrázok nižšie, v Infoobjektu v záložke MasterData si obsah kmeňových dát môžeme pomocou tabuľky zobraziť. Rovnako to platí pomocou ABAP príkazov. Dáta sa dajú z / do tabuľky zapisovať aj čítať. Infoobjekt Z_NR_VER obsahuje iba jeden atribút RKCHVER, ktorý je naša konštanta pre výpočet. V samotných kmeňových dátach je založený iba jeden záznam (510).

Transformácia – Rutina v SAP - Sap

Ďalej tu máme SELECT SINGLE *, ktoré slúžia pre načítanie jedného záznamu z databázovej tabuľky, kde sa vyberú všetky stĺpce pomocou * v príkaze SELECT. Z akej tabuľky sa určí pomocou kľúčového slova FROM. Tabuľka je v tomto prípade /bic/pz_nr_ver. Dáta sa ešte musí niekam uložiť, preto sme si najprv vytvorili novú premennú lt_rkchvers toho istého typu, ako je zdrojová tabuľka, aby to bolo celé typovo konzistentné:

SELECT SINGLE *
        FROM /bic/pz_nr_ver
          INTO lt_rkchvers.

Nakoniec nasleduje vrátenie výsledku:

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

Ku vstupným dátam sa pristupuje pomocou kľúčového slova SOURCE_FIELDS-xxxx, kde xxxx je názov poľa. Tým, že sme v transformácii prepojili obe polia, došlo k automatickému priradenie a vygenerovanie premenné SOURCE_FIELDS-ID_PRI. Z minulého kroku sme do premennej lt_rkchvers načítali onú konštantu. Týmto máme zdrojovú informáciu a konštantu, takže * zaistí vynásobení. Aby sa hodnota potom uložila do dátového cieľa (charakteristiky), je pomocou kľúčového slova result odovzdaná späť.

Toto bol veľmi jednoduchý príklad rutiny pri jednej charakteristiky. Prakticky každá charakteristika môže mať vlastný rutinu a to sú infokocky io 150 charakteristikách a niekoľkých desiatkach ukazovateľov.

Môžeme opäť skontrolovať, či rutina robí čo má, to už poznáme o niekoľko riadkov vyššie. Po zadaní hodnoty 10 systém vypočíta vrátenú hodnotu 5100, všetko funguje ako má.

Check v SAP - Sap

Týmto sme si vysvetlili účel transformácie, aké sú možnosti, a nabudúce sa pozrieme na Transformácie medzi InfoObjekty - Pokračovanie .


 

Predchádzajúci článok
Dáta Store Object (DSO) v SAP
Všetky články v sekcii
Sap
Preskočiť článok
(neodporúčame)
Transformácie medzi InfoObjekty - Pokračovanie
Článok pre vás napísal Migi
Avatar
Užívateľské hodnotenie:
2 hlasov
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 :-)
Aktivity