Export velkých tabulek ze SAPu

Tímto příspěvkem bych chtěl volně navázat na předchozí článek o exportu zdrojových kódu ze SAPu. Při exportu velkého objemu dat (typicky se jedná o tabulky BSEG, MSEG, atd.) z transakce SE16 (nebo SE16N) můžete snadno narazit na paměťové limity vašeho systému. Můj program to řeší načtením tabulky pomocí tzv. databázového kuzoru:

OPEN CURSOR WITH HOLD l_db_cursor FOR SELECT * FROM (p_table)
UP TO l_mrows ROWS
BYPASSING BUFFER. 

DB kurzor pracuje zjednodušeně řečeno tak, že ukáže na množinu dat v databázi, kterou chceme načíst, a tu potom vrací v blocích požadované velikosti (konkrétně v mém programu omezených na velikost 1 GB).

FETCH NEXT CURSOR l_db_cursor
INTO CORRESPONDING FIELDS OF TABLE <xtab>
PACKAGE SIZE l_package_size.

Užitečnou volbou může být export pouze vybraných polí (sloupců) tabulky. Toho dosáhnete tak, že si založíte pomocnou Z-strukturu v transakci SE11 (Data Dictionary) jako podmnožinu polí zdrojové databázové tabulky a její název zadáte na výběrové obrazovce programu.

Export velkých tabulek ze SAPu
Výběrová obrazovka (klikněte pro zobrazení v plné velikosti)

Zbývá ještě dodat, že program exportuje výstup ve formě CSV souboru (respektive souborů) až do velikosti 1 GB. Oddělovač sloupců však můžete jednoduše jednoduše zaměnit například za tabulátor:

* CONSTANTS: c_separator TYPE c VALUE ';'.
CONSTANTS: c_separator TYPE c VALUE cl_abap_char_utilities=>horizontal_tab.

Poznámka na závěr: Ve zdrojovém kódu je volán funkční modul Z_CONVERT_TO_TEXT, který slouží k transformaci interní tabulky s danou strukturou do tabulky s řádky typu CHAR. Jedná se o kopii standardního funkčního modulu SAP_CONVERT_TO_TEX_FORMAT, který je jen mírně upraven - přidává datové typy I a s, které původní funkce opomíjí:

CASE l_type.
  WHEN ...
  WHEN 'I' OR 's'.
    l_date_extern = <f_source>.
    ASSIGN l_date_extern TO <f_source>.
  WHEN OTHERS.
ENDCASE.


Související



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

Komentáře

Zatím žádné komentáře

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