Az ABAP programozási nyelv

Grafikus képernyő

Képernyő típusok

Két fő képernyőfajtát használhatunk:

Amikor egy reportot készítünk, akkor rendszerint a Szelekciós képernyőt látjuk először. A report elején lévő programkódok lefutnak, és ennek az eredménye látható a képernyőn. Amikor valamilyen eseményt kiváltunk, akkor a megfelelő eseményhez definiált programkód hajtódik végre, és az jelenik meg a Szelekciós képernyőn. Ezen eseményekhez tartozó kódok is ebben a reportban vannak, a megfelelő esemény fejléc alatt. Ezek a blokkok vagy a fájl végéig tartanak, vagy egy újabb ilyen esemény fejlécig, vagy egy saját függvénydefinícióig (form, perform). A Screen Painter használata nélkül hozható létre képernyő. Rendszerint egy programhoz egy alap Szelekciós képernyő tartozik, de definiálható több is.

Egy Dynpro máshogy működik. Minden dynpro - egy képernyő - egy programhoz tartozik, például egy reporthoz. Ezenkívül egy szám is egyértelműen tartozik hozzá, ez 1 és 999 között adható meg - a 0 foglalt, az előző képernyőt jelenti, míg az 1000-es az alap Szelekciós képernyőt -. Ennek segítségével a reportunkból, átválthatunk egy dynpro-ra a call screen utasítás segítségével. Egy dynpro-t grafikusan létre kell hozni, a Screen Painterrel.

Screen Painter Képernyőkép

Képernyő események

Alapvetően négy fajta képernyő eseménnyel találkozhatunk:

Az első akkor hajtódik végre, mielőtt a képernyő megjelenítésre kerül, a második pedig akkor, amikor a képernyőről továbblépünk, a harmadik akkor, amikor egy beviteli mezőben állva F1 gombot nyomunk, míg a negyedik akkor amikor egy beviteli mezőn állva F4-et nyomunk. Az utóbbi kettő konkrét esemény, míg az első kettő eseménytípust jelent.

Szelekciós képernyő készítés

Ez egy speciális képernyőtípus, amit definiálni lehet futtatható programban, függvénycsoportokban, illetve modulokban. A globális deklarációs részben definiálható a következő utrasításokkal:

Ugyanazon névtérben van, mint a többi - a programunkhoz definiált - képernyő. Amikor egy ABAP program meghívásra kerül, a Szelekciós képernyőt, illetve a hozzátartozó vezérlési logikát és vezérlőket is automatikusan legenerálja.

Rendszerint két feladata lehet egy ilyen képernyőnek:
Nincs lehetőség dialogus ablak definiálására az ABAP programban, ezért különböző események adódnak a képernyő feldolgozása folyamán, és ezeket lehet lekezelni.

Standard Szelekciós képernyő elemei

Ezen elemek felhaszálásaval beleszólásunk van a képernyőn megjelenő információk megjelenésébe.

Egy szelekciós képernyő maximális szélessége 83 karakter. Ha ezt túllépjük, akkor a képernyő vagy le lesz vágva a 83. karakternél, vagy nem generálódik le. Kereten belüli tartalom esetén, a megjelenített hossz a kerethez igazodik.

Minden képernyő elem, ami a SELECTION-SCREEN utasítással lett létrehozva, ugyanazon névtérben van. Ez akkor is így van, ha különböző szelekciós képernyőkről van szó. Ezt is figyelembe kell venni az olyan elemek definiálásánál, amikhez globális objektum is generálódik. Ha egy elemet más szelekciós képernyőn is használni szeretnénk, akkor a SELECTION-SCREEN utasítás INCLUDE kiegészítését kell használni.

A MODIF és ldb_additions magyarázatától eltekintünk, ehhez szükséges a logikai adatbázisok használatának, illetve a speciális megjelenítések ismerete.

SELECTION-SCREEN SKIP [n] [ldb_additions].

Ez az utasítás n üres sort hoz létre. Az n értékét közvetlenül kell megadni, egyjegyű pozitív számként. Az n elhagyása esetén egy üres sor jön létre.

SELECTION-SCREEN ULINE [[/][pos](len)] [MODIF ID modid]
[ldb_additions].

Ez az utasítás vízszintes vonalat hoz létre, alapértelmezettként 83 pozíció hosszan. A (pos,len) megadása esetén a pos pozíciótól, len hosszan készít vonalat. Szükség lehet arra is, hogy egy sorban az aktuális pozíciótól rajzoljunk vonalat, ekkor a pos elhagyható.

SELECTION-SCREEN COMMENT [/][pos](len)
{text|{[text] FOR FIELD sel}}
[VISIBLE LENGTH vlen]
[MODIF ID modid]
[ldb_additions].

Ez az utasítás egy kimeneti mezőt hoz létre, a text-ben megadott szöveget írja ki. A (pos,len) jelentése megegyezik az ULINE-nál kifejtettekkel. A FOR FIELD sel megadása esetén, a sel paraméter, vagy szelekciós kritériumhoz fog tartozni ez a mező. Ez a mező is láthatatlanná válik, ha a sel elem láthatatlanra lett állítva. VISIBLE LENGTH vlen megadása esetén a mező megjelenítési hosszát adhatjuk meg. Ha vlen nagyobb mint len, akkor len hosszú lesz. Ha vlen kisebb mint len, akkor vlen hosszan jelenik meg a szöveg, de görgethető a tartalom, illetve egér fölévitelekor megjelenik a teljes szöveg.

SELECTION-SCREEN PUSHBUTTON [/][pos](len) button_text
USER-COMMAND fcode
[VISIBLE LENGTH vlen]
[MODIF ID modid]
[ ldb_additions].

Ez az utasítás egy nyomógombot hoz létre, a button_text-ben megadott szöveggel. A (pos,len) jelentése megegyezik az ULINE-nál kifejtettekkel. USER-COMMAND fcode itt lehet megadni a funkció kódot a nyomógombhoz (maximum 20 karakter lehet). VISIBLE LENGTH vlen mint a korábbi vezérlőknél.

A gomb használata előtt deklarálni kell táblaként a SSCRFIELDS struktúrát az ABAP szótárból. Amikor a gomb megnyomásra kerül, a futtató környezet kiváltja az AT SELECTION-SCREEN eseményt, és a gomb funkciókódja átadásra kerül a programnak, megfelelő ucomm komponensként az SSCRFIELDS segítségével.

SELECTION-SCREEN BEGIN OF LINE.
...
[SELECTION-SCREEN POSITION pos [ldb_additions]].
...
SELECTION-SCREEN END OF LINE.

Ez az utasítássorozat, a sorok közvetlen kialakításában segít. Egy ilyen blokkban megadott elemek, helykihagyás nélkül, egymás után kerülnek megjelenítésre. Több SELECTION-SCREEN POSITION ... utasítás következhet egymás után. A pos értéke 1 és 83 között lehet.

A következő szabályok vonatkoznak a blokkban előforduló elemekre:
SELECTION-SCREEN BEGIN OF BLOCK block
[WITH FRAME [TITLE title]]
[NO INTERVALS].
...
SELECTION-SCREEN END OF BLOCK block.

Ez az utasítássorozat, vezérlőkből készített blokkok, csoportok létrehozására használható, block névvel. Minden képernyő elem, amit a PARAMETERS, SELECT-OPTIONS és SELECTION-SCREEN definiál ezen blokkban, részét képezik a blokknak.
... WITH FRAME [TITLE title] egy keretet rajzol a blokk köré, title pedig a blokk neveként fog megjelenni.
... NO INTERVALS megadása esetén, a blokk szélessége akkorára állítódik, amennyi a benne lévő kitöltött vezérlők méretének szükséges.

SELECTION-SCREEN FUNCTION KEY n [ldb_additions].

Ezzel az utasítással lehetőségünk van funkciógombok definiálására az alkalmazás eszközpanelján. Ebből összesen 5 lehet, melyek neve FC01-től FC05-ig terjed. Ezekhez a gombokhoz a megfelelő FC01..FC05 funkció kódok tartoznak. Az SSCRFIELDS adatszótár elem definiálására szükség van a használatához.

A gomb szövege változtatható, mégpedig a következőképpen: ha az FC02-nek a feliratát akarjuk megadni, akkor az SSCRFIELDS struktúra functxt_2n mezőjének kell értékül adnunk a kívánt szöveget. Ezen gombok megnyomásakor végrahajtódik az AT SELECTION-SCREEN esemény, a megfelelő FC0n funkciókód átadásra kerül.

Szelekciós képernyő eseményei

AT SELECTION-SCREEN
{ OUTPUT }
| { ON {para|selcrit} }
| { ON END OF selcrit }
| { ON BLOCK block }
| { ON RADIOBUTTON GROUP radi }
| { }
| { ON {HELP-REQUEST|VALUE-REQUEST}
| FOR {para|selcrit-low|selcrit-high} }
| { ON EXIT-COMMAND }.

Ezek jelentése a következő:

... OUTPUT

Ez a Szelekciós képernyő PBO (Process Before Output) - a képernyőre kerülés előtt fut le - eseménye. Ekkor lehetőség van dinamikus képernyő módosításokra, illetve a paraméterek és szelekciós kritériumok elkészítésére a képernyőhöz. Ez minden egyes aktiválásnál lefut, ezért a szelekciós képernyőn az egyes megjelenő mezők változtatása esetén, ez felülírja az esetleges felhasználó által, az előző aktiváláskor felvitt értékeket. LOAD-OF-PROGRAM, INITIALIZATION szekciók használhatóak azokra az esetekre, amikor csak a program elején akarunk értékeket beállítani (default értékek).

... ON {para|selcrit}

Ez egy PAI (Process After Input) - adatbevitel után - eseménye a képernyőnek. Akkor hajtódik végre, amikor a megadott parameter, vagy szelekciós kritérium került aktiválásra. Ekkor lehet a felhasználó által az adott vezérlőben lévő tartalmat ellenőrizni, és esetlegesen valamilyen üzenetet küldeni a felhasználónak. Amennyiben ilyen üzenet (warning, error) küldésre kerül, ismét megjelenik a képernyő, és a fókusz az adott vezérlőre kerül. A parameter nem lehet Radiobutton.

... ON END OF selcrit

Ez egy PAI (Process After Input) - adatbevitel után - eseménye a képernyőnek. Akkor hajtódik végre, amikor a megadott szelekciós kritérium került aktiválásra, úgy hogy teljesen ki lett töltve. Ekkor a teljes szelekciós táblában lévő tartalmat ellenőrizni lehet.

... ON BLOCK block

Ez egy PAI (Process After Input) - adatbevitel után - eseménye a képernyőnek. Akkor hajtódik végre, amikor a megadott blokk minden beviteli mezője került átadásra a programnak. Ekkor a teljes blokkban lévő tartalmat ellenőrizni lehet. Üzenetküldés esetén, ismét módosíthatóak lesznek az beviteli mezők.

... ON RADIOBUTTON GROUP radi

Ez egy PAI (Process After Input) - adatbevitel után - eseménye a képernyőnek. Akkor hajtódik végre, amikor a megadott Radiobutton csoport került átadásra a programnak. Üzenetküldés esetén, ismét módosíthatóak lesznek az gombok állapotai.

... { }

Ez egy PAI (Process After Input) - adatbevitel után - eseménye a képernyőnek. Ez a blokk hajtódik végre utoljára a Szelekciós képernyő feldolgozása során. Itt minden felhasználói adatbevitel ellenőrizhatő, gyakran csak ennek az eseménynek a kezelésére van szükség. Üzenetküldés (warning, error) esetén, ismét módosítható lesz az összes beviteli mező a képernyőn.

... { ON { HELP-REQUEST | VALUE-REQUEST } FOR
{para|selcrit-low|selcrit-high} }

Az ON HELP-REQUEST és az ON VALUE-REQUEST események akkor váltódnak ki (POH és POV), amikor a szelekciós képernyő mezőjében - az a mező, ami vagy a para paraméter mezője, vagy a selcrit szelekciós kritériumának egyik mezője - F1 vagy F4 gombnyomás történik. Ekkor más események nem váltódnak ki.

Ekkor ezekben az esemény blokkokban, általunk definiált bevitelimező hozható létre, ami felülírja a rendszer alapértelmezett viselkedését.

Ezek a blokkok csak az ugyanazon programban definiált vezérlőkre implementálhatóak.

Ekkor nincs adatmozgás a képernyő és az Abap program között. A változtatások, amik a paramétert vagy a szelekciós kritériumot érintik, azok módosításra kerülnek a képernyőn is.

... ON EXIT-COMMAND

Ez a blokk akkor hajtódik végre, ha a Szelekciós képernyőn a Cancel, Back, Exit vezérlőgombok valamelyike kerül megnyomásra. Ekkor a vezérlők, változók takarítására kerülhet a sor.