Konverzní rutiny v SAPu

SAP logo

Určitě se vám již přihodilo, že jste při prohlížení databázové tabulky pomocí Data browseru (SE16) viděli v poli hodnotu, která tam ale ve skutečnosti vůbec nebyla (tedy byla tam hodnota jiná). Což se vám následně vymstilo při přímém zápisu dané hodnoty do podmínky v selectu, který vám pak zatvrzele odmítal cokoliv vrátit.

Tento rozdvojený pohled na data mají na svědomí tzv. konverzní rutiny (conversion routines/exits). Jedním z nejčastějších případů aplikace konverzních rutin jsou tzv. leading zeros, neboli úvodní nuly doplňované na začátek textových řetězců obsahujících výhradně číselné znaky tak, aby hodnota v poli byla zarovnána zprava. Kupříkladu pole materiál (MATNR), dodavatel (LIFNR), výrobní zakázka (AUFNR) atd. Obsahuje-li však pole i jiné než číselné znaky (např. materiál MAT123), pak k žádné konverzi nedochází.

Z technického hlediska jsou konverzní rutiny reprezentovány dvěma funkčními moduly (jedním vstupním a druhým výstupním), které jsou přiřazeny k doméně datového typu v ABAP Dictionary (SE11). Vstupní funkční modul se volá pokaždé, když uživatel zadá hodnotu do vstupního pole, např. vyplní číslo dodavatele 32654. O doplnění úvodní nul se pak postará funkční modul CONVERSION_EXIT_ALPHA_INPUT, který zkonvertuje zadanou hodnotu na interní formát 0000032654. Opačnou funkcionalitu zajišťuje výstupní funkční modul CONVERSION_EXIT_ALPHA_OUTPUT, který před zobrazením hodnoty na výstupu nadbytečné nuly zase odebere .

Další příkladem užití konverzních rutin je pole/proměnná typu datum. Datum je numerický řetězec s délkou osmi znaků ve tvaru YYYYYMMDD (takto je také uložen v databázi). Navenek se však nejčastěji tváří jako DD.MM.YYYYY nebo MM/DD/YYYYY, a to v závislosti na uživatelském nastavení (viz tab. USR01, pole DATFM). Pokud jej uživatel v tomto tvaru zadá do vstupního pole, SAP si jej automaticky zkonvertuje na interní formát YYYYYMMDD. A naopak pole s datovým typem datum zobrazí na výstupu v odpovídajícím uživatelském formátu.

Nedávno jsem potřeboval napsat jednoduchý select, který by četl měnové kurzy z tabulky TCURR dle zadaného data. Prkotina, řeklo by se. Ne tak docela. Ukázalo se totiž že datum je v tabulce uloženo v jakémsi obskurním formátu, ačkoliv Data browser zarputile tvrdil něco jiného. Naštěstí jsem si brzy vzpomněl na konverzní rutiny a záhada byla vyřešena.

Inu i takovéto legrácky patří k životu ABAP programátora. Může se vám to nelíbit, můžete s tím nesouhlasit… ale to je tak asi všechno, co s tím můžete dělat.


Podělte se o tento článek s ostatními… Sdílet

Komentáře

avatar

[1] zoloft

clock  02. 03. 2008, 20:17

Ahoj,díky za dobrý článek. Čeká mě úvod do ABAP a programování SAP,tak od tebe zídkávám předstvu o co jde.


Pavel

[2] Pavel

clock  03. 03. 2008, 09:36

Reakce na [1] > Doporučuji začít od začátku › http://tinyur­l.com/2ko888


avatar

[3] zoloft

clock  04. 03. 2008, 18:19

Reakce na [2] > Nazdar Pavle,
moc dík. Se Sapem dělám už 10 let na slušný key-userovský bázi ,takže procesy jsou mi vesměs známý, ale nevim čoveče,jestli se mam do toho programování pustit – připadá mi to moc složitý a radši definuju požadavky než o nich přemejšlim z programátorský stránky.Doposud jsem dělal hlavně Logistiku,MM,PP,Od­byt,Controlling a jejich rozhraní na FIBU v nadnárodnim koncernu,ale teď mě chtěji uvrtat do HR,Báze,Adminis­trace atd. a ten rozsah nejsem schopnej posoudit – mohl bys prosím vyjádřit svůj názor na věc? Předem dík. Zol.


Pavel

[4] Pavel

clock  05. 03. 2008, 08:24

Reakce na [3] > Při definici požadavků je alespoň základní znalost programování více než přínosná. Je dobré vědět, co je realizovatelné a co ne a alespoň v hrubých obrysech chápat princip řešení z technického hlediska. Proto říkám jednoznačně: běž do toho! Myslím, že i po deseti letech práce se SAPem máš možnost posunout se na zcela jinou odbornou úroveň.
S HR příliš zkušeností nemám, ale podle toho co vím, patří tento modul co do rozsahu a složitosti spíše k těm jednodušším.


avatar

[5] zoloft

clock  06. 03. 2008, 22:25

Reakce na [4] > tak je to hotovka,jdu do toho

moc dík za názor.



Přidat komentář

Upozornění: Komentář musí být před publikováním schválen!
: *
: *

: *

:



  • Pole označená hvězdičkou jsou povinná.
  • Můžete použít Texy! syntaxi. HTML tagy nejsou povolené!
    Příklad syntaxe: **tučně**, *kurzíva*.
  • Odkazy začínající http(s)://, ftp:// a mailto: se zformátují automaticky.
  • Na jiné komentáře se můžete odkazovat např. zápisem [1].
  • Gravatar připojený k Vaší e-mailové bude zobrazen u komentáře.
  • Upozorňuji, že komentáře, které se netýkají tématu článku, jsou vulgární nebo urážlivé, mohou být smazány.

Začátek článku Nahoru | Začátek komentářů Nahoru

© Pavel Jaroš [Sektor PJ] · Nahoru Nahoru