ABAP 15. diel – Modularizácia programu

Keď rozdelíme zložitú úlohu do menších uzavretých komponent, čoskoro oceníte mieru prehľadnosti a jednoduchosť úpravy týchto komponentov.
V jazyku ABAP je tento prístup označený ako modularizácia.

Prehľad

Volanie blokov spracovania z prostredia behu programu. Systém SAP ponúka rôzne techniky modularity. V svojej podstate je základná modulárna štruktúra každého programu v jazyku ABAP vytváraná jednotlivými blokmi spracovania.

Moduly zdrojového kódu

Modularizace zdrojoveho kódu

Napríklad do modulu obsahujúceho ďalšie moduly môžete zabaliť spustiteľnú časť nejakého reportu. Samostatný modul nie je spustiteľným programom ale môžete ho opakovane využiť pri definíciách ďalších programov.

Procedury

Tiež obsahujú zdrojový kód ABAP ale behom generovania výsledného programu zostávajú nezávislými programami. Program jazyka ABAP ich volá za behu. Obsahujú napríklad lokálne definície dát. Po zachovaní cyklu je blok spracovania umiestnení do vlastného podprogramu.

Podprogramy

Väčšinou sú využívané pre internú modularizáciu programu. Typický príklad môže byť snaha o zaistenie príkazov v cykle. Pre zachovanie udržiteľosti cyklu je blok spracovaný do svojho vlastného podprogramu.

Funkčné moduly

Každý podprogram je napísaný tak aby bol volaní len z jedného určitého programu. Oproti tomu funkčné moduly sa používajú pre všeobecné úlohy. Napríklad si predstavte výstup z rôznych programov by mal generovať PDF súbor. Aby ste tento prevod mohli do programu jednoducho začleniť použijete úlohu ako funkčný modul.

Potom sa jednoducho zavolá funkčný modul a naplní sa potrebnými dátami. Štandartne systém SAP obsahuje veľa funkčných modulov, ktoré sa dajú použiť v zákazníckych programoch podľa potreby. Systém SAP tiež ponúka nástroj pre správu funkčných modulov. (Viac v tejto kapitole, časť Funkčné moduly.)

Procedúry a podprogramy

Na rozdiel od modulov majú procedúry rozhranie pre prenos dát medzi volajúcim programom a procedúrou. Procedúry majú tiež svoje vlastné definície ktoré poznajú iba oni. Keď chcete volať program ITAB01_FILL použite nasledujúci príkaz:

PERFORM itab01_fill.

Príkaz FORM definuje začiatok podprogramu a príkaz ENDFORM definuje koniec. Po príkaze ENDFORM pokračuje spracovaním príkazov za PERFORM. Príkazy ktoré majú byť vykonané podprogramom musia byť umiestnené medzi FORM a ENDFORM.

Globálne a lokálne premeny

Doposiaľ ste používali globálne premeny ich názov podprogramu je rovnaký ako hlavný program. Globálne premeny sú definované v hlavnom programe. Ako môžete neskôr odsledovať v nástojí ABAP Debugger, globálne premeny ú dostupné v všetkých štruktúrach daného programu. Opakom sú lokálne premeny, ktoré sú použiteľné len na tej úrovni kde sa definujú.

Existujú dva spôsoby zápisu lokálnej premeny – explicitne a implicitne.

Explicitne – na jeden alebo viacej riadkov zapíšete jeden alebo viacej príkazov DATA do procedúry FORM čím definujete požadované pole. Dátové objekty sú izolované. Ďaľšie spracovanie musí nasledovať až na túto definíciu:

FORM itab03_fill.

DATA lok_tmax TYPE i VALUE 10.

* Príkazový blok

ENDFORM.

Obidva príkazy PERFORM a FORM musia obsahovať rovnaký počet polí, ale názvy sa môžu odlišovať.

Prenos interných tabuliek

Do programu môžete tiež priradiť interné tabuľky – k príkazu PERFORM musíte pridať dodatok TABLES.

Tento príklad definuje interní tabuľku ITAB02 bez hlavičky. Pokiaľ ju chcete spracovať v uzavretom podprograme, použite nasledujúci príkaz:

PERFORM itab_fill TABLES itab02.

Príkaz FORM musí mať podobnú štruktúru:

FORM itab_fill TABLES itab_universal.

Externé podprogramy

Môžete prejsť do volaného podprogramu a zostať v ňom alebo sa vrátiť k vašemu reportu, akonáhle skončí program ktorý ste volali. Môžete tiež spustiť volaný program s výberovou obrazovkou. Vynecháte výberovú obrazovku, dopočujeme preniesť nastavenie alebo spustiť report s variantou.

V modernom zápise vyžaduje príkaz PERFORM dodatok IN PROGRAM. Príkaz vo vašom reporte bude vyzerať nasledovne:

* Moderný zápis

PERFORM itab04_list IN PROGRAM z_memberlist13_a

USING nyml lines_ita04.

Externé reporty

Pokiaľ chcete aby Váš program volal externý spustiteľný report, musíte si najprv ujasniť či má daný program po danom volaní pokračovať v práci alebo po zavolaní externého reportu skončí.

SUMBIT

Výberová obrazovka ponuka ďalšie možnosti dialógu, ale spomaľuje tok programu. Mali by ste zvážiť povinné nastavenia. Môžete spustiť report s variantou alebo preniesť hodnoty na výberovú obrazovku z vašeho programu. K spúšťaniu externého reportu používajte príkaz SUMBIT.

Funkčné moduly

Podobne ako podprogramy, funkčné moduly sú procedúry – ktoré sa od nich výrazne líšia v tom ako sú uložené a používané. Funkčné moduly sú vhodné pre obmedzené
dlhšie úlohy, ktoré sú opakované viacej krát v systéme SAP. Napríklad sťahovanie interných tabuliek do súborov. To je úloha ktorá by sa dala vykonať na všetkých počítačoch na oddelení a denne. Funkčné moduly pre najrôznejšie úlohy sú súčasťou systému SAP. Môžete vytvoriť aj vlastné funkčné moduly.

Nástroj Function Builder

Knižnica funkcií. Funkčné moduly sú spravované výhradne knižnicou funkcií a vyhradením nástrojom a to je Function Builder. Pre začiatok potrebujete vedieť nasledujúce – ako použiť tento nástroj na hľadanie funkčných modulov v vašom programe v jazyku ABAP.

K nástroju sa dostanete Menu SAP (SAP Menu) -> Nástoje (Tools) -> ABAP Workbench -> Vývoj (Development) -> Function Buidler, alebo pomocou tranzakcie SE57.

Hľadanie funkčných modulov -> Pomôcky (Utilities) -> Hľadanie (Find) zavoláte nástroj Repository (Obrázok 13.9).

Funkčné moduly pre spustenie programu

Najlepšie je hľadať vzory. Ako ukazuje obrázok (13.10) zadajte slovo “execute” do pola Funkční modul (Function module) ako agrument hľadania kliknite na tlačítko Vykonanie (Execute) (F8).

V skutočnosti nikto takto nespustí program tak naslepo. Veľká časť programátorov pracuje s určitými modulami a aplikáciami tj. majú bežné pakety, skupiny funkcií atď. Cieľom tohoto kurzu je zoznámiť Vás s programovaním v jazyku ABAP. Pre hlbšie znalosti použite odbornú literatúru, školenia.

Argument obyčajného hľadania je príliš všeobecný -> Pre skrátenie použite “*WS_EXEX*” a uvidíte podstatne prehľadnejšiu zostavu možných výsledkov.

Ďalšia vec ktorá by Vás mala zaujímať je hľadanie v anglickom jazyku, preto je dobré na začiatku zvoliť si jazyk EN (ani ten nemusí byť k zobrazeniu všetkých textov dostatočný). Na ostatné moduly si vyberte ten ktorý splní vaše požiadavky.

Karta Zdrojový kód (Source Code) zobrazuje zdrojový kód. Ostatné karty sú dôležitejšie -> Karta Vlastnosti (Attributes), karta Import – popisuje vstupné rozhrania na strane modulu. Karta Export – zobrazuje parametre ktoré funkčný modul sprístupňuje volajúcemu reportu jazyku ABAP.

Karta Changing – zobrazuje tie parametre ktoré slúžia súčasne ako vstupné aj výstupné medzi volajúcimi reportami jazyku ABAP. Keď je táto zložka prázdna, tak neexistuje pre tento typ parametru žiadna dátové rozhranie.

Funkčný modul pre sťahovanie internej tabuľky

Kvôli skráteniu počiatočnej fázy výberu vhodného funkčného modulu budeme ďalej predpokladať, že ste sa rozhodli použiť funkčný modul: GUI_DOWNLOAD.

Na karte import vidíte niekoľko parametrov (obrázok 13.23). Ďaľšie parametre zobrazíte kliknutím na na tlačítko zobraz. Popis funkčného modulu je na Dokumentácia funkčného modulu (Function module documentation).

Globálna pamäť systému SAP

Behom prihlásenia je dostupná užívateľom. Je možné do nej zapisovať obsah jednotlivých polí a čítať z nich. Maximálna dĺžka až 20 znakov.

Na zápis slúži príkaz SET PARAMETER ID a na čítanie príkaz GET PARAMETER ID.

Chcete napríklad zapísať obsah poľa PROGRAME do parametru Z_TEST:

SET PARAMETER ID ´Z_TEST´ FIELD programe.

a opačne:

GET PARAMETER ID ´Z_TEST´ FIELD programe.

Pamäť ABAP

Má najkratšiu životnosť, pretože trvá do ukončenie externej relácie s svojimi internými reláciami. Data do pamäti zapisujeme EXPORT FROM MEMORY, a načítame IMPORT FROM MEMORY.

zdroj: TS FMG.sk

Loading Facebook Comments ...