Jak jsem začínal se SAPem - 3. část
V minulém díle jsem rozebral práci s interními tabulkami v ABAPu a dnes se pustím pro změnu do reportů.
Reporty
Report je ten nejjednodušší program (samozřejmě může být i složitý), který můžete v ABAPu napsat. Obecně lze říci, že report nemá za cíl nic jiného, než vzít data (například je načíst z databáze) a zobrazit je v nějakém srozumitelném formátu. Ukažme si tedy, jak takový naprosto triviální report může vypadat:
REPORT my_first_report. **************************************** * GLOBAL DECLARATIONS * **************************************** DATA: g_hello TYPE char15 VALUE 'Hello World!'. **************************************** * START OF SELECTION * **************************************** START-OF-SELECTION. WRITE g_hello.
Zde si můžete prohlédnout výstup našeho report programu (který odhaluje skandální skutečnost, že celý SAP vlastně funguje v textovém režimu
):

Jak můžete vidět, k obligátnímu „Hello word!“ programu jsem se dopracoval až ve třetím díle tohoto seriálu. Je to dáno mým netradičním a novátorským přístupem k výkladu (rozuměj: stále nemám žádnou ucelenou koncepci
).
Co můžeme z našeho programu vyčíst? Za prvé, symbol komentáře je hvězdička *, která musí být vždy umístěna jako první symbol na řádku. Pokud chceme něco zakomentovat uprostřed řádku, je potřeba použít symbol uvozovek “. Uzavřené komentáře pro zakomentování více řádků (něco jako /* … */) v ABAPu neexistují. Zpočátku se to může zdát omezující, ale dá se bez toho celkem v pohodě žít.
Za druhé, proměnné se deklarují příkazem DATA. Dvojtečka překladači sděluje, že budou následovat další deklarace oddělené čárkou (v tomto případě je tedy zbytečná). To je také zajímavá vlastnost ABAPu, která stojí za zmínku. Říká se ji řetězení příkazů, které je možné realizovat pomocí dvojtečky uvedené za stejnou částí příkazu:
WRITE g_var_a. WRITE g_var_b. WRITE g_var_c. *-> je možné nahradit: WRITE: g_var_a, g_var_b, g_var_c. g_sum = g_sum + 1. g_sum = g_sum + 2. g_sum = g_sum + 3. *-> je možné nahradit: g_sum = g_sum +: 1, 2, 3.
A konečně za třetí, ABAP program se skládá z tzv. bloků zpracování (v ABAP helpu bývají též honosně označované jako události). V našem programu máme pouze jediný blok zpracování, a sice START-OF-SELECTION, ale je jich hned celá řada, k tomu se brzy dostaneme. START-OF-SELECTION by měl být blok zpracování, ve kterém je umístěn hlavní program, tedy obvykle volání dalších podprogramů, metod objektů a funkčních modulů (co jsou FM vysvětlím někdy příště). Říkám měl by, protože stejného efektu dosáhnete i když zvolíte blok zpracování END-OF-SELECTION nebo jej vypustíte úplně. Bloky zpracování podle mě v ABAPu zůstaly pouze z historických důvodů, časem některé (zdůrazňuji některé) z nich ztratily na významu. Já osobně START-OF-SELECTION používám pouze kvůli lepší čitelnosti kódu.
Výběrové obrazovky
Jaké máme další události (bloky zpracování)? Předtím, než Vám to povím, přeskočím na chvíli k výběrovým obrazovkám (SELECTION-SCREEN), protože se jich přímo týká hned několik událostí.
Nyní přepíšeme náš program tak, aby měl svojí výběrovou obrazovku:
REPORT zmy_first_report. **************************************** * SELECTION SCREEN * **************************************** SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME. PARAMETERS: p_hello TYPE char15 DEFAULT 'Hello World!' LOWER CASE. SELECTION-SCREEN: END OF BLOCK b1. **************************************** * START OF SELECTION * **************************************** START-OF-SELECTION. WRITE p_hello.
A takhle bude vypadat program po spuštění:

Vidíte, jak málo stačilo, aby se uživatelské rozhraní programu změnilo k nepoznání. Kliknete-li na tlačítko s hodinami na nástrojové liště (snadno ho poznáte, je tam pouze jediné), zobrazí se náš první report program, který už známe z předchozího kroku.
Textové pole samozřejmě není jediný ovládací prvek, které výběrové obrazovky nabízí. Máme tu vše, co běžný uživatel potřebuje - od radio buttonů a checkboxů, až po obrazovky složené ze záložek. To vše lze získat zápisem několika málo řádků kódu.
Tak vidím, že k těm dalším událostem se nakonec nedostanu, necháme si je ale na příště a já utíkám na oběd.







[1] mutas
EJOY ABAP:=)