Export to database

Pokud vytváříte program, který má značné požadavky na čas pro zpracování výsledků, narazíte brzy na problém, jak data zobrazit uživateli. Program většinou skončí na “Time Out” . Jedno z řešení je spustit program na pozadí a výsledky si přečíst ze spoolu. Tam ale narazíte na další omezení, kterým je možný počet sloupců reportu. Řešením je data uložit do dočasného souboru v tabulce a následně je načíst. Načítáme pak již jen výsledek a čas na zpracování je počítán na několik málo vteřin, případně minut. Jak se to provede?

Nejprve naplníme tabulku daty standardní cestou. Jakmile je tabulka naplněna daty, použijeme příkaz:

Export itab to datbase indx(xx) id sdata

kde itab, je tabulka s daty, kterou ukládáme

indx je tabulka kam data ukládáme (lze prohlížet v se16)

(xx) je oddělovač, kterým si můžeme rozlišit jednotlivé uložené sety.
Doporučuje se využít zkratek modulu, pro který je set dat uložen. (MM, PP, CO….)

sdata je proměnná, typ řetězec s max délkou 22 znaků. Můžeme jej vytvářet dynamicky…
například spojit název reportu se jménem uživatele
Concatenate sy-repid(10) sy-uname into sdata
pozor jen na délku řetězce data. Proto bereme jen deset znaků názvu programu, uživatel má délku 12.

načtení souboru je pak velmi jednoduché příkazem

Import itab from database indx(mm) id sdata.

Takto lze nejen data ukládat, ale i předávat mezi programy. Je potřeba dodržet jen strukturu tabulek v obou programech (předávacím a přijímacím) .

Doporučení: při ukládání udejte ještě parametry souboru, které zajistí, že budete vědět,
jakým programem byl set vytvořen, kdy , jak dlouho jej chcete ponechat atd.
Vhodné je pak záznamy kontrolovat a ty staré a nepotřebné smáznout,
aby data zbytečně nezabírala prostor v databázi.

syntaxe příkazu je pak:


indx-aedat = sy-datum. "datum vzniku záznamu
indx-usera = sy-uname. "uživatel
indx-pgmid = sy-repid. "název programu
indx-begdt = sy-datum. "datum platnosti od
indx-enddt = sy-datum + 30. "datum platnosti do
idnx-sperr = 'X' " dataset, který nemá být nikdy vymazán
EXPORT itab TO DATABASE indx(xx) ID sdata.

pro načtení souboru rozšířené parametry nejsou potřeba.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

*