ABAP 14. diel – Interné tabuľky

Tabuľky v databáze? Žiaden problém. Tabuľky v pamäti? Nikdy ste o nich nepočuli? V systéme SAP máte obe tieto možnosti.
V tejto kapitole sa zoznámime s tabuľkami v pamäti. ABAP Dictionary predstavuje jeden z dvoch nástrojov na definovanie štruktúry.

Dočasné tabuľky – sú definované pri spustení programu, zanikajú po ukončení programu. Dočasné výsledky sa neukladajú.

Flexibilita – interné tabuľky môžu obsahovať ľubovoľný počet definovaních štruktúr. Celú internú tabuľku ide rovnako bez problémov zoradiť bez určitého kritéria.

Oddelenie tela tabuľky a pracovnej oblasti – pri zápise dátových záznamov musíte najprv upraviť záznam v hlavičke alebo v prac. oblasti a potom ho preniesť do tela tabuľky.

Viacdimenzionálne tabuľky sú možné – Oddelenie tela tabuľky od pracovnej oblasti otvára nové možnosti. Napríklad vytvárať interné tabuľky, kde ich interným typom je interná tabuľka. Spracovanie viacdimenzionálnych tabuliek je samostatná téma. Nebudeme sa tým zaoberať.

Štruktúra a typy interných tabuliek

Prístupový kľúč
Používa sa k identifikácií riadku.

Unikátny kľúč
Ako u iných jazykoch, napr. PHP – len jeden záznam v tabuľke, napríklad názov pola, hodnoty – nevyskytuje sa potom duplicita v dátach. Opak potom hovorí že v databáze môže byť viacej riadkov s tým istým kľúčom.

Štandardné tabuľky

K štandardným tabuľkám je možné pristupovať kľúčom alebo indexom. Keď pristupujete s kľúčom tak podľa počtu riadkov bude dlhá aj odozva. Preto je vhodné pristupovať k tabuľke pomocou indexu. Ktorý je uložený lineárne, doba prístupu rastie logaritmicky.

Triedené tabuľky
Uložené tabuľky podľa určitého kľúča. Kľúč môže byť unikátny.

Indexované tabuľky
Pretože triedené tabuľky aj štandardné tabuľky majú interní index, bývajú označené ako Indexované tabuľky.

Vytváranie štandartných interných tabuliek

Chceme vytvoriť tabuľku ITAB01, ktorá má obsahovať pole pre názov kurzu a jeho cenu, môžeme to nedefinovať takto:

DATA: BEGIN OF itab01 OCCURS 0.
zzcoursetitle LIKE zmember03-zzcoursetitle.
mfee LIKE zmember03-zzcoursetitle.
END OF itab01.

Príkazom DATA: BEGIN OF itab01 definujete začiatok štruktúry, tj. začiatok internej tabuľky. Dvojbodka za DATA zahajuje zreteľný príkaz. Dodatok BEGIN OF označuje začiatok internej tabuľky ITAB01. Definícia internej tabuľky ITAB01 končí dodatkom END OF.

Plnenie štandartných interných tabuliek

Najskôr budeme plniť tabuľku s hlavičkou. Plnenie internej tabuľky po jednom zázname.

DATA: BEGIN OF itab03 OCCURS 0.
course_title LIKE zmember03-zzcoursetitle.
fee LIKE zmember03-mfee.
max_person TYPE i VALUE 10.
END OF itab03.

Spracovanie interných tabuliek riadok po riadku

K spracovaniu všetkých tabuliek môžete použiť príkazy LOOP a ENDLOOP. Tie dva príkazy definujú štruktúru ako SELECT a ENDSELECT. Je nutné zdôrazniť že pre interné tabuľky musíte použiť iné príkazy ako pre databázové tabuľky.

LOOP AT itab01.
* Spracovanie riadku hlavičky
ENDLOOP.

Príkazový blok môže obsahovať jednoduchý výstup:

WRITE: / itab01-course_title. itab01-fee.
itab01-max_persons.

Vymazanie obsahu interných tabuliek

CLEAR itab01 – obsah pola bude vymazaný a následne pole získa defautné hodnoty.

Príkaz REFRESH vymaže telo tabuľky. Staré záznamy už neexistujú, ale tento príkaz nemá vplyv na hlavičku internej tabuľky.

FREE – alternatíva k príkazu REFRESH.

Nabudúce: Modularizácia programu

zdroj: TS FMG.sk

Loading Facebook Comments ...